在 MATLAB 中从一维数组生成二维数组
有谁知道是否有一种方法可以从 1D 数组生成 2D 数组,其中 2D 中的行是通过重复 1D 数组中的相应元素生成的。
IE:
1D array 2D array
|1| |1 1 1 1 1|
|2| |2 2 2 2 2|
|3| -> |3 3 3 3 3|
|4| |4 4 4 4 4|
|5| |5 5 5 5 5|
Does anyone know if there is a way to produce a 2D array from a 1D array, where the rows in the 2D are generated by repeating the corresponding elements in the 1D array.
I.e.:
1D array 2D array
|1| |1 1 1 1 1|
|2| |2 2 2 2 2|
|3| -> |3 3 3 3 3|
|4| |4 4 4 4 4|
|5| |5 5 5 5 5|
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
本着奖励答案的精神,以下是我自己的一些答案:
让
A = (1:5)'
使用索引[比repmat更快]:
<前><代码>B = A(:, 个(5,1))
使用矩阵外积:
<前><代码>B = A*ones(1,5)
使用 bsxfun() [不是最好的方法]
<前> <代码>B = bsxfun(@plus,A,零(1,5))
%# 或者
B = bsxfun(@times, A, 个(1,5))
In the spirit of bonus answers, here are some of my own:
Let
A = (1:5)'
Using indices [faster than repmat]:
Using matrix outer product:
Using bsxfun() [not the best way of doing it]
您可以使用 REPMAT 函数来执行此操作:
<强>编辑:额外答案! ;)
例如,REPMAT 是最直接使用的函数。然而,另一个需要注意的很酷的功能是 KRON,您也可以通过以下方式将其用作解决方案:
对于小向量和矩阵 KRON 可能稍快,但对于较大的矩阵来说,速度要慢一些。
You can do this using the REPMAT function:
EDIT: BONUS ANSWER! ;)
For your example, REPMAT is the most straight-forward function to use. However, another cool function to be aware of is KRON, which you could also use as a solution in the following way:
For small vectors and matrices KRON may be slightly faster, but it is quite a bit slower for larger matrices.
repmat(a, [1 n]),但您还应该看看 meshgrid。
repmat(a, [1 n]), but you should also take a look at meshgrid.
您可以尝试类似的操作:
循环只是不断将列追加到末尾。
You could try something like:
The loop just keeps appending columns to the end.