10.7MHz的FM中频信号用ADC进行带通采样的matlab代码
时间: 2024-05-31 08:07:28 浏览: 58
% 假设采样频率为100MHz,带宽为20MHz
fs = 100e6;
fc = 10.7e6;
bw = 20e6;
% 构造带通滤波器
N = 100; % 滤波器阶数
Wn = [fc-bw/2 fc+bw/2]/(fs/2);
h = fir1(N, Wn, 'bandpass');
fvtool(h); % 显示滤波器特性
% 读取信号文件
filename = 'fm_if_signal.dat';
fid = fopen(filename, 'rb');
data = fread(fid, [2, inf], 'float')'; % 读取成2列,每列代表实部和虚部
fclose(fid);
% 对实部和虚部分别进行滤波
y1 = filter(h, 1, data(:,1)); % 实部滤波输出
y2 = filter(h, 1, data(:,2)); % 虚部滤波输出
% 合并实部和虚部
y = y1 + 1i*y2;
% 绘制频谱图
NFFT = 1024; % FFT点数
Y = fft(y, NFFT);
f = fs/2*linspace(0,1,NFFT/2+1);
figure;
plot(f, 2*abs(Y(1:NFFT/2+1)));
xlabel('频率(Hz)');
ylabel('幅度');
title('FM中频信号频谱');
% 采样
fsd = 2*bw; % 采样频率等于带宽的两倍
T = 1/fsd;
n = 0:floor(length(y)/T)-1;
x = y(floor(n*T)+1);
% 绘制采样后的信号频谱图
X = fft(x, NFFT);
figure;
plot(f, 2*abs(X(1:NFFT/2+1)));
xlabel('频率(Hz)');
ylabel('幅度');
title('采样后的信号频谱');
% 绘制采样后的信号波形图
figure;
t = n*T;
plot(t, real(x));
xlabel('时间(s)');
ylabel('幅度');
title('采样后的信号波形');
阅读全文