matlab设计10.7MHzFM信号的带通采样
时间: 2023-10-30 08:08:47 浏览: 142
以下是在MATLAB中设计一个10.7MHz FM信号的带通采样的代码:
```matlab
fc = 10.7e6; % 载波频率
fm = 50e3; % 调制频率
Fs = 2*fc; % 采样频率
t = 0:1/Fs:0.1; % 时间向量
kf = 10e3; % 调制指数
% FM信号生成
x = cos(2*pi*fc*t + 2*pi*kf*cumsum(sin(2*pi*fm*t)));
% 带通滤波器设计
Wp = [2*pi*(fc-5e3) 2*pi*(fc+5e3)]/Fs; % 通带截止频率
Ws = [2*pi*(fc-10e3) 2*pi*(fc+10e3)]/Fs; % 阻带截止频率
Rp = 1; % 通带最大衰减
Rs = 40; % 阻带最小衰减
[n, Wn] = buttord(Wp, Ws, Rp, Rs); % 计算巴特沃斯滤波器阶数和截止频率
[b, a] = butter(n, Wn); % 巴特沃斯滤波器系数
% 带通采样
f0 = fc - 5e3; % 带通中心频率
T0 = 1/f0; % 带通周期
Ts = T0/2; % 带通采样间隔
n_samples = length(x); % 采样点数
sampled = zeros(1, n_samples);
for i = 1:n_samples
if mod(t(i)/T0, 1) < Ts/T0
sampled(i) = x(i);
end
end
% 带通滤波
filtered = filter(b, a, sampled);
% 画图
figure;
subplot(3,1,1);
plot(t, x);
title('FM信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(3,1,2);
plot(t, sampled);
title('带通采样后的信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(3,1,3);
plot(t, filtered);
title('带通滤波后的信号');
xlabel('时间 (s)');
ylabel('幅度');
```
这个代码首先生成了一个10.7MHz的FM信号,然后设计了一个巴特沃斯带通滤波器,以保留5kHz到15kHz之间的频率成分。接着,使用带通采样方法,对这个信号进行了采样,采样间隔为带通周期的一半。最后,对采样得到的信号进行带通滤波,以恢复原始信号。
运行代码后,会得到一个包含三个子图的图形窗口。第一个子图是原始的10.7MHz FM信号,第二个子图是经过带通采样后的信号,第三个子图是经过带通滤波后的信号。可以看到,带通采样和带通滤波后的信号已经恢复了原始信号的形状和频率成分。
阅读全文