Class: Digiproc::BlackmanWindow
- Inherits:
-
WindowStrategy
- Object
- WindowStrategy
- Digiproc::BlackmanWindow
- Defined in:
- lib/strategies/window/blackman_window.rb
Overview
Blackman Window Used to improve digital filters by using a non-retangular frequency domain window
Constant Summary
Constants inherited from WindowStrategy
Instance Attribute Summary
Attributes inherited from WindowStrategy
#data, #equation, #size, #values
Instance Method Summary collapse
-
#find_size(freq) ⇒ Object
Given a freqency, return the required size of a BlackmanWindow.
-
#initialize(size: nil, norm_trans_freq: nil) ⇒ BlackmanWindow
constructor
Input Args size (Optional):: Numeric (default: nil), how many datapoings the window should have norm_trans_freq:: Numeric (default: nil), the desired transition frequency If you know what size of the the window that you need, you can input size without norm_trans_freq If you kow the desired transition frequency, the necessary size will be calculated for you based off of the window type so it is not necessary to enter the size.
-
#transition_width ⇒ Object
Return the transition width (in rad/s) based off of the size.
Methods inherited from WindowStrategy
#calculate, #make_odd, #to_signal
Constructor Details
#initialize(size: nil, norm_trans_freq: nil) ⇒ BlackmanWindow
Input Args
- size (Optional)
-
Numeric (default: nil), how many datapoings the window should have
- norm_trans_freq
-
Numeric (default: nil), the desired transition frequency
If you know what size of the the window that you need, you can input size without norm_trans_freq If you kow the desired transition frequency, the necessary size will be calculated for you based off of the window type so it is not necessary to enter the size
13 14 15 16 17 18 19 20 |
# File 'lib/strategies/window/blackman_window.rb', line 13 def initialize(size: nil , norm_trans_freq: nil) super(size: norm_trans_freq.nil? ? size : find_size(norm_trans_freq)) #size = @size + 2 #@equation = lambda { |n| 0.42 - 0.5 * Math.cos(2 * PI * (n + 1) / (size - 1)) + 0.08 * Math.cos(4*PI*(n + 1) / (size - 1)) } @equation = lambda { |n| 0.42 - 0.5 * Math.cos(2 * PI * (n) / (size - 1)) + 0.08 * Math.cos(4*PI*(n) / (size - 1)) } calculate @values = @values.take(@size) end |
Instance Method Details
#find_size(freq) ⇒ Object
Given a freqency, return the required size of a BlackmanWindow
23 24 25 26 |
# File 'lib/strategies/window/blackman_window.rb', line 23 def find_size(freq) size = 5.5 / freq make_odd(size.ceil) end |
#transition_width ⇒ Object
Return the transition width (in rad/s) based off of the size
29 30 31 |
# File 'lib/strategies/window/blackman_window.rb', line 29 def transition_width 5.5 / @size end |