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

26 views (last 30 days)
akihiro kitamura
akihiro kitamura on 11 Apr 2022
Commented: Hernia Baby on 12 Apr 2022
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 スカラーである必要があります。

Accepted Answer

Kojiro Saito
Kojiro Saito on 11 Apr 2022
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 Comments
Kojiro Saito
Kojiro Saito on 11 Apr 2022
@Hernia Babyさん、補足ありがとうございます。
参考になって良かったです。プロットする際にデータ型で迷う場合はワークスペースから変数を選んで「プロット」タブから描画するとやりやすいかもしれません。コードも自動で発行されるので、後で再利用できますし。
こんなイメージです。
Hernia Baby
Hernia Baby on 12 Apr 2022
数値のみの場合は readmatrixもオススメです。 double型で読み込んでくれます。

Sign in to comment.

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!