PDA

查看完整版本 : [求助]请高手指点我编的波动演示程序


zwei
2008-11-28, 17:02
我想编一个演示波随时间传播的程序,也就是sin(k*x)的图形,下面是我编的源代码,出来的动画不理想
%wave propagation
f=1000000;v=3000; %初始条件
w=2*pi*f; %圆频率
l=v/f; %波长
k=2*pi/l; %波数
T=1/f; %周期
d=20; %一个周期内有20个点
x=0:l/d:10*l;
P=sin(k*x);
for t=1:201
plot(x(1:t),P(1:t));
M(t)=getframe;
end
xlabel('位置/x');
ylabel('幅度');
axis([0,10*T,-1,1]);
movie(M,1)

画图估计错了,x轴无法固定
初学Matlab,请大家指点,或者有更好的编法。不胜感激!!!!!!!!!!!

haiyunyuan
2008-11-28, 22:49
不需要movie函数的,你直接在for循环每次绘图结束加条语句pause(0.01)就可以了,()里是暂停秒数,当然也可以是0的。另外为了让图形不闪烁,在for循环前新建一个图形窗口,并设置数据缓冲(figure(1);set(gcf,'doublebuffer','on'););为保持坐标轴不变动,可在plot函数后增加设坐标限语句。

zwei
2008-11-29, 20:56
真是太感谢了

haiyunyuan
2008-11-29, 22:22
不要客气了!