class LowPassFilter
Attributes
filter_base[RW]
filtered_data[RW]
original_data[RW]
skip[RW]
Public Class Methods
new(data)
click to toggle source
# File lib/scbi_cominer/classes/low_pass_filter.rb, line 29 def initialize(data) @original_data = NArray.to_na(data) @filtered_data = nil @skip = nil @filter_base = 8 run end
Public Instance Methods
limits()
click to toggle source
# File lib/scbi_cominer/classes/low_pass_filter.rb, line 70 def limits mad,median = @filtered_data.mad_median if mad == 0 mad,mean = @filtered_data.mad_mean end desv = 1.4826 * mad return [median - desv, median + desv].sort end
run()
click to toggle source
# File lib/scbi_cominer/classes/low_pass_filter.rb, line 38 def run coef = FFTW3.fft(@original_data, -1,0)/@original_data.length if @skip.nil? @skip = (coef.length/4) end inc = (2.0 / (coef.length - @skip)); x = 1; # keep intact first components of coefs i=@skip while i<coef.length # el filtro reduce los componentes de alta frecuencia f = x ** @filter_base coef[i]=coef[i]*f x = x - inc; i +=1# era 2 porque en perl no usa num complejos end filtered = FFTW3.fft(coef, 1,0) @filtered_data=filtered.real @filtered_data[0] = @original_data[0] @filtered_data[@filtered_data.length-1] = @original_data[@original_data.length-1] end