matlab gui 在edit 中输入函数,画出图形,然后写循环让图形自发位移,形成动画 ,该怎么做?

循环如下:
while 1
y1=[y1(end),y1(1:end-1)];
set(h1,'YData',y1)
y2=[y2(2:end),y2(1)];
set(h2,'YData',y2)
set(h,'YData',y1+y2)
drawnow
pause(0.05)
end

但是y1,y2是从edit中得到的string,因此会报错。

用str2num函数可以转换为数字。

以及你输入的是函数数据还是函数??追问

输入的是函数,如sin(x)之类的,要画出图来的。

如果是在m文件中直接写y1=sin(x),则后面循环不会有错,而在gui的 edit中输入sin(x),用y1=get(handles.edit1,'String'); 得到后,就会出错了。

追答

x=1:100;
a = get(handles.edit1,'string'); % 你输入的是 y = sin(x); 也即a应该为'y = sin(x);'
eval(a);
for i=1:100
plot(x(1:i),y(1:i));
axis([0,100,-1,1]);
pause(0.5);
end

追问

不是输入y=sin(x),而是在edit 中 只输入sin(x),画出sin(x)的图像后整体向左或向右位移,而不是一点一点画出来。

追答

x=1:100;
a = get(handles.edit1,'string'); % 你输入的是 sin(x); 也即a应该为'sin(x);'
b = ['y = ',a];
eval(b);
for i=1:100
plot(x+5*i,y);
pause(0.5);
end
你试试这个喽

追问

现在基本上可以了,感谢“转基因牛”的耐心解答。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网