Sha256: be64d413621f8aa70580eed6468751cb80a03ea02ed6e26c52241139d1d22daa

Contents?: true

Size: 1.29 KB

Versions: 7

Compression:

Stored size: 1.29 KB

Contents

# Sample an analog signal, turn into digital signal and calculate the FFT
plt = Digiproc::QuickPlot
analog_signal_eqn = ->(t){ (t >= 0 and t <= 0.1) ? (100 * t * Math.cos(Math::PI*2.5*t)) : 0 }

analog_signal_eqn = ->(t){ Math.cos(2*Math::PI * 50 * t) + Math.cos(2 * Math::PI * 1250 * t) }

analog_signal = Digiproc::AnalogSignal.new(eqn: analog_signal_eqn, sample_rate: 0.001, size: 1000)

digital_signal = analog_signal.to_ds

fft = digital_signal.fft

fft.plot_magnitude(path: './examples/analog_signals/')

rate = 0.01
size = 1000
fn = ->(x){ Math.sin(x) }
as64 = Digiproc::AnalogSignal.new(eqn: fn, sample_rate: rate, size: size, quantization_bits: 64, quant_max: 1, quant_min: -1)
as8 = Digiproc::AnalogSignal.new(eqn: fn, sample_rate: rate, size: size, quantization_bits: 8, quant_max: 1, quant_min: -1)
as4 = Digiproc::AnalogSignal.new(eqn: fn, sample_rate: rate, size: size, quantization_bits: 4, quant_max: 1, quant_min: -1)
t = Digiproc::Functions.linspace(0, rate * size, size)
plt = Digiproc::Rbplot.line(t, as64.digitize, "64 bits")
plt.add_line(t, as8.digitize, '8 bits')
plt.add_line(t, as4.digitize, '4 bits')
plt.path('./examples/analog_signals/')
plt.title('Quantization Outputs')
plt.xlabel('time (s)')
plt.ylabel('magnitude')
plt.xsteps(10)
plt.theme(:dark)
plt.show

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
digiproc-0.2.5 examples/analog_signals/analog_to_digital.rb
digiproc-0.2.4 examples/analog_signals/analog_to_digital.rb
digiproc-0.2.3 examples/analog_signals/analog_to_digital.rb
digiproc-0.2.2 examples/analog_signals/analog_to_digital.rb
digiproc-0.2.1 examples/analog_signals/analog_to_digital.rb
digiproc-0.2.0 examples/analog_signals/analog_to_digital.rb
digiproc-0.1.0 examples/analog_signals/analog_to_digital.rb