for文の書き方について

조회 수: 9 (최근 30일)
mayu
mayu 2023년 8월 28일
댓글: mayu 2023년 8월 31일
マトラボ以前の質問と思うので恐れ入ります。。。
btn1 = app.Btn1Button.Value;
btn2 = app.Btn2Button.Value;
btn3 = app.Btn3Button.Value;
sldr1 = app.Slider1.Value;
sldr2 = app.Slider2.Value;
sldr3 = app.Slider3.Value;
nbox1 = app.EditField1.Value;
nbox2 = app.EditField2.Value;
nbox3 = app.EditField3.Value;
これを短くしたくて、
for i = 1:3
("btn" + i) = app.("Btn" + i + "Button").Value;
("sldr" + i) = app.("Slider" + i).Value;
("nbox" + i) = app.("EditField" + i).Value;
end
と書いたら、
'=' での解析エラー:使用法は、無効な MATLAB 構文になる可能性があります。
と言われるのですが、どう書いたらいいのでしょうか😓
左側がおかしいのかなと思って、括弧やクォーテーションを外したり変えてみても変わりませんでした。
よろしくお願いいたしますm(__)m💦

채택된 답변

Hiro Yoshino
Hiro Yoshino 2023년 8월 28일
アイディアを2つお渡しします:
[1] cell 配列を使って情報を保存すると楽かなと思います。
それと、string ベクトルの結合ですが、"i" が数値なのでそのまま結合出来ないと思います。num2str で変換しておきます。
app.Btn1Button.Value = 1;
app.Btn2Button.Value = 2;
app.Btn3Button.Value = 3;
for i = 1:3
btn{i} = app.("Btn" + num2str(i) + "Button").Value;
end
取り出し
btn{:}
ans = 1
ans = 2
ans = 3
[2] eval を使うと、文字ベクトルを評価することができます。これも使い方によっては目的を達成できるかも。
x = rand(10);
for i = 1:2
sampleStr = sprintf("x*x + %f",i) % この string を評価することができる
mysample{i} = eval(sampleStr);
end
sampleStr = "x*x + 1.000000"
mysample = 1×1 cell array
{10×10 double}
sampleStr = "x*x + 2.000000"
mysample = 1×2 cell array
{10×10 double} {10×10 double}
確認:
mysample{:}
ans = 10×10
3.2364 3.0724 3.0012 3.8829 3.2737 3.2315 3.6100 3.2918 2.6290 4.3854 3.0363 2.6288 2.6506 2.3124 3.1440 2.5556 2.8740 3.2044 2.5573 3.4979 3.5392 3.2857 3.2806 3.1913 3.4939 3.1551 3.5127 3.6920 2.9020 4.3439 3.0966 2.7905 2.6119 2.7479 3.1536 2.7661 3.1933 3.1977 2.6465 3.5358 3.3555 3.2036 3.3053 2.8728 3.3998 3.1859 3.1039 3.8000 3.1804 3.9302 3.3423 3.2997 2.9761 3.3593 3.5556 3.2943 3.8559 3.9142 3.0183 3.9473 3.7770 3.1009 3.2219 3.3562 3.9449 3.3768 3.8376 3.9220 3.1548 4.9024 3.3157 2.7619 3.0758 3.4335 3.1084 2.8328 3.2202 3.0481 2.7553 4.2525 4.1994 3.4959 3.3826 3.8562 4.5045 3.8751 4.6156 4.3782 3.7280 5.3289 3.8477 3.7528 3.6505 3.7058 4.2050 3.8145 4.1801 4.4629 3.7634 4.7117
ans = 10×10
4.2364 4.0724 4.0012 4.8829 4.2737 4.2315 4.6100 4.2918 3.6290 5.3854 4.0363 3.6288 3.6506 3.3124 4.1440 3.5556 3.8740 4.2044 3.5573 4.4979 4.5392 4.2857 4.2806 4.1913 4.4939 4.1551 4.5127 4.6920 3.9020 5.3439 4.0966 3.7905 3.6119 3.7479 4.1536 3.7661 4.1933 4.1977 3.6465 4.5358 4.3555 4.2036 4.3053 3.8728 4.3998 4.1859 4.1039 4.8000 4.1804 4.9302 4.3423 4.2997 3.9761 4.3593 4.5556 4.2943 4.8559 4.9142 4.0183 4.9473 4.7770 4.1009 4.2219 4.3562 4.9449 4.3768 4.8376 4.9220 4.1548 5.9024 4.3157 3.7619 4.0758 4.4335 4.1084 3.8328 4.2202 4.0481 3.7553 5.2525 5.1994 4.4959 4.3826 4.8562 5.5045 4.8751 5.6156 5.3782 4.7280 6.3289 4.8477 4.7528 4.6505 4.7058 5.2050 4.8145 5.1801 5.4629 4.7634 5.7117
このあたりの変数の取り扱いが???な場合は、基礎が足らないので "MATLAB 基礎" を受講された方が良いと思います。
もし MATLAB 入門 も無償でありますが、恐らく「足りない」かと思います。
MATLAB 基礎は講師リードのものもありますが、OTS でオンラインで受講もできます。この辺りの学習が終わると、今回のご疑問も解決されるかと思います。
  댓글 수: 5
Hiro Yoshino
Hiro Yoshino 2023년 8월 31일
最初は少し苦労すると思いますが耐えてみてください。徐々に慣れていくと思います。
まずは関数のドキュメンテーションを見て、それ通りに数値を与えてみると問題点が浮かんでくるかと思います。調べてみて分からないことがあれば、Answers が味方してくれますので。
まずは自分で調べてみて、仮説をもってご質問されると回答が付きやすいと思います。興味深い質問には様々な人がコメントをしてくれる傾向がありますので!
mayu
mayu 2023년 8월 31일
ありがとうございます。
仮説を立てて質問できるように意識したいと思います。
また引き続きどうぞよろしくお願いいたします。

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 一様分布 (連続)에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!