matlab实现10.7MHZFM信号正交解调
时间: 2023-10-01 16:08:33 浏览: 90
MATLAB实现FM信号的调制与解调
由于正交解调需要使用复数运算,因此需要将实数的信号转化为复数信号。下面是实现10.7MHz FM信号正交解调的MATLAB代码:
```matlab
% 读取音频文件
[x, fs] = audioread('10.7MHz_FM_signal.wav');
% 设置参数
fc = 10.7e6; % 载波频率
fsym = 100e3; % 符号速率
Ts = 1/fsym; % 符号时间
Nsym = length(x)/fsym; % 符号数
t = (0:length(x)-1)/fs; % 时间轴
t_sym = (0:Nsym-1)*Ts; % 符号时间轴
% 将实数信号转化为复数信号
xc = x.*exp(-1j*2*pi*fc*t);
% 生成本地振荡信号
lo = exp(1j*2*pi*fc*t);
% 低通滤波器
[b,a] = butter(6, 2*pi*5e3/fs, 'low');
xr = filter(b, a, xc.*lo);
% 生成正交信号
s = exp(-1j*2*pi*fc*t_sym);
s1 = real(s);
s2 = imag(s);
% 正交解调器
I = filter(s1, 1, xr);
Q = filter(s2, 1, xr);
% 信号合并
y = I + 1j*Q;
% 保存结果
audiowrite('10.7MHz_FM_signal_demod.wav', y, fs);
```
代码中,载波频率 `fc` 和符号速率 `fsym` 需要根据实际情况进行设置,本例中假设 `fc=10.7MHz`,`fsym=100kHz`。低通滤波器用于去除高频噪声,本例中采用6阶巴特沃斯滤波器,截止频率为5kHz。正交信号的生成可以通过调用 `exp` 函数实现,其中 `s1` 和 `s2` 分别为正交信号的实部和虚部。正交解调器采用滤波器实现,滤波器的系数为正交信号的实部和虚部。最后将解调得到的复数信号保存为音频文件即可。
阅读全文