Matlab App Designerでド​ロップダウンリストで​選択された項目に関し​てユーザーからの入力​値をもとに計算を行い​グラフを表示したい

11 views (last 30 days)
Yuto Tahara
Yuto Tahara on 23 Nov 2021
Commented: Yuto Tahara on 24 Nov 2021
ドロップダウンリストを使って選択された信号発生器の波形を表示するプログラミングを作りたいです。ユーザーはドロップダウンリストで信号発生器を選択して周波数を入力することで波形が表示されるようにしたいんですが、その場合波形を求める式と波形を表示するためのプログラミングはドロップダウンリストのプログラミングの中でswitch, caseを使って一緒に書き込めばいいんでしょうか?それともドロップダウンリスト、式、波形を表示するためのプログラミングは通常通り別々に書いても大丈夫なんでしょうか?下の写真はドロップダウンリストのプログラミングのところにswitch, caseを使って式だけを書き込んだものですが、関数fが定義されていませんと表示されてしまいました。これは先にドロップダウンリストを配置して周波数を入力する欄を後で配置したためなんでしょうか?
  1 Comment
Atsushi Ueno
Atsushi Ueno on 23 Nov 2021
【参考】サンプルを作って添付しました

Sign in to comment.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 23 Nov 2021
>波形を求める式と波形を表示するためのプログラミングはドロップダウンリストのプログラミングの中でswitch, caseを使って一緒に書き込めばいいんでしょうか?それともドロップダウンリスト、式、波形を表示するためのプログラミングは通常通り別々に書いても大丈夫なんでしょうか?
前者の様に一緒に書き込んでも動きますが、後者の方が良いと思います。プログラムは細かく「部品」に分けるのが良い習慣です。質問の内容で言うと「グラフはドロップダウンリストを変えた時だけ表示するか、プッシュボタンを押した時だけ表示するか、両方とも表示するか」を簡単に変更する為には「操作系の受付処理」と「波形を表示する処理」は異なる関数(メソッド)に分けて書くべきです。その方が下記の様なメリットが多いです。
  • App Designerが提供するコールバック関数を適宜使う
  • インターフェースの変更に対し柔軟に対応できる様にする
  • デバッグ時、どこに問題があるか分かり易くなる など
>これは先にドロップダウンリストを配置して周波数を入力する欄を後で配置したためなんでしょうか?
いいえ。コンポーネントを配置する順番は関係ありません。
「関数fが定義されていません」と表示されたのは、"f"を書いた所から"f"の定義が参照出来ないからです。多分スライダーのコールバック関数内でスライダーの位置を"f"として定義したと想定しますが、その場合同関数の処理が終了した時点で"f"は捨てられてしまい、SignalGeneratorDropDownValueChanged(app,event)関数が実行される事には"f"は存在しないのです。
  1 Comment
Yuto Tahara
Yuto Tahara on 24 Nov 2021
コメントとサンプルありがとうございます。これをもとにやってみます。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!