Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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
为什么butterworth滤波器在R和Matlab中呈现不同的结果?_R_Matlab_Filter_Butterworth - Fatal编程技术网

为什么butterworth滤波器在R和Matlab中呈现不同的结果?

为什么butterworth滤波器在R和Matlab中呈现不同的结果?,r,matlab,filter,butterworth,R,Matlab,Filter,Butterworth,我试图对R中的数据使用20Hz低通滤波器,但当我使用filtfilt函数时,绘图与matlab不同 我在R中使用以下代码: fc<-20 fs<-100 Wn<-pi*fc/(2*fs) testar<- butter(5, Wn, type="low") L2<- signal::filtfilt(testar,Tabela$posicao) plot(Tabela$tempo, L2, type = "l", col="red") matlab中的绘图为:

我试图对R中的数据使用20Hz低通滤波器,但当我使用filtfilt函数时,绘图与matlab不同

我在R中使用以下代码:

fc<-20
fs<-100
Wn<-pi*fc/(2*fs)
testar<- butter(5, Wn, type="low")
L2<- signal::filtfilt(testar,Tabela$posicao)
plot(Tabela$tempo, L2, type = "l", col="red")
matlab中的绘图为:

R一:


为什么R one在图表的开头和结尾呈现这些变化?

我有预感,不同之处在于每个版本如何处理端部效应瞬态

您的信号具有较大的直流偏移(
~875
)。如果您认为录制前后的信号为零
0
。信号开始处的跳变由滤波器处理,并被视为伪影或结束效应。这些终端效应就是你在R版本的滤波信号中看到的

filtfilt
的R文档中可以看出,该版本很旧,可能不会最小化端部瞬变()。另一方面,MATLAB版本的
Filt
;引用MATLAB文档:


“通过匹配初始条件将启动和结束瞬态降至最低。不要将‘filtfilt’与微分器和希尔伯特FIR滤波器一起使用,因为这些滤波器的运行在很大程度上取决于它们的相位响应。”

您能澄清什么是Tabela$posicao或Tabela.posicao吗?我无法重现您的问题,因为它在MATLAB和RI用户中都未定义一个名为Tabela的Excel数据,而posicao是我必须筛选的专栏请提供一个可重现的示例。
fc=20;
fs=100;
Wn=pi*fc/(2*fs);
[b,a] = butter(5,Wn,'low');
posfilt= filtfilt(b,a,Tabela.posicao);