Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab将矩阵合并到单元_Matlab_Matrix_Cell Array - Fatal编程技术网

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

在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 = 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阵列的人来说,这同样有效!