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