我用matlab编一个“曲线转换按钮”的程序老是出错,求大神解答!
程序如下:h0=figure('position',[19856350300],...'name','实例');x=0:0.5:2*pi;y=sin(x);h=plot(...
程序如下:
h0=figure('position',[198 56 350 300],...
'name','实例');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y);
grid on
huidiao=['if i==1 ','i=0;','y=cos(x);','delete(h);',...
'set(hm,"string","正弦函数");','h=plot(x,y);','grid on;',...
'else if i==0 ','i=1;','y=sin(x);','set(hm,"string","余弦函数");',...
'delete(h);','h=plot(x,y);','grid on;','end ','end']
hm=uicontrol(gcf,'style','pushbutton','string','余弦函数','callback',huidiao);
i=1;
set(hm,'position',[250 20 60 20]);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('按钮的使用')
hold on
提示错误是:Error while evaluating uicontrol Callback
但是怎么改都有错误,求大神解答! 展开
h0=figure('position',[198 56 350 300],...
'name','实例');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y);
grid on
huidiao=['if i==1 ','i=0;','y=cos(x);','delete(h);',...
'set(hm,"string","正弦函数");','h=plot(x,y);','grid on;',...
'else if i==0 ','i=1;','y=sin(x);','set(hm,"string","余弦函数");',...
'delete(h);','h=plot(x,y);','grid on;','end ','end']
hm=uicontrol(gcf,'style','pushbutton','string','余弦函数','callback',huidiao);
i=1;
set(hm,'position',[250 20 60 20]);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('按钮的使用')
hold on
提示错误是:Error while evaluating uicontrol Callback
但是怎么改都有错误,求大神解答! 展开
3个回答
展开全部
h0=figure('position',[198 56 350 300],...
'name','实例');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y);
grid on
huidiao=['if i==1,','i=0;','y=cos(x);','delete(h);',...
'set(hm,''string'',''正弦函数'');','h=plot(x,y);','grid on;',...
'elseif i==0,','i=1;','y=sin(x);','set(hm,''string'',''余弦函数'');',...
'delete(h);','h=plot(x,y);','grid on;','end'];
hm=uicontrol(gcf,'style','pushbutton','string','余弦函数','callback',huidiao);
i=1;
set(hm,'position',[250 20 60 20]);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('按钮的使用')
hold on
用字符串表示命令作为回调函数时时要注意格式
你的代码主要错误是两个
1不是用双引号而是用两个单引号
.....,set(hm,''string'',''正弦函数''),..........
2因为命令用字符串连起来,没有换行,所以原来要换行的地方不能简单用空格隔开而是要用逗号
['if i==1,' ............
'name','实例');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y);
grid on
huidiao=['if i==1,','i=0;','y=cos(x);','delete(h);',...
'set(hm,''string'',''正弦函数'');','h=plot(x,y);','grid on;',...
'elseif i==0,','i=1;','y=sin(x);','set(hm,''string'',''余弦函数'');',...
'delete(h);','h=plot(x,y);','grid on;','end'];
hm=uicontrol(gcf,'style','pushbutton','string','余弦函数','callback',huidiao);
i=1;
set(hm,'position',[250 20 60 20]);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('按钮的使用')
hold on
用字符串表示命令作为回调函数时时要注意格式
你的代码主要错误是两个
1不是用双引号而是用两个单引号
.....,set(hm,''string'',''正弦函数''),..........
2因为命令用字符串连起来,没有换行,所以原来要换行的地方不能简单用空格隔开而是要用逗号
['if i==1,' ............
展开全部
主程序
function fun(varargin)
if nargin<1,
Init;
else
feval(varargin{:});
end
return;
callback调用的函数
function huidiao()
x=0:0.5:2*pi;
C=get(gcf,'userdata');
h1=get(gca,'children');
h=C{1};i=C{2};
if i==0
set(h,'string','正弦函数');
set(h1,'xData',x,'yData',cos(x));
set(gcf,'userdata',{h,1});
end
if i==1
set(h,'string','余弦函数');
set(h1,'xData',x,'yData',sin(x));
set(gcf,'userdata',{h,0});
end
还有Init.m是初始化代码
你没用回调函数调用Callback所对应的函数当然会出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是句柄调用的问题,你具体想实现什么功能??
追问
就是点击按钮转换正弦和余弦图像,好像是在callback那里输入函数的格式一直弄不对
追答
不太习惯句柄编程。可以直接在回调函数中进行切换,按一下就画出正弦或者余弦函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询