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

조회 수: 58 (최근 30일)
kuroshiba
kuroshiba 2022년 10월 20일
댓글: kuroshiba 2022년 10월 20일
for i = 1: 10
kazu = i;
name[ i ] = kazu;
name[0] 、name[ 1 ]のようにiの値ごとに定義される変数を作りたいのですが、
どのようにすればよいでしょうか。

채택된 답변

Keita Abe
Keita Abe 2022년 10월 20일
配列で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
Atsushi Ueno
Atsushi Ueno 2022년 10월 20일
推奨されるのは 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 2022년 10월 20일
Thank you gentleman!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 関数の基礎에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!