3

A = [1 2 3; 4 5 6; 789]に変換したいとしますB=[{[1,2,3]}; {[4,5,6]}; {[7,8 、9]}]どうすれば簡単にそれを行うことができますか?

4

2 に答える 2

7

機能を使用できmat2cellます。

ドキュメントから:

C = mat2cell(A,dim1Dist,...,dimNDist) は、配列 A を cell 配列 C 内の小さな配列に分割します。ベクトル dim1Dist,...dimNDist は、A の行、列、および (該当する場合) 高次元を分割する方法を指定します。 .

mat2cell

次のように実行できます。

A = [1 2 3; 4 5 6; 7 8 9];
B = mat2cell(A, [1 1 1], 3);

あなたに与える:

B={[1 2 3];[4 5 6];[7 8 9]}

ドキュメントにも次のように記載されています。

C = mat2cell(A,rowDist) は、配列 A を n 行 1 列の cell 配列 C に分割します。ここで、n == numel(rowDist) です。

したがって、マトリックスを常に行に分割し、列には分割しない場合は、2 番目のパラメーターなしで実行できます。

B = mat2cell(A, [1 1 1]);

より良い一般化された方法は次のとおりです。

mat2cell(A, ones(1, size(A, 1)), size(A, 2));
于 2013-02-01T13:22:30.383 に答える
1

B の表記が暗示するような「セルのマトリックス」を持つことはできません。セル配列を使用すると、個々のセルに「任意のデータ型」を格納できます。セルをデータ型として配列に格納することはできません。

だから、あなたが望んでいたと言うつもりだったとしましょうB = {[1,2,3], [4,5,6], [7,8,9]};

もしそうなら、

B = cell(1,3);
for ii=1:3
  B(ii) = {A(ii, :)};
end

トリックを行う必要があります。

注 - Hadi のコメントに基づいて編集。

于 2013-02-01T13:16:18.877 に答える