Class: SPCore::DFT
- Inherits:
-
Object
- Object
- SPCore::DFT
- Defined in:
- lib/spcore/transforms/dft.rb
Overview
Class Method Summary collapse
Class Method Details
.forward(input) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/spcore/transforms/dft.rb', line 7 def self.forward input input_size = input.size raise ArgumentError, "input.size is not even" unless (input_size % 2 == 0) output_size = input_size output = Array.new(output_size) output.each_index do |k| sum = Complex(0.0) input.each_index do |n| a = TWO_PI * n * k / input_size sum += Complex(input[n] * Math::cos(a), -input[n] * Math::sin(a)) end output[k] = sum end return output end |
.inverse(input) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/spcore/transforms/dft.rb', line 28 def self.inverse input input_size = input.size raise ArgumentError, "input.size is not even" unless (input_size % 2 == 0) output = Array.new(input_size) output_size = output.size output.each_index do |k| sum = Complex(0.0) input.each_index do |n| a = TWO_PI * n * k / input_size sum += Complex(input[n] * Math::cos(a), input[n] * Math::sin(a)) end output[k] = sum / output_size end return output end |