%
% ```matlab
% 定义介质层信息
thickness = [0.4, 0.3, 0.4, 0.3, 0.4, 0.3]; % 厚度,单位:微米
refractive_index = [1.0, 1.31, 1.52, 1.31, 1.52, 1.31]; % 折射率
% 定义波长范围
wavelength = 0.4:0.01:0.7; % 单位:微米
% 计算能量透射率
transmission_vertical = zeros(size(wavelength));
transmission_slanted = zeros(size(wavelength));
for i = 1:length(wavelength)
lam = wavelength(i);
% 计算垂直入射时的特征矩阵
M = eye(2);
for j = 1:length(thickness)
n = refractive_index(j);
d = thickness(j);
k = 2 * pi * n / lam;
M = M * [cos(k * d), 1j * sin(k * d) / n; 1j * n * sin(k * d), cos(k * d)];
end
transmission_vertical(i) = abs(1 / M(1, 1))^2;
% 计算30度斜入射时的特征矩阵
theta = deg2rad(30);
M = eye(2);
for j = 1:length(thickness)
n = refractive_index(j);
d = thickness(j);
k = 2 * pi * n / lam;
kx = k * sin(theta);
M = M * [cos(kx * d), 1j * sin(kx * d) / n; 1j * n * sin(kx * d), cos(kx * d)];
end
transmission_slanted(i) = abs(1 / M(1, 1))^2;
end
% 绘制能量透射率曲线
figure;
plot(wavelength, transmission_vertical, 'b-', 'LineWidth', 2);
hold on;
plot(wavelength, transmission_slanted, 'r--', 'LineWidth', 2);
xlabel('波长 (微米)');
ylabel('能量透射率');
legend('垂直入射', '30度斜入射');
title('多层介质薄膜能量透射率曲线');
grid on;
% ```
%
% 请将上述修正后的代码复制到Matlab环境中运行,您将能够得到垂直入射和30度斜入射时的能量透射率曲线。