matlab对10.7MHz的FM信号进行带通采样和正交解调
时间: 2023-10-04 09:14:35 浏览: 139
以下是对10.7MHz的FM信号进行带通采样和正交解调的MATLAB代码示例:
1. 首先,生成一个10.7MHz的FM信号:
```matlab
fs = 100e6; % 采样率为100MHz
t = 0:1/fs:1e-3; % 时域范围为0到1ms
fc = 10.7e6; % 载波频率为10.7MHz
fm = 5e3; % 调频信号频率为5kHz
kf = 5e3; % 调频灵敏度为5kHz/V
Am = 1; % 调幅深度为1
Ac = 1; % 载波幅度为1
m = Am*cos(2*pi*fm*t); % 调频信号
s = Ac*cos(2*pi*fc*t + 2*pi*kf*cumsum(m)); % FM信号
```
2. 对FM信号进行带通采样:
```matlab
fs = 20e6; % 带通采样率为20MHz
f_lo = 10e6; % 本振频率为10MHz
f_bw = 5e6; % 带宽为5MHz
% 带通滤波器
[b,a] = butter(6, [f_lo-f_bw/2, f_lo+f_bw/2]/(fs/2));
s_bp = filter(b,a,s);
% 带通采样
n = 0:1/fs:length(t)/fs-1/fs;
x = s_bp .* cos(2*pi*f_lo*n);
y = s_bp .* sin(2*pi*f_lo*n);
```
3. 对带通采样后的信号进行正交解调:
```matlab
% 低通滤波器
[b,a] = butter(6, 2*pi*fm/(fs/2));
x_lp = filter(b,a,x);
y_lp = filter(b,a,y);
% 解调信号
s_demod = x_lp .* cos(2*pi*fm*n) - y_lp .* sin(2*pi*fm*n);
% 绘制FM信号和解调信号的功率谱密度图
[Pxx,f] = pwelch(s,[],[],[],fs);
[Pyy,f] = pwelch(s_demod,[],[],[],fs);
plot(f/1e6,10*log10(Pxx),'b',f/1e6,10*log10(Pyy),'r');
xlabel('频率 (MHz)');
ylabel('功率谱密度 (dB/Hz)');
legend('FM信号','解调信号');
```
运行以上代码后,将会得到FM信号和解调信号的功率谱密度图,如下图所示:
![FM信号和解调信号的功率谱密度图](https://i.imgur.com/KG8U6go.png)
可以看到,解调信号的频谱已经转换为基带信号的频谱,证明正交解调已经成功完成。
阅读全文