Sha256: ca0dcdaf044b96f11fc91193ef9ab0a43e1a37260aa70185f2aad4d8a81383ed

Contents?: true

Size: 1001 Bytes

Versions: 22

Compression:

Stored size: 1001 Bytes

Contents

#!/usr/bin/env ruby
# Transfer function of a RC low-pass filter
require("gsl")
include GSL::CONST::NUM

class RC_LPF
  def initialize(r, c)
    @r = r
    @c = c
    @fp = 1.0/(2*Math::PI*r*c)
    @omegap = 1.0/(r*c)
    puts("Pole at #{fp} Hz")
  end

  def Vout(f)
    if f.class == GSL::Vector
      out = GSL::Vector::Complex[f.size]
      i = 0
      f.each do |freq|
        a = 1.0/GSL::Complex[1.0, freq/@fp]
        out[i] = a
        i += 1
      end
      return out
    else
      1.0/GSL::Complex(1.0, f/@fp)
    end
  end

  attr_reader :r, :c, :fp
end

# Create RC filter
R = 1*KILO    # 1 [kOhm]
C = 1*MICRO   # 1 [muF]
lpf = RC_LPF.new(R, C)

# Frequency, 1Hz - 10kHz, 100 divisions
f = GSL::Vector.logspace2(1, 10*KILO, 100)

# Transfer function
tf = lpf.Vout(f)

GSL::graph([f, tf.amp.dB], "-C -l x -g 3 -y -100 10 -X 'Frequency [Hz]' -Y 'dB' --toggle-rotate-y-label")
GSL::graph([f, tf.phase/Math::PI], "-C -l x -g 3 -X 'Frequency [Hz]' -Y 'Phase [Pi]' --toggle-rotate-y-label")


Version data entries

22 entries across 22 versions & 4 rubygems

Version Path
gsl-2.1.0.3 examples/complex/RC-lpf.rb
gsl-2.1.0.2 examples/complex/RC-lpf.rb
gsl-2.1.0.1 examples/complex/RC-lpf.rb
gsl-2.1.0 examples/complex/RC-lpf.rb
gsl-1.16.0.6 examples/complex/RC-lpf.rb
rb-gsl-1.16.0.5 examples/complex/RC-lpf.rb
rb-gsl-1.16.0.4 examples/complex/RC-lpf.rb
rb-gsl-1.16.0.3 examples/complex/RC-lpf.rb
rb-gsl-1.16.0.3.rc1 examples/complex/RC-lpf.rb
gsl-nmatrix-1.15.3.2 examples/complex/RC-lpf.rb
gsl-nmatrix-1.15.3.1 examples/complex/RC-lpf.rb
rb-gsl-1.16.0.2 examples/complex/RC-lpf.rb
rb-gsl-1.16.0.1 examples/complex/RC-lpf.rb
rb-gsl-1.16.0 examples/complex/RC-lpf.rb
rb-gsl-1.15.3.2 examples/complex/RC-lpf.rb
rb-gsl-1.15.3.1 examples/complex/RC-lpf.rb
blackwinter-gsl-1.15.3.2 examples/complex/RC-lpf.rb
gsl-nmatrix-1.15.3.0 examples/complex/RC-lpf.rb
gsl-1.15.3 examples/complex/RC-lpf.rb
gsl-1.14.7 examples/complex/RC-lpf.rb