条件に該当する行列をどんどん連結していきたい
6 ビュー (過去 30 日間)
古いコメントを表示
演算処理で条件を満たす行列 ch0(:,23)を ch(:,23)にどんどん垂直方向に連結したいため ch(:,:) = vertcat(ch(:,:),ch0(:,:)) のようなイメージで、1つの行列 chに連結させたいです。ch0は、どんどんファイルを読み込んで条件を満たせば連結し、満たさなければ廃棄するといった処理になります。ch0の列は23列で固定されていますが、行数は、まちまちのため、ch0(:,23)になります。chは、どんどん足されますので、行数は膨れあがっていきます。ch(:,23)です。 ちなみに、上記のようなステートメントでは、”添字による代入の次元が一致しません”とエラーになります。
0 件のコメント
採用された回答
Takuji Fukumoto
2017 年 12 月 16 日
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 件のコメント
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!