for文のindexに構造体配列の要素を使いたい
66 次查看(过去 30 天)
显示 更早的评论
例えば次のようなfor文を書くとします。
sum=0;
for k=1:5
sum=sum+k;
end
fprintf("%d",sum);
このとき、次のようにfor文のindexに構造体配列の要素を使いたいのですが、何かいい方法がありませんでしょうか?(このままだとエラーになる)
sum=0;
for time.k=1:5
sum=sum+time.k;
end
fprintf("%d",sum);
これは自分のプログラムの中で、構造体の要素にアクセスするためにfor文を使うことが多いことが理由です。indexとして用いる変数の数が多くなったことから、1つのtimeという構造体配列にまとめたいと考えましたが、エラーで実行できないので……。
今のところは次のようにしようと考えています。疑似的に実現したに過ぎないのですが……。
sum=0;
time.k.val=0;
for k=time.k.val+1:5
sum=sum+k;
time.k.val=k;
end
fprintf("%d",sum);
clear k
采纳的回答
Hernia Baby
2021-6-1
time.kの中に何かしらの変数が入っている物だと認識して回答します。
for文の中にindexに該当する番号を入れると構造体i番目の数値を代入できます。
以下のコードではtime.kが1~9の変数を持っており、それをfor文内で総和を取ってます。
clear,clc;
time = struct('k',[1:2:10]);
sum=0;
for i=1:length(time.k)
sum=sum+time.k(i);
end
3 个评论
Hernia Baby
2021-6-1
返信ありがとうございます。本件理解しました。
pythonでいうところの
for i in struct:
sum = sum + i
ですかね。
---------------------------
以下のようにすればいけます。
clear,clc;
time = struct('k',[1:2:10]);
sum=0;
for i = time.k
sum=sum+i;
end
for文のドキュメントに配列をそのままインデックスとして格納できる旨が書かれていました。
更多回答(1 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!