Matlab将矩阵合并到单元
在Matlab中,我得到了三个矩阵(由向量组成)Matlab将矩阵合并到单元,matlab,matrix,cell-array,Matlab,Matrix,Cell Array,在Matlab中,我得到了三个矩阵(由向量组成)x,y,z,每个矩阵的大小3xn 我想将它们合并到一个包含n条目的单元格中,每个条目都是3x3矩阵: for i=1:n C{i} = [x(:,i), y(:,i), z(:,i)]; end 有没有比使用for循环更快的方法,因为这需要很多时间 我已经找到了像mat2cell和cellfun这样的函数,但它们都不是我真正需要的,不是吗?您可以预先分配内存以提高性能: C = cell(n, 1); 您可以预先分配内存以提高性能: C
x,y,z
,每个矩阵的大小3xn
我想将它们合并到一个包含n
条目的单元格中,每个条目都是3x3
矩阵:
for i=1:n
C{i} = [x(:,i), y(:,i), z(:,i)];
end
有没有比使用for循环更快的方法,因为这需要很多时间
我已经找到了像
mat2cell
和cellfun
这样的函数,但它们都不是我真正需要的,不是吗?您可以预先分配内存以提高性能:
C = cell(n, 1);
您可以预先分配内存以提高性能:
C = cell(n, 1);
除非您调用的代码需要它,否则请改用3D数组。它的开销要小得多
C = zeros(3, 3, n);
for ii = 1:n
C(:, :, ii) = [x(:,ii) y(:,ii) z(:,ii)];
end
在此表单中,您可以使用重塑
,将其矢量化:
C = reshape([x; y; z], [3 3 n]);
除非您调用的代码需要它,否则请改用3D数组。它的开销要小得多
C = zeros(3, 3, n);
for ii = 1:n
C(:, :, ii) = [x(:,ii) y(:,ii) z(:,ii)];
end
在此表单中,您可以使用重塑
,将其矢量化:
C = reshape([x; y; z], [3 3 n]);
试试这个:
t = reshape([x; y; z], [3 3*n]); %//reshape your vectors into a matrix that could be use nicely with mat2cell
C = mat2cell(t, 3, 3*ones(1,n));
试试这个:
t = reshape([x; y; z], [3 3*n]); %//reshape your vectors into a matrix that could be use nicely with mat2cell
C = mat2cell(t, 3, 3*ones(1,n));
谢谢你,彼得,你的代码工作得非常好。当我要求把它储存在牢房里时,我接受了林肯的回答。对于其他不需要将其存储在单元格中并且可以使用3d阵列的人来说,这同样有效!谢谢你,彼得,你的代码工作得非常好。当我要求把它储存在牢房里时,我接受了林肯的回答。对于其他不需要将其存储在单元格中并且可以使用3d阵列的人来说,这同样有效!