自再现模的迭代法matlab做图的的代码

这篇博客分享了一段MATLAB代码,用于实现激光工程中自再现模的迭代法。作者首先展示了调整后的代码,然后通过迭代计算振幅和相位,并绘制了相关图形。代码涉及全局变量设置、QU渡越函数调用以及结果的可视化展示。

自再现模的迭代法的代码

垂雷大学激光工程的作业,网上找了一下百度文库有篇相关的文章,不过里面的代码写的不太规范(命名啊,空格啊),就按照自己的习惯改了改,再说百度文库也不好复制粘贴,就放在这里吧。万一有人用得着呢?

(一个课程的同学别抄啊)

% 注:QU渡越函数在提交的同一目录下,缺少这个函数无法运行
clear
clc

global steps cavity_length waveloss mirror_long wavalength

% 定义各种参数的初始值
wavalength  = 0.0000006328; %波长
cavity_length = 0.00006328; %腔长
mirror_long = 0.00001582; %镜长
N = 300; %渡越次数
waveloss = 2*pi/wavalength; %波失
steps = 500; %步长


% 声明变量的空间
x = linspace(-mirror_long, mirror_long, steps);
uN = ones(1,steps);
u1 = ones(1,steps);
u_n = ones(1,steps);

% 经过1次渡越
for i = 1:steps

    u1(i) = QU(x(i),u_n);

end
u_n1 = u1/max(abs(u1));

% 经过N次渡越
for i = 1:N

	for j = 1:steps

		uN(j) = QU(x(j),u_n);

	end

	u_n= uN/max(abs(uN));

end

% 做图,振幅
subplot(2,1,1)
grid on
plot(x,abs(uN)/abs(uN(steps/2)), 'b--')
hold on
plot(x,abs(u1)/abs(u1(steps/2)),'r')
title('振幅');xlabel('振幅分布');ylabel('相对振幅');

angle_uN=angle(uN)/pi*180;
angle_u1=angle(u1)/pi*180;
angle_uN=angle_uN-angle_uN(steps/2);
angle_u1=angle_u1-angle_u1(steps/2);

%做图,相位
subplot(2,1,2)
grid on
plot(x,angle_uN, 'b--')
hold on
plot(x,angle_u1, 'r')
title('相位');xlabel('相位分布');ylabel('相对相位');

QU 函数的代码(文件名为QU.m ,跟上面的代码放在一起就好)

function y=QU(x,u)

global steps cavity_length waveloss mirror_long wavalength

x_=linspace(-mirror_long,mirror_long,steps);

step_length=2*mirror_long/(steps-1);

y=sqrt(1i/cavity_length/wavalength*exp(-1i*waveloss*cavity_length))*sum(exp(-1i*waveloss/2/cavity_length*(-x_+x).^2).*u)*step_length;

结果大概长这样~

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值