2013-07-10 172 views
-1

我必须将数字列表(例如4 1 3 2)转换为相同数字的列表,但每个数字有多个副本(并且它们必须按特定顺序)(例如4 4 4 4 1 1 1 1 3 3 3 3 2 2 2 2)通过循环在matlab中创建多个矩阵

现在我的计划是制作一个4x1的矩阵(如a = [4 4 4 4]),但我无法为列表中的每个数字进行此运行。我做了一个函数,取值(4),并通过循环在4x1中生成一个包含4个副本的矩阵。

我可以做一个循环,为列表中的每个数字运行此副本?

aftewrads我想我可以使用vertcat将所有矩阵合并到我正在寻找的列表中。

的感谢!

+0

[MATLAB的可能重复:复制每个向量的元素?](http://stackoverflow.com/questions/17509090/matlab-duplicate-each-element-of-av ector) – bla

+0

and ... http://stackoverflow.com/questions/14576007/how-to-double-the-size-of-a-matrix-and-propagate-its-elements-in-matlab/14576141#14576141 – bla

+0

和... http://stackoverflow.com/questions/17522568/matlab-copying-the-rows-n-times-in-order/17522639#comment25479393_17522639 – bla

回答

1

无论如何都不需要循环。

随着在val = [4 1 3 2]repmat()reshape()每个条目恒定长度

len = 4; 
reshape(repmat(val,len,1),1,[]) 

可变长度,解码与FEX:rude()

len = [1 2 3 4]; 
rude(len,val) 
+0

+1真的不需要任何循环 – Schorsch