Matlab:实现“光学拍”仿真

本文基于光波的叠加原理。


两列单色波的产生
  • 单色波的产生函数:
function y = F_product_wave(A,k,w,t,x)  
% 函数功能:产生波动函数
% A:波的振幅   k:空间角频率或波数   w:(振动)角频率   
% t:时间   x:x方向空间坐标
% ***************************************************
y = A*cos(k*x-w*t);
end
  • Project Code:
% 作者:ZQJ
% 日期:2021.1.4 星期一
%***********************模拟产生两列单色平面波**************************
clear,clc,close all;
t = 0.1:0.2:1.3;           %时间区间
x = 0:0.001:5;             %空间区间
wave1 = F_product_wave(1,5,50,t(end),x);
wave2 = F_product_wave(1,4,60,t(end),x);
plot(x,wave1,'-',x,wave2,':');

%   figure处理*****************************  
set(gca,'YTick',(-1:0.4:1));
set(gca,'XTick',(0:5));
xlabel('空间坐标x'), ylabel('振幅');
title('两列单色平面波模拟生成');
legend('光波1','光波2');
  • 仿真结果图:
    在这里插入图片描述
两列单色波合成光学拍:
  • 光学拍的产生函数:
function [Beat,A_beat] = F_product_Optical_beat(A,k1,k2,w1,w2,t,x)
% 函数功能:产生光学拍函数
% A:两列波的振幅(相同)    k1:光波1空间角频率或波数    k2:光波2空间角频率或波数  
% w1:光波1的(振动)角频率  w2:光波1(振动)角频率  
% t:时间   x:x方向空间坐标
% ***************************************************
Beat = A*cos(k1*x-w1*t) + A*cos(k2*x-w2*t);           %拍的函数
A_beat = 2*A*cos((k1-k2)/2*x-(w1-w2)/2*t);            %拍的振幅函数
end
  • Project Code:
 % 作者:ZQJ
% 日期:2021.1.4 星期一
%***********************模拟产生光波拍**************************
%光学拍的条件:两列波的振幅相同,振动方向相同,频率接近,同一方向进行传播
clear,clc,close all;
k = 0;
m = moviein(length(0.1:0.2:1.3));         %生成动画存储矩阵的预空间
x = 0:0.01:30;             %空间区间
for t=0.1:0.2:1.3          %时间区间
   k = k+1;
   [Beat,A_beat] = F_product_Optical_beat(1,5,4,50,60,t,x);
   plot(x,Beat,'-',x,A_beat,'m:',x,-A_beat,'m:');
  
%   figure处理*****************************  
   axis([0,30,-2,2]);                  %坐标x和y的最小最大范围限定
   set(gca,'YTick',(-2:0.5:2));
   set(gca,'XTick',(0:5:30));
   xlabel('空间坐标x'), ylabel('光学拍振幅');
   title('光学拍');
   legend('光学拍函数','拍的振幅包络1','拍的振幅包络2');
   
   m(:,k) = getframe;                 %getframe将这一帧画面以列向量的形式反馈
end
%movie(m,3);                            %动画播放这个矩阵(帧画信息),3%   video存储处理(4个步骤)*****************************  
write_movie = VideoWriter('Optical_beat.avi');  %创建文件及空间
open(write_movie);                              %打开
writeVideo(write_movie,m);                      %写入帧画信息
close(write_movie);                             %关闭
  • 仿真结果图:
    在这里插入图片描述

专栏内容供作者本人或大家学习使用,多多指教 ~

  • 14
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值