使用signal.medfilt的Python中位数过滤器应用程序错误

时间:2018-12-14 19:35:29

标签: python-3.x filter

我正在尝试将CS​​I值中的噪声降至最低。我生成了一些虚假的CSI值,并添加了一些随机错误。

我正在提供代码

import numpy as np
#import tkinter as Tk
import scipy as sp
import matplotlib.pyplot as plt
from scipy import signal


from scipy.fftpack import fft

#Generate fake CSI values

 csi_values =np.array([0 + 0j]*64)

 print(csi_values)

 csi_values[13] = .5 + .2j
 csi_values[12] =  .75 + .25j
 csi_values[11] = 1 + .35j
 csi_values[10] = 1.5 + .5j

 print(csi_values[10:14:1])
 print(csi_values)



 fft_value = fft(csi_values)
 print(fft_value)
 print(len(fft_value))  
 #print(fft_value)
 real_csi= abs(csi_values)
 mean_csi= np.mean(real_csi)

 print(real_csi)
 print(mean_csi)


 x_axis = np.linspace(0.0, 63,64)
 print(x_axis.shape,fft_value.shape)
 plt.plot(abs(fft_value))
 plt.grid()
 plt.show()



 #CSI Subcarrier selection based on average amplitude of all subcarriers

 csi_truncated = csi_values[abs(csi_values) > mean_csi]
 print(csi_truncated)

 #Removal of noise using median filter
 csi_error= csi_values + np.random.rand(64)
 print(csi_error)
  trim_csi = sp.signal.medfilt(csi_error,5)

但是我遇到以下错误

   File "python_check.py", line 54, in <module>
   trim_csi = sp.signal.medfilt(csi_error,5)
    File "/home/avishek/venv3/lib/python3.5/site-packages/scipy/signal/signaltools.py", line 893, in medfilt
    return sigtools._order_filterND(volume, domain, order)
    ValueError: order_filterND not available for this type

此错误的原因是什么?我猜我也在使用正确的软件包

1 个答案:

答案 0 :(得分:0)

最新的scipy / python仍然遇到相同的问题。 对于来这里的其他人:您可以切换到此功能

scipy.ndimage.filters.median_filter

执行相同的操作,但不会出现此错误。

相关问题