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

问题描述 投票:0回答:2
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

matlab matrix cell-array
2个回答
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 最适合矩阵。


0
投票

另一种方法是将它们转置为列向量,然后再转置回来:

A=[a1',a2',a3']'
© www.soinside.com 2019 - 2024. All rights reserved.