10.7MHzFM中频信号的AD带通采样的MATLAB
时间: 2023-10-07 15:14:45 浏览: 85
代码如下:
% 设置采样频率和抽取因子
fs = 44.1e3; % 采样频率
N = 5; % 抽取因子
% 生成10.7MHz FM中频信号
t = 0:1/fs:1-1/fs; % 时间向量
fc = 10.7e6; % 载频频率
fm = 1e3; % 调制信号频率
kf = 2*pi*5e3; % 调频灵敏度
m = sin(2*pi*fm*t); % 调制信号
x = cos(2*pi*(fc + kf*cumsum(m)).*t); % FM信号
% 设计带通滤波器
f1 = 10e3; % 通带起始频率
f2 = 20e3; % 通带结束频率
Wp = [f1 f2]/(fs/2); % 归一化通带频率
Rp = 1; % 通带最大衰减
[n,Ws] = buttord(Wp,[f1-2e3 f2+2e3]/(fs/2),1,40); % 求取巴特沃斯滤波器的阶数和截止频率
[b,a] = butter(n,Ws); % 设计巴特沃斯滤波器
% 采样和抽取
Ts = 1/fs*N; % 抽样周期
xn = x.*cos(2*pi*fc*t); % 乘上一个cos函数,得到IQ信号
xn = filter(b,a,xn); % I信号经过带通滤波器
xn = xn(1:N:end); % 进行抽取
yn = x.*sin(2*pi*fc*t); % Q信号
yn = filter(b,a,yn); % Q信号经过带通滤波器
yn = yn(1:N:end); % 进行抽取
% 绘制时域波形
figure;
subplot(2,1,1);
plot(t,x); xlabel('Time(s)'); ylabel('Amplitude'); title('FM signal');
subplot(2,1,2);
plot(t(1:N:end),xn); xlabel('Time(s)'); ylabel('Amplitude'); title('I signal');
figure;
subplot(2,1,1);
plot(t,x); xlabel('Time(s)'); ylabel('Amplitude'); title('FM signal');
subplot(2,1,2);
plot(t(1:N:end),yn); xlabel('Time(s)'); ylabel('Amplitude'); title('Q signal');
% 绘制频域波形
xf = fft(x);
yf = fft(xn + 1i*yn);
xf = fftshift(xf)/length(x);
yf = fftshift(yf)/length(xn);
f = linspace(-fs/2,fs/2,length(x));
figure;
subplot(2,1,1);
plot(f,20*log10(abs(xf))); xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)'); title('FM signal');
subplot(2,1,2);
plot(f,20*log10(abs(yf))); xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)'); title('IQ signal');
阅读全文