MATLAB GUI上でのコールバック関数操作

조회 수: 25 (최근 30일)
akihiro kitamura
akihiro kitamura 2022년 4월 11일
댓글: Hernia Baby 2022년 4월 12일
MATLABコマンドライン上で、下記のコマンドを実施した場合にはエラーが出ず、plotが表示される。
d = readtable('motor2.xlsx');
ti = d( 2:630 ,1); %% 2~630 行目の1列目をt軸に
y2 = d( 2:630 ,6); %% 2~630 行目の6列目をy軸に
plot(ti,y2);
同じ記述を、GUIのbuttonのコールバック関数に記述するとエラーが出ます。
・コマンドライン上と同じように動作させるには何が必要でしょうか。
・2つの違いはなんでしょうか。
エラー内容
使い方によるエラー matlab.graphics.data.DataMap/addChannel
Invalid subscript for Y. table 変数の添字は、実数の正の整数を含む数値配列、logical 配列、文字ベクトル、string 配列、文字ベクト
ルの cell 配列、または 1 つ以上の変数名と一致する pattern スカラーである必要があります。

채택된 답변

Kojiro Saito
Kojiro Saito 2022년 4월 11일
GUIのコールバックでもプロットは同じように動作すると思います。私の環境では、MATLABのコマンドウィンドウでもplotの行でmatlab.graphics.data.DataMap/addChannel の同じエラーが出ました。tiとy2がテーブル型になっているとこのエラーが出ます。
中身のデータだけ取り出してプロットしてみればできると思います。
plot(ti.(1), y2.(1))
また、これだと別ウィンドウでプロットが表示されてしまうので同じGUI の中に描画したい場合は、App Designerのキャンバスタブで「座標軸」コンポーネントを置いてから
plot(app.UIAxes, ti.(1), y2.(1))
としてみてください。
  댓글 수: 4
Kojiro Saito
Kojiro Saito 2022년 4월 11일
@Hernia Babyさん、補足ありがとうございます。
参考になって良かったです。プロットする際にデータ型で迷う場合はワークスペースから変数を選んで「プロット」タブから描画するとやりやすいかもしれません。コードも自動で発行されるので、後で再利用できますし。
こんなイメージです。
Hernia Baby
Hernia Baby 2022년 4월 12일
数値のみの場合は readmatrixもオススメです。 double型で読み込んでくれます。

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 対話型コントロールとコールバック에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!