有趣的matlab

ron*_*oni 5 arrays optimization matlab

我想生成一个这样的数组:

a = [1 1 2 2 3 3 4 4 5 5 6 6 ....]
%% or something like this 
a = [1 1 1 .. ktimes 2 2 2 ... ktimes .....]
Run Code Online (Sandbox Code Playgroud)

这可以通过MATLAB中的单行代码完成吗?我相信有几个答案.请不要循环.

Div*_*kar 8

随着reshaperepmat

reshape(repmat([1:6],k,1),1,[])
Run Code Online (Sandbox Code Playgroud)

随着bsxfun-

reshape(bsxfun(@plus,[1:6],zeros(k,1)),1,[])
Run Code Online (Sandbox Code Playgroud)

在大众的需求floor-

floor(1:1/k:6+(k-1)/k)
Run Code Online (Sandbox Code Playgroud)

  • @ Benoit_11哈哈是的,那么随着使用`round/floor/ceil`的需求变得有点挑战了:) (2认同)

Lui*_*ndo 8

n = 6;k = 2;.以下是一些替代方案:

kron(1:n,ones(1,k))
Run Code Online (Sandbox Code Playgroud)

要么

ceil(1/k:1/k:n)
Run Code Online (Sandbox Code Playgroud)

要么

double(uint64(1:n*k)/k)
Run Code Online (Sandbox Code Playgroud)

  • @roni你认真吗?前两个只是输入数据!见编辑 (3认同)
  • 哈哈,它有点搞笑 - 你使用`ceil`,所以我留下了`floor` :) (3认同)
  • 我会直接使用reshape/repmat方式,但`ceil`方法绝对是一个很好的技巧.(``double(uint(...))`方法在伪装中大致相同,你让类型转换处理scene_后面的`ceil`操作 (2认同)
  • @Hoki我同意这两件事.`repmat`是要走的路 (2认同)
  • @Divakar是的:-)我喜欢你的"热门需求",非常有趣的表达方式! (2认同)