Class: LowPassFilter
- Inherits:
-
Object
- Object
- LowPassFilter
- Defined in:
- lib/scbi_cominer/classes/low_pass_filter.rb
Instance Attribute Summary collapse
-
#filter_base ⇒ Object
Returns the value of attribute filter_base.
-
#filtered_data ⇒ Object
Returns the value of attribute filtered_data.
-
#original_data ⇒ Object
Returns the value of attribute original_data.
-
#skip ⇒ Object
Returns the value of attribute skip.
Instance Method Summary collapse
-
#initialize(data) ⇒ LowPassFilter
constructor
A new instance of LowPassFilter.
- #limits ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(data) ⇒ LowPassFilter
Returns a new instance of LowPassFilter.
29 30 31 32 33 34 35 36 |
# 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 |
Instance Attribute Details
#filter_base ⇒ Object
Returns the value of attribute filter_base.
27 28 29 |
# File 'lib/scbi_cominer/classes/low_pass_filter.rb', line 27 def filter_base @filter_base end |
#filtered_data ⇒ Object
Returns the value of attribute filtered_data.
27 28 29 |
# File 'lib/scbi_cominer/classes/low_pass_filter.rb', line 27 def filtered_data @filtered_data end |
#original_data ⇒ Object
Returns the value of attribute original_data.
27 28 29 |
# File 'lib/scbi_cominer/classes/low_pass_filter.rb', line 27 def original_data @original_data end |
#skip ⇒ Object
Returns the value of attribute skip.
27 28 29 |
# File 'lib/scbi_cominer/classes/low_pass_filter.rb', line 27 def skip @skip end |
Instance Method Details
#limits ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# 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 ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# 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 |