条件に該当する行列をどんどん連結していきたい

5 Ansichten (letzte 30 Tage)
Y.Suzuki
Y.Suzuki am 15 Dez. 2017
Beantwortet: Y.Suzuki am 18 Dez. 2017
演算処理で条件を満たす行列 ch0(:,23)を ch(:,23)にどんどん垂直方向に連結したいため ch(:,:) = vertcat(ch(:,:),ch0(:,:)) のようなイメージで、1つの行列 chに連結させたいです。ch0は、どんどんファイルを読み込んで条件を満たせば連結し、満たさなければ廃棄するといった処理になります。ch0の列は23列で固定されていますが、行数は、まちまちのため、ch0(:,23)になります。chは、どんどん足されますので、行数は膨れあがっていきます。ch(:,23)です。 ちなみに、上記のようなステートメントでは、”添字による代入の次元が一致しません”とエラーになります。

Akzeptierte Antwort

Takuji Fukumoto
Takuji Fukumoto am 16 Dez. 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にあらかじめ大きなサイズをとっておくことも検討されると良いかと思います。

Weitere Antworten (1)

Y.Suzuki
Y.Suzuki am 18 Dez. 2017
ありがとうございました。うまく連結できるようになりました。

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!