我该如何处理R中freqz返回的NaN?
我正在研究一种优化方法来设计数字滤波器,并使用我该如何处理R中freqz返回的NaN?,r,algorithm,matlab,frequency-analysis,digital-filter,R,Algorithm,Matlab,Frequency Analysis,Digital Filter,我正在研究一种优化方法来设计数字滤波器,并使用信号包中的freqz来评估候选滤波器。然而,对于freqz给出的响应,我得到了NaN的。这对我来说是个大问题,因为我需要计算这个响应的均方误差 下面的过滤器波纹管就是一个例子。响应的第一点是NaN R代码: b <- c(-100.00000, 62.92546, -73.64395, -82.57045, 35.11388, -100.00000) a <- c(100, 100, 100, -100, -100, -100) r &l
信号
包中的freqz
来评估候选滤波器。然而,对于freqz
给出的响应,我得到了NaN的
。这对我来说是个大问题,因为我需要计算这个响应的均方误差
下面的过滤器波纹管就是一个例子。响应的第一点是NaN
R代码:
b <- c(-100.00000, 62.92546, -73.64395, -82.57045, 35.11388, -100.00000)
a <- c(100, 100, 100, -100, -100, -100)
r <- freqz(b,a)
r$h[1]
b = [-100.00000, 62.92546, -73.64395, -82.57045, 35.11388, -100.00000]
a = [100, 100, 100, -100, -100, -100]
[h, ~] = freqz(b,a)
h(1)
我的理解是,由于freqz
是根据下面的公式进行计算的,因此必须发生的是分母上的值接近于零(请注意,a
中的系数相加等于零),而不是+/-Inf
(如Matlab所做)它错误地返回了NaN
底线是,我认为它应该给出与Matlab相同的响应
解决问题(与buts一起) 到目前为止,这是我所做的工作:
r <- freqz(b,a)
if(anyNA(hw$h)){
r$h[is.nan(r$h)] <- Inf
}
我不明白,
freqz(b,a)
正如我所解释的。你没有提到freqz
来自哪里的软件包。所以你得猜一猜。我明白了,对不起,这是信号包。我已经更新了描述。
platform x86_64-apple-darwin13.4.0
arch x86_64
os darwin13.4.0
system x86_64, darwin13.4.0
status
major 3
minor 2.3
year 2015
month 12
day 10
svn rev 69752
language R
version.string R version 3.2.3 (2015-12-10)