半带低通滤波器matlab代码
时间: 2023-09-20 16:05:24 浏览: 45
function [y] = halfband_lowpass(x)
% 半带低通滤波器
% 输入参数:x——输入信号
% 输出参数:y——滤波后的信号
%
% 设计参数:
% 采样率fs = 8000Hz
% 截止频率f = 1000Hz
% 通带衰减dB = 3dB
% 阻带衰减dB = 60dB
fs = 8000; % 采样率
f = 1000; % 截止频率
Rp = 3; % 通带衰减
Rs = 60; % 阻带衰减
% 计算归一化截止频率
Wp = f / (fs / 2);
% 计算归一化通带截止频率和阻带截止频率
Wp1 = 0.5 * Wp;
Ws1 = 0.6 * Wp;
% 计算通带和阻带的最小满足条件的阶数
[n1, Wn1] = buttord(Wp1, Ws1, Rp, Rs);
% 计算滤波器系数
[b1, a1] = butter(n1, Wn1, 'low');
% 过滤信号
y = filter(b1, a1, x);
end
相关问题
iir低通滤波器matlab代码
以下是一个IIR低通滤波器的MATLAB代码示例:
```matlab
% 设计IIR低通滤波器
fs = 1000; % 采样频率
fc = 100; % 截止频率
[b, a] = butter(6, fc/(fs/2), 'low'); % 6阶Butterworth低通滤波器
% 生成测试信号
t = 0:1/fs:1-1/fs; % 时间向量
x = sin(2*pi*50*t) + sin(2*pi*120*t); % 生成两个正弦波
y = filter(b, a, x); % 用IIR低通滤波器滤波
% 绘制结果
figure;
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅值');
subplot(2,1,2);
plot(t, y);
title('滤波后信号');
xlabel('时间 (s)');
ylabel('幅值');
```
该代码使用了MATLAB内置的`butter`函数来设计6阶Butterworth低通滤波器,然后使用`filter`函数将信号进行滤波。最后,使用MATLAB的绘图函数将原始信号和滤波后的信号绘制在同一张图上。
低通滤波器matlab代码
下面是一个基本的低通滤波器的 MATLAB 代码示例:
```matlab
% 定义输入信号
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间向量
f = 5; % 信号频率
x = sin(2*pi*f*t); % 生成正弦波信号
% 定义滤波器
fc = 50; % 截止频率
[b,a] = butter(10,fc/(fs/2),'low'); % 10阶巴特沃斯低通滤波器
% 应用滤波器
y = filter(b,a,x); % 滤波后的信号
% 绘制结果
figure
subplot(2,1,1)
plot(t,x)
title('原始信号')
xlabel('时间 (s)')
ylabel('幅度')
subplot(2,1,2)
plot(t,y)
title('滤波后的信号')
xlabel('时间 (s)')
ylabel('幅度')
```
在这个示例中,我们首先定义了一个正弦波信号作为输入信号。然后,我们使用 `butter` 函数定义了一个 10 阶巴特沃斯低通滤波器,并将其截止频率设置为 50 Hz。最后,我们使用 `filter` 函数将输入信号和滤波器应用于信号,得到滤波后的输出信号 `y`。最后,我们将原始信号和滤波后的信号绘制在同一张图中以进行比较。