在matlab上产生128个样点的时间序列,该时间序列为2个正弦信号的叠加,采样间隔 T =1ms,频率分别为50与120Hz;简单建立一个滤波器,将50Hz频率的信号进行压制。注意,我们之前所设都是数字频率(0-π),因此,需要将模拟频率转换成数字频率 利用 FIR 滤波器实现频率信号的压制,不难绘制出叠加后的信号时间序列
时间: 2024-01-10 17:04:16 浏览: 193
MATLAB.rar_matlab产生信号_产生正弦信号_正弦_正弦 matlab_正弦信号
好的,我会尽力回答您的问题。首先,我们可以使用以下代码在 MATLAB 中生成 128 个样点的时间序列:
```
t = 0:0.001:0.127; % 时间序列
f1 = 50; % 第一个正弦信号频率
f2 = 120; % 第二个正弦信号频率
x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 叠加信号
```
接下来,我们需要将 50Hz 频率的信号进行压制,可以使用 FIR 滤波器实现。为了将模拟频率转换成数字频率,我们可以使用以下公式:
```
f_digital = f_analog / (fs/2)
```
其中,`f_digital` 是数字频率,`f_analog` 是模拟频率,`fs` 是采样率。根据这个公式,我们可以计算出 50Hz 和 120Hz 对应的数字频率:
```
f1_digital = f1 / 500; % 50Hz 对应的数字频率
f2_digital = f2 / 500; % 120Hz 对应的数字频率
```
接下来,我们可以使用 `fir1` 函数生成一个长度为 31 的 FIR 滤波器,将 50Hz 频率的信号进行压制:
```
b = fir1(30, [0.45 0.55], 'stop'); % 生成 FIR 滤波器
y = filter(b, 1, x); % 进行滤波
```
最后,我们可以使用 `plot` 函数绘制出叠加后的信号和滤波后的信号的时间序列:
```
subplot(2, 1, 1); % 绘制叠加后的信号
plot(t, x);
xlabel('时间(s)');
ylabel('幅值');
title('叠加后的信号');
subplot(2, 1, 2); % 绘制滤波后的信号
plot(t, y);
xlabel('时间(s)');
ylabel('幅值');
title('滤波后的信号');
```
这样,我们就可以得到叠加后的信号和滤波后的信号的时间序列了。希望我的回答能够帮助到您!
阅读全文