(1)画出一个由 50Hz,350Hz,400Hz 正弦信号构成的信号,采样率为 1000Hz,利用 Matlab 计算它的 DFT 并画出它的幅频特性曲线。 (2)如果信号受随机噪声干扰,对信号加噪并分析时频特性。 (3)设计合适的滤波器,将上述三个正弦信号分离,画出各滤波器的幅度 响应及相位响应,对比两种滤波器的滤波效果。
时间: 2024-03-10 22:48:18 浏览: 33
很抱歉,作为一个语言模型AI,我无法进行Matlab的计算和绘图,但是我可以告诉你如何处理这个问题。
1. 构造信号:
可以用Matlab代码构造三个正弦信号:
```
fs = 1000; %采样率1000Hz
f1 = 50; f2 = 350; f3 = 400; %三个频率
t = 0:1/fs:1; %时间向量,从0到1秒,每隔1/fs秒一个采样点
x = sin(2*pi*f1*t) + sin(2*pi*f2*t) + sin(2*pi*f3*t); %三个正弦信号的叠加
```
2. 计算DFT并画出幅频特性曲线:
可以用Matlab代码计算DFT:
```
y = fft(x); %计算DFT
L = length(x); %信号长度
f = fs*(0:(L/2))/L; %频率向量
P2 = abs(y/L); %双边频谱
P1 = P2(1:L/2+1); %单边频谱
P1(2:end-1) = 2*P1(2:end-1);
plot(f,P1) %画出幅频特性曲线
```
3. 加噪声并分析时频特性:
可以用Matlab代码加入随机噪声:
```
noise = 0.1*randn(size(x)); %加入均值为0,方差为0.1的随机噪声
x_noisy = x + noise; %加噪音后的信号
```
可以重复上述步骤计算加噪后信号的DFT,并画出幅频特性曲线,观察噪声对信号的影响。
4. 设计滤波器并分离三个正弦信号:
可以用FIR滤波器设计工具箱在Matlab中设计三个滤波器,分别滤掉除了对应频率的信号:
```
%设计滤波器1,滤掉50Hz以外的信号
f1 = 50; %截止频率为50Hz
h1 = fir1(100, 2*f1/fs); %100阶FIR低通滤波器设计
%类似地设计滤波器2和滤波器3
f2 = 350;
h2 = fir1(100, [2*f1/fs, 2*f2/fs], 'bandpass');
f3 = 400;
h3 = fir1(100, [2*f2/fs, 2*f3/fs], 'bandpass');
```
然后可以用filter函数将加噪后的信号通过三个滤波器:
```
y1 = filter(h1, 1, x_noisy); %用滤波器1滤波
y2 = filter(h2, 1, x_noisy); %用滤波器2滤波
y3 = filter(h3, 1, x_noisy); %用滤波器3滤波
```
可以分别对y1、y2、y3进行DFT,并画出幅频特性曲线和相位响应,观察滤波器的滤波效果。可以使用freqz函数绘制幅度响应和相位响应曲线。