Effacer les filtres
Effacer les filtres

for文の書き方について

32 vues (au cours des 30 derniers jours)
mayu
mayu le 28 Août 2023
Commenté : mayu le 31 Août 2023
マトラボ以前の質問と思うので恐れ入ります。。。
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💦

Réponse acceptée

Hiro Yoshino
Hiro Yoshino le 28 Août 2023
アイディアを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 commentaires
Hiro Yoshino
Hiro Yoshino le 31 Août 2023
最初は少し苦労すると思いますが耐えてみてください。徐々に慣れていくと思います。
まずは関数のドキュメンテーションを見て、それ通りに数値を与えてみると問題点が浮かんでくるかと思います。調べてみて分からないことがあれば、Answers が味方してくれますので。
まずは自分で調べてみて、仮説をもってご質問されると回答が付きやすいと思います。興味深い質問には様々な人がコメントをしてくれる傾向がありますので!
mayu
mayu le 31 Août 2023
ありがとうございます。
仮説を立てて質問できるように意識したいと思います。
また引き続きどうぞよろしくお願いいたします。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!