matlab带通采样FM信号
时间: 2023-09-12 09:03:44 浏览: 96
这里给出一个简单的带通采样FM信号的MATLAB代码:
```matlab
fs = 10000; % 采样率
fc = 1000; % 载波频率
fm = 50; % 调制频率
kf = 50; % 调制指数
B = 200; % 带宽
T = 1/fs; % 采样周期
t = 0:T:1; % 时间序列
% 生成调制信号
m = cos(2*pi*fm*t);
% 生成FM信号
f = cos(2*pi*(fc+kf*cumsum(m))*t);
% 带通滤波
[b,a] = butter(2,[fc-B/2,fc+B/2]/fs*2,'bandpass');
y = filter(b,a,f);
% 绘制原始信号和带通采样信号的时域和频域图像
figure;
subplot(2,2,1);
plot(t,m);
title('调制信号');
subplot(2,2,2);
plot(t,f);
title('FM信号');
subplot(2,2,3);
plot(t,y);
title('带通采样信号');
subplot(2,2,4);
N = length(t);
faxis = linspace(-fs/2,fs/2,N);
Y = fftshift(fft(y))/N;
plot(faxis,abs(Y));
title('带通采样信号频谱');
```
代码中先生成调制信号$m(t)=\cos(2\pi f_mt)$,然后使用累积求和的方式生成FM信号$f(t)=\cos[2\pi(f_c+k_f\int_0^t m(\tau)d\tau)t]$。接着使用带通滤波器将信号$f(t)$的带宽限制在$[f_c-B/2,f_c+B/2]$范围内,得到带通采样信号$y(t)$。最后绘制原始信号、FM信号和带通采样信号的时域和频域图像。
阅读全文