模拟驻波形成:但是频率只能是pi的整数倍,分数倍会出现异常。
clear all;
xm=5;
x=0:0.01:xm;
u1=0.1*cos((2*pi)*x+pi/4);
u2=u1;
% u2=0.4*cos((pi/4)*x+(pi/6));
u=u1+u2;
figure
h=plot(x,u,'r','LineWidth',2);
axis([0,5,-0.4,0.4]) ;
grid on %加网格
fs=16; %字体大小
% xlabel('\itx/\lambda','FontSize',fs) %x标签
% ylabel('\itu/A','FontSize',fs) %y标签
% title('驻波的形成','FontSize',fs) %标题
hold on;
h1=plot(x,u1,'b','LineWidth',2) %右行波句柄
h2=plot(x,u2,'k','LineWidth',2) %左行波句
% ht1=text(1,max(u1)+0.01,'\rightarrow','FontSize',fs);%显示向右的箭头
% ht2=text(1,max(u2)+0.02,'\leftarrow','FontSize',fs);%显示向右的箭头
while 1
u1=[u1(end),u1(1:end-1)]; %倒数第二个元素移到第一个
u2=[u2(2:end),u2(1)]; %第二个元素移到最后一个
u=u1+u2; %合成波
set(h1,'YData',u1) %设置左行波的位移
set(h2,'YData',u2) %设置右行波的位移
set(h,'YData',u) %设置合成波的位移
[um,i]=max(u1); %求右行波的最大值和下标
% set(ht1,'Position',[x(i),um+0.1]) %设置右箭头的位置
[um,i]=max(u2); %求左行波的最大值和下标
% set(ht2,'Position',[x(i),um+0.2]) %设置左箭头的位置
drawnow %更新屏幕
pause(0.1) %延时
% if get(gcf,'CurrentCharacter')==char(27) break;end%按ESC键则退出程序
end

当频率为分数pi时:u1=cos(2.5pix);
