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

2 Ansichten (letzte 30 Tage)
Ryosuke Takahashi
Ryosuke Takahashi am 20 Okt. 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 Kommentar
Stephan
Stephan am 20 Okt. 2018
Bearbeitet: Stephan am 20 Okt. 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Naoya
Naoya am 23 Okt. 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

Weitere Antworten (1)

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

Kategorien

Mehr zu Specifying Target for Graphics Output finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by