matlab不同频率两个单色光波叠加代码
时间: 2024-09-27 15:05:25 浏览: 36
光学仿真-matlab-仿真多(和双)频率单色光的叠加,仿真光拍现象、群速度、相速度。
在MATLAB中,你可以使用复数函数和二维数组来模拟两个不同频率的单色光波叠加的情况。以下是一个简单的示例,假设我们有两列代表两个光波的幅度和相位:
```matlab
% 定义波长、速度和时间步长
lambda1 = 500e-9; % 第一光波的波长 (nm)
lambda2 = 600e-9; % 第二光波的波长 (nm)
c = 3e8; % 光速 (m/s)
dt = 1e-12; % 时间间隔 (s)
% 定义频率和周期
nu1 = c / lambda1;
nu2 = c / lambda2;
T1 = 1 / nu1;
T2 = 1 / nu2;
% 设定两个光波的振幅和初始相位
amp1 = 1; % 第一光波的幅度
amp2 = 0.5; % 第二光波的幅度
phase1 = 0; % 第一光波的初始相位
phase2 = pi / 4; % 第二光波的初始相位
% 创建时间向量
t = 0:dt:2*T1 + 2*T2; % 总时间长度大于两者周期总和
% 计算每个光波的相位
theta1 = 2 * pi * nu1 * t;
theta2 = 2 * pi * nu2 * t;
% 构建两波叠加的复合信号 (幅度是复数的)
waveform = amp1 * cos(theta1 + phase1) + amp2 * cos(theta2 + phase2);
% 可视化结果
plot(t, real(waveform), 'b', t, imag(waveform), 'r');
xlabel('Time (s)');
ylabel('Amplitude');
legend('Real part', 'Imaginary part');
```
这个代码创建了一个时间序列,表示两个不同频率的正弦波按照给定的振幅和相位进行叠加。`real()`和`imag()`用于提取实部和虚部以便可视化。
阅读全文