これは私の質問の続き です既存のマトリックスからマトリックスを抽出する
今、これらのマトリックスをコードで分離しています(正しくありません!)
for i = 3:-1:0
mat = m((sum((m == 0), 2)==i),:)
end
上記の部分は、元の質問の更新
です。それに応じて名前を付けたいと思います。
mat1
mat2
mat3
mat4
誰でも簡単な方法を提案できますか?
これは私の質問の続き です既存のマトリックスからマトリックスを抽出する
今、これらのマトリックスをコードで分離しています(正しくありません!)
for i = 3:-1:0
mat = m((sum((m == 0), 2)==i),:)
end
上記の部分は、元の質問の更新
です。それに応じて名前を付けたいと思います。
mat1
mat2
mat3
mat4
誰でも簡単な方法を提案できますか?
@Jonas と @Clement-J. の提案に従って、 toy がcell
s とstruct
sを使用する方法を次に示します。
N = 10; % number of matrices
cell_mat = cell(1, N); % pre allocate (good practice)
for ii = 1 : 10
cell_mat{ii} = rand( ii ); % generate some matrix for "mat"
struct_mat.( sprintf( 'mat%d', ii ) ) = rand( ii );
end
構造体 (可変フィールド名を持つ) の良い点は、それができるsave
ことです。
save( 'myMatFile.mat', 'struct_mat', '-struct');
-filemat1
にmat10
は変数が含まれます。mat
涼しい!
いくつかの優れたコーディング プラクティス:
Matlab で行列と配列を事前に割り当てます。ループ内で可変サイズを変更すると、Matlab の速度が大幅に低下します。
i
andはMatlabj
で使用されるため、ループ変数として (または変数として)使用しないでください。sqrt(-1)
なぜ変数名を持つ変数を持っているのですか? これを行うには、非常に正当な理由が必要です。あなたが達成しようとしていることを説明してください.
eval
andsprintf
関数を使用してこれを行う方法は次のとおりです。それらの詳細については、両方のドキュメントを参照してください。
for count = 1:10
eval(sprintf('mat%d = zeros(count);',count));
end