如何使用循环将多个行向量组合成单个行向量?

时间:2016-05-23 14:04:00

标签: matlab matrix cell-array

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

1 个答案:

答案 0 :(得分: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最适合矩阵。