2016-05-23 31 views
0
A= [1 2 3 4 
    2 3 4 5 
    4 5 6 7 
    . 
    ....] 

其中每一行被存储在单独的载体作为这样如何使用循环将多个行向量组合成单行向量?

a1 = [1 2 3 4] 
a2 = [2 3 4 5] 
. 
. 
. 
an = [1 2 3 4] 

和我需要创建新的细胞,使用一个循环,包含所有先前的行向量如下:

vectors = {a1, a2, a3, ......,an} 

在工作空间中,我将vectors作为1 x n单元,并在每个包含其自身矢量的单元格中;例如第一个单元格包含矢量a1,第二个单元格包含矢量a2等。我不想在每次有不同数量的矢量时复制代码,所以我想自动执行此操作。

enter image description here

+5

你从哪里得到'an'矢量来自哪里?你在代码中生成它们吗?改变产生它们的代码比在事实之后聚合它们更有意义。 – Dan

+0

欢迎来到矩阵 – GameOfThrows

+1

有人在第一时间编辑我的问题,因为现在问题是无用的,因为连接矩阵相当简单。我需要,因为我可以首先创建一个矢量阵列,每个矢量在他自己的单元格中,因为我可以手动执行它。 – Emanuel

回答

3

你要不要用手副本在此之前的每一行成一个独立的变量。您想要使用的for循环的正确方法是这样

A = rand(15,39); 
vectors = cell(1,size(A,1)); % initialise output 

for ii = 1:size(A,1) % loop over all rows 
    vectors{1,ii} = A(ii,:); % store each row in the cell 
end 

要做到这一点没有环(感谢@beaker

B = mat2cell(A, ones(1,size(A,1)), size(A,2)).'; 

虽然矩阵(所以你原来A)将是最佳的整体,因为MATLAB在矩阵中工作得最好。