for文を使用した変数の連番作成

21 ビュー (過去 30 日間)
fk
fk 2021 年 9 月 22 日
コメント済み: fk 2021 年 9 月 22 日
変数名を連番で作成し,その中に配列するプログラムを作成したいです。
a=[0,1,2,3,4,5,6,7,0,2,5,6,7,8,9,0,4,5,6,7,3,2]
b=[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,2,1,3,4,5]
abのような配列が存在したときに,aの要素が0のとき,変数を増やして,次にaの要素が0になる一つ前までのaとbの要素を違う変数に代入するといったものです。
a1=[0,1,2,3,4,5,6,7],b1=[1,2,3,4,5,6,7,8]
a2=[0,2,5,6,7,8,9],b2=[9,1,2,3,4,5,6]
a3=[0,4,5,6,7,3,2],b3=[7,8,2,1,3,4,5]
・・・・・・
といったものをif分とfor分を使って作ろうとしているのですが,for分で変数名を作るところが出来ていません。
aの中の0の数や位置はランダムです。
aとbの長さは同じです。
ご教授いただければ幸いです。

回答 (1 件)

TT
TT 2021 年 9 月 22 日
セル配列を利用してはいかがでしょうか。
a=[0,1,2,3,4,5,6,7,0,2,5,6,7,8,9,0,4,5,6,7,3,2]
a = 1×22
0 1 2 3 4 5 6 7 0 2 5 6 7 8 9 0 4 5 6 7 3 2
b=[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,2,1,3,4,5]
b = 1×22
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 2 1 3 4 5
if a(end)~=0
a(end+1)=0;
end
id0=find(a==0);
id =[id0,length(a)];
c={};d={};
for k=1:length(id0)-1
c{k}=a(id(k):id(k+1)-1);
d{k}=b(id(k):id(k+1)-1);
end
c{:}
ans = 1×8
0 1 2 3 4 5 6 7
ans = 1×7
0 2 5 6 7 8 9
ans = 1×7
0 4 5 6 7 3 2
d{:}
ans = 1×8
1 2 3 4 5 6 7 8
ans = 1×7
9 1 2 3 4 5 6
ans = 1×7
7 8 2 1 3 4 5
  1 件のコメント
fk
fk 2021 年 9 月 22 日
ご回答ありがとうございます。
セル配列でもうまくいきそうです!
悩んでいたのですごく助かりました。
ありがとうございました。

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

タグ

Community Treasure Hunt

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

Start Hunting!