Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 滤波器性能分析_Matlab_Filter_Filtering_Theory_Digital Filter - Fatal编程技术网

Matlab 滤波器性能分析

Matlab 滤波器性能分析,matlab,filter,filtering,theory,digital-filter,Matlab,Filter,Filtering,Theory,Digital Filter,我正在研究一些实验数据,在某些时候,这些数据需要进行时间积分,然后进行高通滤波,以消除积分和不需要的直流分量带来的低频干扰 我的工作目标与过滤无关,但我仍然想更详细地分析我使用的过滤器,以给出一些理由,例如,激励我为什么选择使用四阶过滤器而不是更高/更低的过滤器 这是我正在使用的过滤器: delta_t = 1.53846e-04; Fs = 1/delta_t; cut_F = 8; Wn = cut_F/(Fs/2); ftype = 'high'; [b,a] = butter(4,Wn

我正在研究一些实验数据,在某些时候,这些数据需要进行时间积分,然后进行高通滤波,以消除积分和不需要的直流分量带来的低频干扰

我的工作目标与过滤无关,但我仍然想更详细地分析我使用的过滤器,以给出一些理由,例如,激励我为什么选择使用四阶过滤器而不是更高/更低的过滤器

这是我正在使用的过滤器:

delta_t = 1.53846e-04;
Fs = 1/delta_t;
cut_F = 8; 
Wn = cut_F/(Fs/2);
ftype = 'high';
[b,a] = butter(4,Wn,ftype);
filtered_signal = filtfilt(b,a,signal);
我已经看过这里了:为了学习一些关于滤波器的知识,我从来没有上过信号处理的课程,我使用了

fvtool(b,a)
要查看脉冲响应,请使用阶跃响应ecc。我用过的过滤器的名称

问题是我不知道如何解读这些情节

我要找什么

我如何理解过滤器是否良好?我没有任何关于滤波器性能的规范,我只知道我能接受的最低频率是5赫兹


比较不同过滤器的哪些功能有助于激发选择

我看到您正在开始学习有关滤波器的Uni DSP课程: 首先需要记住的是,Matlab只能使用有限值进行模拟,因此从技术上讲,您看到的结果都是离散的。有4个因素会影响你的过滤结果,告诉你你的过滤器是好是坏,在设计一个有限的响应滤波器时,你将学会/必须考虑:

1、过滤器的类型,即汉明、巴特沃斯、布莱克曼、汉宁等 2、决定滤波器分辨率的滤波器系数数 3、理想情况下原始信号的采样频率,如果采样频率无限大,则可以有完美的滤波器;由于上述原因,在Matlab中不可能实现,但您可以通过将其设置得非常高来模拟其效果 4、截止频率

您可以使用这4个参数,这样您的过滤器就可以执行您希望它执行的操作

因此,理论来了: 在主瓣的宽度与滤波器的频谱泄漏之间有一个折衷。这个想法是,你有一些频率的信号,你想过滤掉不想要的,即你的直流噪声,并保留你想要的,但如果你想要的信号频率太低,以至于非常接近直流噪声呢。如果你有一个设计糟糕的滤波器,你将无法过滤掉直流分量。为了设计一个好的滤波器,你需要为你的滤波器系数、滤波器类型、甚至截止频率找到一个最佳的数目,以确保你的滤波器按照你想要的方式工作

这是我以前写过的一个低通滤波器,你可以通过过滤不同类型的信号并绘制响应图来使用滤波器

N = 21; %number of filter coefficients
fc = 4000;  %cut-off frequency
f_sampling = fs; %sampling freq
Fc = fc/f_sampling;
n = -(N-1)/2:(N-1)/2;
delta = [zeros(1,(N-1)/2) 1 zeros(1,(N-1)/2)];
h = delta - 2*Fc*sinc(2*n*Fc);
output = filter(h,1,yoursignal);
要绘制响应,您需要使用DFT或FFTin Matlab在频域中绘制输出,并查看信号是如何由于泄漏等原因而失真的

NFFT=256;           % FFT length
output=1/N*abs(fft(output,NFFT)).^2;      % PSD estimate using FFT
这就是所谓的周期图,当你绘图时,你可能想对它做10*log10,这样看起来更好


希望您在课堂上表现出色。

谢谢您的回答,但我关心的问题与过滤器性能分析有关,以便调整您提到的参数