guideでワークス​ペースの変数を使用す​る方法について

7 ビュー (過去 30 日間)
Ryosuke Takahashi
Ryosuke Takahashi 2018 年 10 月 20 日
回答済み: Ryosuke Takahashi 2018 年 10 月 23 日
現在、ワークスペースで読み取ったデータをボタンプッシュで更新できるようにプログラムを作成したいです。 sin波で上図に元波形、下図に更新した波形が表示されるようにまではできたのですが、gideでワークスペースのデータを使用するにはどうしたらいいのかがわかりませんでした。
初歩的な質問かもしれませんが、ご教示いただけると幸いです。
よろしくお願いいたします。
function buttonPlot
% Create a UI figure window
fig = uifigure('Name','checking cutout start time');
% Create a EMG axses1
ax1 = uiaxes('Parent',fig,... 'Units','pixels',... 'Position',[50, 220, 400, 200]);
% Create a UI axses2
ax2 = uiaxes('Parent',fig,... 'Units','pixels',... 'Position',[50, 20, 400, 200]);
% Create a push button
btn = uibutton(fig,'push',... 'Text','update',... 'Position',[460, 120, 100, 20],... 'ButtonPushedFcn',@(btn,event) plotButtonPushed(btn,ax2));
% Create a wave
x = linspace(0,2*pi,100); y = sin(x)*rand; plot(ax1, x, y,'k'); end
%Create the function for the ButtonPushedFcn callback
function plotButtonPushed(btn,ax2) x = linspace(0,2*pi,100); y = sin(x)*rand; plot(ax2, x, y,'k');
end
  1 件のコメント
Stephan
Stephan 2018 年 10 月 20 日
編集済み: Stephan 2018 年 10 月 20 日
Try of translation:
About how to use workspace variables in Guide
Currently I would like to create a program so that I can update data read by workspace with button push. Although it was possible to display the original waveform in the upper figure above and the updated waveform in the lower figure with the sin wave, I did not know how to use workspace data with gide.
Although it may be an elementary question, I would be pleased if you could teach.
Thank you.
function buttonPlot
% Create a UI figure window
fig = uifigure('Name','checking cutout start time');
% Create a EMG axses1
ax1 = uiaxes('Parent',fig,... 'Units','pixels',... 'Position',[50, 220, 400, 200]);
% Create a UI axses2
ax2 = uiaxes('Parent',fig,... 'Units','pixels',... 'Position',[50, 20, 400, 200]);
% Create a push button
btn = uibutton(fig,'push',... 'Text','update',... 'Position',[460, 120, 100, 20],... 'ButtonPushedFcn',@(btn,event)
plotButtonPushed(btn,ax2));
% Create a wave
x = linspace(0,2*pi,100);
y = sin(x)*rand;
plot(ax1, x, y,'k');
end
%Create the function for the ButtonPushedFcn callback
function plotButtonPushed(btn,ax2)
x = linspace(0,2*pi,100);
y = sin(x)*rand;
plot(ax2, x, y,'k');
end

サインインしてコメントする。

採用された回答

Naoya
Naoya 2018 年 10 月 23 日
ご質問の主旨としては コールバック関数 plotButtonPushed() から、ベースワークスペース変数 x,y を使用して、 ax2 上にプロット表示されたいということになりますでしょうか?
evalin() と呼ばれるコマンドで、指定したワークスペース上でMATLAB 式を実行することができますので、こちらを利用されてはいかがでしょうか?
function plotButtonPushed(btn,ax2)
%x = linspace(0,2*pi,100);
%y = sin(x)*rand;
x = evalin('base','x'); % ベースワークスペースの x を読み込む
y = evalin('base','y'); % ベースワークスペースの y を読み込む
plot(ax2, x, y,'k');
end

その他の回答 (1 件)

Ryosuke Takahashi
Ryosuke Takahashi 2018 年 10 月 23 日
私の説明不足で申し訳ありません。ご教示頂いた内容で問題ありませんでした。
おかげさまで無事に解決しました。
ご教示頂きありがとうございました。

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by