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
等。我不想每次有不同数量的向量时复制代码,所以我想自动化此
答案 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最适合矩阵。