matlab滤波器滤不掉,带通滤波器无法在matlab中过滤不需要的频率
我正在制作一个带通滤波器,我根据正弦曲线创建了一些带有不需要的频率的信号:
Fs = 8e3; % Sampling Rate
fn = Fs/2; % Nyquist frequency
L = 1e3; % Length of signal
T = 1/Fs; % Sampling period
t = T*linspace(0,L,Fs); % Time domain
% Frequencies in Hz
f1 = 1500;
f2 = 700;
f3 = 2500;
f4 = 3500;
% Signal
x = 6*sin(2*pi*f1*t);
% Noise
noise = 3*sin(2*pi*f2*t)...
+ 2*sin(2*pi*f3*t)...
+ 1*sin(2*pi*f4*t);
x_noise = x + noise;
然后我创建一个Butterworth带通滤波器:
[b,a] = butter(10,[1000 2000]/fn,'bandpass');
带通响应(带freqz)的时间和频率空间信号如下所示:
我会从这里想出来,干脆做
xf = filter(b,a,x_noise);
我在这做错了什么?
这是完整的代码:
clear all
Fs = 8e3; % Sampling Rate
fn = Fs/2; % Nyquist frequency
L = 1e3; % Length of signal
T = 1/Fs; % Sampling period
t = T*linspace(0,L,Fs); % Time domain
% Frequencies in Hz
f1 = 1500;
f2 = 700;
f3 = 2500;
f4 = 3500;
% Signal
x = 6*sin(2*pi*f1*t);
% Noise
noise = 3*sin(2*pi*f2*t)...
+ 2*sin(2*pi*f3*t)...
+ 1*sin(2*pi*f4*t);
x_noise = x + noise;
subplot(221);
idx = 1:round(length(t)/30);
plot(t(idx),x(idx),t(idx),x_noise(idx));
xlabel('Time (s)'); ylabel('Signal Amplitudes');
legend('Original signal','Noisy signal');
% Frequency space
f = fn*linspace(0,1,L/2+1);
X = fft(x_noise)/L;
[b,a] = butter(10,[1000 2000]/fn,'bandpass');
h = abs(freqz(b,a,floor(L/2+1)));
subplot(222);
plot(f,abs(X(1:L/2+1)),f,h*max(abs(X)));
xlabel('Freq (Hz)'); ylabel('Frequency amplitudes');
legend('Fourier Transform of signal','Filter amplitude response');
% Filtered signal
xf = filter(b,a,x_noise);
subplot(223)
plot(t(idx),xf(idx));
xlabel('Time (s)'); ylabel('Signal Amplitudes');
legend('Filtered signal');
% Filtered in frequency space
Xf = abs(fft(xf)/L);
subplot(224);
plot(f,Xf(1:L/2+1),f,h*5e-6);
xlabel('Freq (Hz)'); ylabel('Frequency amplitudes');
legend('Fourier Transform of filtered signal','Bandpass');
matlab滤波器滤不掉,带通滤波器无法在matlab中过滤不需要的频率相关推荐
- matlab滤波器滤除低频直流信号,极低频滤波器MATLAB
我正在尝试创建0.1 Hz至50 Hz范围内的带通滤波器.我正在使用MATLAB中的filterbuilder工具,因此它输出的代码如下所示: function y = filter050(x) pe ...
- matlab滤波器滤除低频直流信号,对低频信号的滤波的方法
Ciobowu曾有帖子https://www.ilovematlab.cn/thread-202931-1-9.html提到如何对低频信号进行滤波,今又提出低频信号滤波出现的问题https://www ...
- Matlab滤波器的设计
在IIR滤波器设计过程中,通常利用模拟滤波器来设计数字滤波器,首先要根据滤波器的性能指标设计出相应的模拟滤波器的系统传递函数G(s),然后由传递函数G(s)经Z变换得到所需要的数字滤波器的离散型传递函 ...
- 直流侧电力有源滤波器滤除谐波干扰的原理及方案
直流 滤波器 谐波干扰 1 引言 随着电力电子装置的迅速发展,产生了两方面的问题:一是电力电子变流电路产生的谐波干扰已成为电力系统之中谐波的主要来源,谐波造成的危害日益严重.二是电力电子系统中的无源元 ...
- Matlab滤波器设计——基于filter函数的低通、高通、带通、带阻滤波器
文章目录 问题提出 一.低通滤波器 1.保留5Hz 2.运行结果 二.高通滤波器 1.保留30Hz 2.运行结果 三.带通滤波器 1.保留20Hz 2.运行结果 四.带阻滤波器 1.滤除5Hz和30H ...
- Matlab滤波器设计示例
目录 1. 概要 2. 低通滤波器设计例 with designfilt() 2.1 要点一:归一化频率 2.2 要点二:如何使用所生成的滤波器 3. designfilt() 的功能 3.1 能设计 ...
- matlab fir1 filter,Matlab滤波器设计
滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程.滤波器的实现包括滤波器结构的选择和滤波器参数的计算.只有完成了滤波器的设计和实现,才能最终完成数据的滤波. 滤波器设计的目标是实现数据序列的频率 ...
- matlab 滤波器设计 coe_FIR滤波器
FIR滤波器广泛应用于数字信号处理中,主要功能就是将不感兴趣的信号滤除,留下有用信号.FIR滤波器是全零点结构,系统永远稳定:并且具有线性相位的特征,在有效频率范围内所有信号相位上不失真.在无线通信收 ...
- matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...
用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...
最新文章
- Android Studio添加代码头注释使用
- 轻量级锁的加锁和解锁逻辑-自旋锁
- Android开发之通过WebView查看HTML源码的方法
- 看不懂简明python教程_简明python教程之Python文件头注释的含义,你肯定不懂
- php中,多维数组是什么意思,在PHP中回显多维数组
- 牛客网NOIP赛前集训营 第6场 T1 最长路
- 寻找绝对隐蔽的后门的办法 分享
- SNMPv3对安全威胁的分类
- 20175212 《Java程序设计》第2周学习总结
- 云计算的三大挑战:安全性、合规性和成本控制
- 计算机应用免费课件,计算机应用基础ppt课件 免费版
- 网络信息安全攻防实验室之基础关
- Python:SEIR传染病模型
- 计算机主机中的硬件组成部分,电脑的硬件组成部分及其作用各是什么
- 达梦数据库的备份还原
- 2021-11-09小程序的开发制作的价格是多少?
- 父进程回收子进程之wait()函数使用解读
- Python知识点总结——fractions(分数模块)
- LMS与RLS算法学习笔记
- char型与int的相互转化