配列が空になるまで試​行を繰り返すやり方が​分かりません

配列情報を参照して、その配列からデータを取り出し、
配列が空になるまで試行を繰り返す、コードを作りたいのですが
アドバイスが欲しいです。
<イメージ>
まず A という 100000×6 の配列があるとして、
その A から B=A(1,:) の様にして情報を取り出し、A(1,:) を空配列にします。
(この場合は、 A(1,:)=[] で空配列に置き換えました。)
そして、これを A が空になるまで行うようにしたいというものです。

 採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 11 月 29 日

0 投票

A = zeros(100000,6); % まず A という 100000×6 の配列があるとして、
counter = 0;
while(~isempty(A))
B = A(1,:); % その A から B=A(1,:) の様にして情報を取り出し、A(1,:) を空配列にします。
A(1,:) = []; % (この場合は、 A(1,:)=[] で空配列に置き換えました。)
counter = counter + 1;
end % そして、これを A が空になるまで行うようにしたいというものです。
A % A が空になったか確認
A = 0×6 empty double matrix
counter % きっちり100000回行われたか確認
counter = 100000

3 件のコメント

Atsushi Ueno
Atsushi Ueno 2022 年 11 月 29 日
> アドバイスが欲しいです
潤沢なメモリを使える時代です。「Aを一つずつ消していく事」が目的ではないはずですし、そのような実装は不要です。「Aの各行にアクセスする事」をより単純な方法で実装出来ます。
A = zeros(100000,6);
for temp = A' % Aを転置して、各列を順に取り出す
B = temp';
end
Atsushi Ueno
Atsushi Ueno 2022 年 11 月 29 日
> アドバイスが欲しいです
MATLABで配列(ベクトルまたは行列と呼ぶ)を扱う場合、for文で各要素にアクセスする必要は必ずしも必要ありません。むしろそうでない場合の方が多く、多くの場面でfor文を取り除く事が出来ます。
Kazumasa Hashiba
Kazumasa Hashiba 2022 年 11 月 30 日
ご回答ありがとうございます。
こちらを参考にして、コードを作成してみます。
丁寧に解説して頂き、誠にありがとうございました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange行列および配列 についてさらに検索

製品

リリース

R2021a

Community Treasure Hunt

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

Start Hunting!