如何在Matlab中将矩阵的每一行插入单元格?

Had*_*adi 3 matlab cell

假设A = [1 2 3; 4 5 6; 7 8 9]我想将其转换为B = [{[1,2,3]}; {[4,5,6]}; {[7,8] ,9]}]我怎么能这么简单地做到这一点?

Heb*_*odo 7

你可以使用mat2cell功能.

从文档:

C = mat2cell(A,dim1Dist,...,dimNDist)将数组A划分为单元格数组C中的较小数组.向量dim1Dist,... dimNDist指定如何划分行,列和(如果适用)更高维度的A .

mat2cell

你可以这样做:

A = [1 2 3; 4 5 6; 7 8 9];
B = mat2cell(A, [1 1 1], 3);
Run Code Online (Sandbox Code Playgroud)

会给你:

B={[1 2 3];[4 5 6];[7 8 9]}
Run Code Online (Sandbox Code Playgroud)

文档还说:

C = mat2cell(A,rowDist)将数组A划分为n×1单元阵列C,其中n == numel(rowDist).

因此,如果您总是要将矩阵拆分为行而不是列,则可以在没有第二个参数的情况下执行此操作.

B = mat2cell(A, [1 1 1]);
Run Code Online (Sandbox Code Playgroud)

更好的,通用的方式是:

mat2cell(A, ones(1, size(A, 1)), size(A, 2));
Run Code Online (Sandbox Code Playgroud)