matlab带通采样10.7MHzFM信号
时间: 2023-09-03 14:06:49 浏览: 137
以下是一个简单的 MATLAB 代码示例,用于带通采样10.7MHz的FM信号:
```matlab
% 生成10.7MHz的FM信号
fs = 44.1e6; % 采样率为44.1MHz
t = 0:1/fs:1; % 生成1秒的时间序列
fc = 10.7e6; % 载频频率为10.7MHz
fm = 1e3; % 调频信号频率为1kHz
kf = 75e3; % 调频常数为75kHz/V
m = sin(2*pi*fm*t); % 调频信号
s = cos(2*pi*fc*t + 2*pi*kf*cumsum(m)); % FM信号
% 带通滤波器参数
f1 = 10.69e6; % 通带下边界频率
f2 = 10.71e6; % 通带上边界频率
B = f2 - f1; % 带宽
f0 = (f1 + f2)/2; % 中心频率
N = 100; % FIR滤波器阶数
% 生成带通滤波器
h = fir1(N, [f1, f2]/(fs/2));
% 带通采样
fsd = 2*B; % 采样率为带宽的两倍
tsd = 0:1/fsd:1; % 生成1秒的时间序列
sd = s.*cos(2*pi*f0*t); % 取中心频率为f0的带通信号
sd = interp1(t, sd, tsd, 'spline'); % 插值得到采样信号
% 绘制信号和采样信号的频谱
NFFT = 2^nextpow2(length(s));
S = fft(s, NFFT)/length(s);
f = fs/2*linspace(0, 1, NFFT/2+1);
figure;
plot(f/1e6, 20*log10(abs(S(1:NFFT/2+1))));
hold on;
SD = fft(sd, NFFT)/length(sd);
plot(fsd/2/1e6+linspace(-0.5, 0.5, length(SD)), 20*log10(abs(SD)));
xlabel('Frequency (MHz)');
ylabel('Magnitude (dB)');
legend('Original Signal', 'Sampled Signal');
```
此代码将生成一个10.7MHz的FM信号,并对其进行带通采样。在此之后,它绘制了原始信号和采样信号的频谱,以便您可以查看它们的频谱响应。
阅读全文