在python中复制matlab过滤器

2024-05-13 02:19:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一个matlab过滤器脚本重新编写到python中,并且有非常不同的输出。有人知道如何使这些功能相似吗

进行了一些初步计算,以找到等效波纹和其他因素

Python脚本:

from scipy import signal
import math as m
import matplotlib.pyplot as plt    

# Variable Values:
total_ripple = -20*m.log10(0.001) #get decibels
fsamp = 100
Nyqu = fsamp/2
trans_width = (0.7 - 0.1)/Nyqu
cut = (0.7+0.1)/2*(Nyqu)

# Script:
numtaps, beta = signal.kaiserord(total_ripple, trans_width)
taps = signal.firwin(numtaps, cutoff=cut, width = trans_width,  fs = fsamp, window=('kaiser',numtaps+1, beta), scale=False, pass_zero=True)
filtered_data = (signal.lfilter(taps, 1, data1, axis = 0)).tolist()

Matlab脚本:

mags = [1, 0]
devs = [0.001, 0.1]
fcuts = [0.1 0.7]
fsamp = 100
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');
filteredData = filter(hh,1,data);

(编辑:添加变量值) 我知道FCUT在matlab和python之间会有所不同。Python只接受阻带的单个分贝fcuts值。简单地绘制水龙头&;hh给出了不同的图。与实际数据的最终曲线图也不同


Tags: import脚本transsignalashhwidthbeta