A = [1 2 3; 4 5 6; 789]に変換したいとしますB=[{[1,2,3]}; {[4,5,6]}; {[7,8 、9]}]どうすれば簡単にそれを行うことができますか?
2 に答える
機能を使用できmat2cell
ます。
ドキュメントから:
C = mat2cell(A,dim1Dist,...,dimNDist) は、配列 A を cell 配列 C 内の小さな配列に分割します。ベクトル dim1Dist,...dimNDist は、A の行、列、および (該当する場合) 高次元を分割する方法を指定します。 .
次のように実行できます。
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));
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 のコメントに基づいて編集。