Clear Filters
Clear Filters

for文で連続する数字から変数を定義したい

63 views (last 30 days)
kuroshiba
kuroshiba on 20 Oct 2022
Commented: kuroshiba on 20 Oct 2022
for i = 1: 10
kazu = i;
name[ i ] = kazu;
name[0] 、name[ 1 ]のようにiの値ごとに定義される変数を作りたいのですが、
どのようにすればよいでしょうか。

Accepted Answer

Keita Abe
Keita Abe on 20 Oct 2022
配列でname(i)を定義するのではなく変数名自体に連番を振るにはevalを使えばできるみたいです。(推奨されないそうですが)
https://jp.mathworks.com/matlabcentral/answers/1729850-for?s_tid=answers_rc1-3_p3_MLT
for i = 1:10
kazu = i;
eval(sprintf('name%d=kazu;',i));
end
whos
Name Size Bytes Class Attributes cmdout 1x33 66 char i 1x1 8 double kazu 1x1 8 double name1 1x1 8 double name10 1x1 8 double name2 1x1 8 double name3 1x1 8 double name4 1x1 8 double name5 1x1 8 double name6 1x1 8 double name7 1x1 8 double name8 1x1 8 double name9 1x1 8 double
  2 Comments
Atsushi Ueno
Atsushi Ueno on 20 Oct 2022
推奨されるのは cell 配列です。
for i = 1:10
kazu = zeros(randi(5),randi(5)); % サイズがバラバラな行列を作成
name{i} = kazu;
end
name % 1行10列のcell配列。変数を10個作るのと同じ。型がバラバラでも各々格納してくれる
name = 1×10 cell array
{3×5 double} {4×1 double} {5×2 double} {3×1 double} {2×2 double} {5×1 double} {2×5 double} {4×2 double} {[0]} {3×1 double}
name{5}
ans = 2×2
0 0 0 0
kuroshiba
kuroshiba on 20 Oct 2022
Thank you gentleman!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!