1.输入信号A为两个单频信号a1、a2和高斯噪声叠加的混合谐波,a1频率为200Hz,幅度为10;a2频率为220Hz,幅度为20;高斯噪声方差为1。请设计A/D采样频率fs,满足采样后频谱没有混叠。使用MATLAB软件,画出采样后的时频波形;选择合适的采用点数,用FFT分析频域波形,并分析a1和a2的信噪比。
2.对输入信号A分别设计滤波器B1和B2。B1能通过单频信号a1,且能滤除a2;B2能通过单频信号a2,且能滤除a1。A/D采样频率保持不变,用MATLAB软件分别画出B1和B2滤波器的频域特性;选择合适的采用点数,用FFT分别分析B1和B2滤波后的频域波形,并分析a1和a2的信噪比。
3.对比题(1)和题(2)的仿真结果,如何提高滤波器B1和B2的性能?
在MATLAB中进行信号处理仿真,可以使用信号处理工具箱中的函数来实现。以下是针对每个问题的解决方案:
t = 0:1/fs:1
生成时域采样点,其中fs为采样频率。然后,我们可以使用x = 10*cos(2*pi*200*t) + 20*cos(2*pi*220*t) + sqrt(1)*randn(size(t))
生成输入信号A。接下来,我们可以使用plot(t, x)
绘制采样后的时域波形图。为了避免混叠,采样频率应满足奈奎斯特采样定理,即采样频率必须大于信号中最高频率的两倍。根据问题描述,最高频率为220Hz,所以可以选择采样频率fs=500Hz。然后,我们可以使用FFT函数对采样信号进行频域分析,计算a1和a2的信噪比。fs = 500; % 采样频率
t = 0:1/fs:1; % 生成时域采样点
x = 10*cos(2*pi*200*t) + 20*cos(2*pi*220*t) + sqrt(1)*randn(size(t)); % 生成输入信号 A
plot(t, x); % 绘制采样后的时域波形图
X = fft(x); % 对采样信号进行频域分析
X_mag = abs(X); % 取模
f = fs*(0:length(X_mag)-1)/length(X_mag); % 计算频率
plot(f, X_mag); % 绘制频域波形图
a1_mag = abs(X(find(f == 200))); % 获取 a1 的幅度
a2_mag = abs(X(find(f == 220))); % 获取 a2 的幅度
a1_SNR = a1_mag / std(x); % 计算 a1 的信噪比
a2_SNR = a2_mag / std(x); % 计算 a2 的信噪比
b1 = fir1(n1, f1, 'low')
设计滤波器B1,其中n1是滤波器阶数,f1是滤波器的截止频率。然后,我们可以使用y1 = filter(b1, 1, x)
将输入信号A通过滤波器B1。接下来,我们使用plot(f, abs(fft(y1)))
绘制B1滤波后的频域特性图。fs = 500; % 采样频率
t = 0:1/fs:1; % 生成时域采样点
x = 10*cos(2*pi*200*t) + 20*cos(2*pi*220*t) + sqrt(1)*randn(size(t)); % 生成输入信号 A
n1 = ...; % 设计滤波器 B1 的阶数
f1 = ...; % 设计滤波器 B1 的截止频率
b1 = fir1(n1, f1, 'low'); % 设计滤波器 B1
y1 = filter(b1, 1, x); % 将输入信号 A 通过滤波器 B1
plot(f, abs(fft(y1))); % 绘制 B1 滤波后的频域特性图
类似地,我们可以设计滤波器B2并绘制B2滤波后的频域特性图。代码和步骤与B1类似。