guideでワークスペースの変数を使用する方法について
6 views (last 30 days)
Show older comments
Ryosuke Takahashi
on 20 Oct 2018
Answered: Ryosuke Takahashi
on 23 Oct 2018
現在、ワークスペースで読み取ったデータをボタンプッシュで更新できるようにプログラムを作成したいです。 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 Comment
Stephan
on 20 Oct 2018
Edited: Stephan
on 20 Oct 2018
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
Accepted Answer
Naoya
on 23 Oct 2018
ご質問の主旨としては コールバック関数 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
0 Comments
More Answers (1)
See Also
Categories
Find more on Specifying Target for Graphics Output in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!