条件に該当する行列をどんどん連結していきたい
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Y.Suzuki
le 15 Déc 2017
Réponse apportée : Y.Suzuki
le 18 Déc 2017
演算処理で条件を満たす行列 ch0(:,23)を ch(:,23)にどんどん垂直方向に連結したいため ch(:,:) = vertcat(ch(:,:),ch0(:,:)) のようなイメージで、1つの行列 chに連結させたいです。ch0は、どんどんファイルを読み込んで条件を満たせば連結し、満たさなければ廃棄するといった処理になります。ch0の列は23列で固定されていますが、行数は、まちまちのため、ch0(:,23)になります。chは、どんどん足されますので、行数は膨れあがっていきます。ch(:,23)です。 ちなみに、上記のようなステートメントでは、”添字による代入の次元が一致しません”とエラーになります。
0 commentaires
Réponse acceptée
Takuji Fukumoto
le 16 Déc 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 commentaires
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!