将 nxm 矩阵转换为 1xm 元胞数组
Converting nxm matrix into a 1xm cell array
如何将 2xn 矩阵转换为 1xn 元胞数组,向上串联值,使元胞数组包含原始矩阵的列向量?
我想比遍历每一列的简单 for 循环更有效地执行此操作(因为这是 matlab 并且循环效率低下)
假设我有一个 2x2 矩阵 [1,2;3,4]。我希望将其转换为元胞数组 {[1,3],[2,4]}。我查阅了有关 mat2cell 的信息,但看不到如何在向上串联时保持元胞数组的长度。
提前致谢。
您可以利用 mat2cell 的附加参数来根据需要格式化输出。
对于您的情况,请指定每个单元格连续包含 2 个元素:
A = [1 2;3 4];
B = mat2cell(A.',[1 1]).';
celldisp(B)
B
现在是 1x2
单元格:
B{1} =
1 3
B{2} =
2 4
有点密集,但我认为这符合您的要求。
A=[1 2;3 4];
permute(mat2cell(reshape(permute(A,[2 1]),[numel(A) 1]),size(A,1)*ones(size(A,2),1),[1] ),[2 1])
如何将 2xn 矩阵转换为 1xn 元胞数组,向上串联值,使元胞数组包含原始矩阵的列向量? 我想比遍历每一列的简单 for 循环更有效地执行此操作(因为这是 matlab 并且循环效率低下)
假设我有一个 2x2 矩阵 [1,2;3,4]。我希望将其转换为元胞数组 {[1,3],[2,4]}。我查阅了有关 mat2cell 的信息,但看不到如何在向上串联时保持元胞数组的长度。
提前致谢。
您可以利用 mat2cell 的附加参数来根据需要格式化输出。
对于您的情况,请指定每个单元格连续包含 2 个元素:
A = [1 2;3 4];
B = mat2cell(A.',[1 1]).';
celldisp(B)
B
现在是 1x2
单元格:
B{1} =
1 3
B{2} =
2 4
有点密集,但我认为这符合您的要求。
A=[1 2;3 4];
permute(mat2cell(reshape(permute(A,[2 1]),[numel(A) 1]),size(A,1)*ones(size(A,2),1),[1] ),[2 1])