MATLAB GUI上でのコールバック関数操作
25 ビュー (過去 30 日間)
古いコメントを表示
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 スカラーである必要があります。
0 件のコメント
採用された回答
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
2022 年 4 月 11 日
@Hernia Babyさん、補足ありがとうございます。
参考になって良かったです。プロットする際にデータ型で迷う場合はワークスペースから変数を選んで「プロット」タブから描画するとやりやすいかもしれません。コードも自動で発行されるので、後で再利用できますし。
こんなイメージです。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で 対話型コントロールとコールバック についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!