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

ドロップダウンリストを使って選択された信号発生器の波形を表示するプログラミングを作りたいです。ユーザーはドロップダウンリストで信号発生器を選択して周波数を入力することで波形が表示されるようにしたいんですが、その場合波形を求める式と波形を表示するためのプログラミングはドロップダウンリストのプログラミングの中でswitch, caseを使って一緒に書き込めばいいんでしょうか?それともドロップダウンリスト、式、波形を表示するためのプログラミングは通常通り別々に書いても大丈夫なんでしょうか?下の写真はドロップダウンリストのプログラミングのところにswitch, caseを使って式だけを書き込んだものですが、関数fが定義されていませんと表示されてしまいました。これは先にドロップダウンリストを配置して周波数を入力する欄を後で配置したためなんでしょうか?

댓글 수: 1

Atsushi Ueno
Atsushi Ueno 2021년 11월 23일
【参考】サンプルを作って添付しました

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

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 23일

0 개 추천

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

댓글 수: 1

Yuto Tahara
Yuto Tahara 2021년 11월 24일
コメントとサンプルありがとうございます。これをもとにやってみます。

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

추가 답변 (0개)

카테고리

제품

릴리스

R2021a

질문:

2021년 11월 23일

댓글:

2021년 11월 24일

Community Treasure Hunt

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

Start Hunting!