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 Center および File Exchange一様分布 (連続) についてさらに検索

タグ

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!