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 Center および File Exchange対話型コントロールとコールバック についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!