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
等。我不想每次有不同数量的向量时都复制代码,所以我想自动化此操作。
在执行此操作之前,您不希望将每一行手动复制到单独的变量中。使用您想要的
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 最适合矩阵。
另一种方法是将它们转置为列向量,然后再转置回来:
A=[a1',a2',a3']'