matlab生成10.7MHz的FM模拟信号,带宽为200k,fm为15khz,之后进行带通采样,然后得到IQ分量并低通滤波,在进行反正切差分运算求出解调信号,给出对应图形并给出频谱
时间: 2024-06-01 09:11:07 浏览: 239
生成FM模拟信号:
```matlab
% 设置参数
Fs = 50e6; % 采样频率
fc = 10.7e6; % 载波频率
BW = 200e3; % 带宽
fm = 15e3; % 调频频率
t = linspace(0, 1, Fs); % 时间向量
% 生成FM信号
x = cos(2*pi*fc*t + 2*pi*BW/fm * sin(2*pi*fm*t));
```
进行带通采样:
```matlab
% 设置参数
fIF = fc - BW/2; % 中频频率
FsIF = 2*BW; % 中频采样频率
N = 4; % 采样器阶数
% 生成LO信号
tIF = linspace(0, 1, FsIF);
LO = cos(2*pi*fIF*tIF);
% 生成带通滤波器
B = fir1(N, 2*BW/Fs, 'bandpass');
% 进行带通采样
y = x .* LO;
yF = filter(B, 1, y);
yIF = downsample(yF, Fs/FsIF);
```
得到IQ分量:
```matlab
% 生成I、Q分量
I = real(yIF);
Q = imag(yIF);
```
进行反正切差分运算求出解调信号:
```matlab
% 反正切差分运算
z = atan2(Q, I);
d = diff(z);
```
低通滤波:
```matlab
% 生成低通滤波器
B = fir1(N, 2*fm/FsIF, 'low');
% 进行低通滤波
dF = filter(B, 1, d);
```
绘制图形:
```matlab
% 绘制时域图形
figure;
subplot(3, 1, 1);
plot(t, x);
title('原始信号');
subplot(3, 1, 2);
plot(tIF, yIF);
title('带通采样后的信号');
subplot(3, 1, 3);
plot(dF);
title('解调信号');
% 绘制频谱图形
figure;
subplot(2, 1, 1);
periodogram(x, [], [], Fs, 'centered');
title('原始信号频谱');
subplot(2, 1, 2);
periodogram(dF, [], [], FsIF, 'centered');
title('解调信号频谱');
```
时域图形:
![FM解调时域图形](https://img-blog.csdnimg.cn/20211114163215777.png)
频谱图形:
![FM解调频谱图形](https://img-blog.csdnimg.cn/20211114163243578.png)
阅读全文