条件に該当する行列をどんどん連結していきたい
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
演算処理で条件を満たす行列 ch0(:,23)を ch(:,23)にどんどん垂直方向に連結したいため ch(:,:) = vertcat(ch(:,:),ch0(:,:)) のようなイメージで、1つの行列 chに連結させたいです。ch0は、どんどんファイルを読み込んで条件を満たせば連結し、満たさなければ廃棄するといった処理になります。ch0の列は23列で固定されていますが、行数は、まちまちのため、ch0(:,23)になります。chは、どんどん足されますので、行数は膨れあがっていきます。ch(:,23)です。 ちなみに、上記のようなステートメントでは、”添字による代入の次元が一致しません”とエラーになります。
0 Commenti
Risposta accettata
Takuji Fukumoto
il 16 Dic 2017
ch(:,23) = vertcat(ch(:,23),ch0(:,23));
の書き方をするとエラーがでているのかと思いますが、 仮にch,ch0が10行だとすると10行のところに10+10の20行のデータを書き込もうとしていることになるので、 エラーがでます。 例えば下記のようにch0分行数を追加するのはいかがでしょうか。。
len = numel(ch(:,23))+numel(ch0(:,23));
ch(1:len,23) = vertcat(ch(:,23),ch0(:,23));
都度行列サイズを変更していくとメモリ領域を取り直すので、 データが大きいとスピードが遅くなるかもしれません。 23列だけのベクトルにして扱い、 おおよその行数がわかっていればchにあらかじめ大きなサイズをとっておくことも検討されると良いかと思います。
0 Commenti
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!