필터 지우기
필터 지우기

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

조회 수: 3 (최근 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 CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by