← Back

Module lib

<p>Joule Standard Library - Digital Signal Processing Comprehensive signal processing capabilities for audio, communications, and analysis</p>

struct Signal

Source: lib.joule:21

fn new(data: Vec<f64>, sample_rate: f64) -> Self

Create new signal from samples

Source: lib.joule:30

fn from_iter<I: IntoIterator<Item = f64>>(iter: I, sample_rate: f64) -> Self

Create signal from iterator

Source: lib.joule:35

fn zeros(length: usize, sample_rate: f64) -> Self

Create zero signal of given length

Source: lib.joule:43

fn ones(length: usize, sample_rate: f64) -> Self

Create ones signal of given length

Source: lib.joule:51

fn sine(frequency: f64, duration: f64, sample_rate: f64, amplitude: f64, phase: f64) -> Self

Source: lib.joule:60

fn cosine(frequency: f64, duration: f64, sample_rate: f64, amplitude: f64, phase: f64) -> Self

Source: lib.joule:73

fn square(frequency: f64, duration: f64, sample_rate: f64, amplitude: f64, duty_cycle: f64) -> Self

Source: lib.joule:86

fn sawtooth(frequency: f64, duration: f64, sample_rate: f64, amplitude: f64) -> Self

Source: lib.joule:104

fn triangle(frequency: f64, duration: f64, sample_rate: f64, amplitude: f64) -> Self

Source: lib.joule:118

fn white_noise(duration: f64, sample_rate: f64, amplitude: f64) -> Self

Source: lib.joule:132

fn pink_noise(duration: f64, sample_rate: f64, amplitude: f64) -> Self

Source: lib.joule:148

fn chirp(

Source: lib.joule:175

fn impulse(length: usize, sample_rate: f64, position: usize, amplitude: f64) -> Self

Generate impulse

Source: lib.joule:207

fn step(length: usize, sample_rate: f64, position: usize, amplitude: f64) -> Self

Generate step function

Source: lib.joule:216

fn len(&self) -> usize

Get signal length in samples

Source: lib.joule:225

fn is_empty(&self) -> bool

Check if signal is empty

Source: lib.joule:230

fn duration(&self) -> f64

Get signal duration in seconds

Source: lib.joule:235

fn nyquist(&self) -> f64

Get Nyquist frequency

Source: lib.joule:240

fn time(&self) -> Vec<f64>

Get time vector

Source: lib.joule:245

fn map<F: Fn(f64) -> f64>(&self, f: F) -> Self

Source: lib.joule:253

fn map_indexed<F: Fn(usize, f64) -> f64>(&self, f: F) -> Self

Source: lib.joule:262

fn add(&self, other: &Signal) -> Self

Source: lib.joule:271

fn subtract(&self, other: &Signal) -> Self

Source: lib.joule:288

fn multiply(&self, other: &Signal) -> Self

Source: lib.joule:305

fn scale(&self, factor: f64) -> Self

Source: lib.joule:318

fn energy(&self) -> f64

Compute signal energy

Source: lib.joule:326

fn power(&self) -> f64

Compute signal power

Source: lib.joule:331

fn rms(&self) -> f64

Compute RMS (root mean square)

Source: lib.joule:340

fn mean(&self) -> f64

Compute mean

Source: lib.joule:345

fn variance(&self) -> f64

Compute variance

Source: lib.joule:354

fn std_dev(&self) -> f64

Compute standard deviation

Source: lib.joule:364

fn peak(&self) -> f64

Find peak value

Source: lib.joule:369

fn min(&self) -> f64

Find minimum value

Source: lib.joule:374

fn peak_to_peak(&self) -> f64

Find peak-to-peak amplitude

Source: lib.joule:379

fn remove_dc(&self) -> Self

Source: lib.joule:385

fn normalize_peak(&self) -> Self

Source: lib.joule:395

fn normalize_rms(&self) -> Self

Source: lib.joule:406

fn clip(&self, min: f64, max: f64) -> Self

Source: lib.joule:417

fn delay(&self, samples: usize) -> Self

Source: lib.joule:426

fn advance(&self, samples: usize) -> Self

Source: lib.joule:437

fn reverse(&self) -> Self

Source: lib.joule:447

fn concatenate(&self, other: &Signal) -> Self

Source: lib.joule:456

fn segment(&self, start: usize, length: usize) -> Self

Extract segment

Source: lib.joule:466

fn zero_pad(&self, length: usize) -> Self

Source: lib.joule:477

fn pad_to_power_of_2(&self) -> Self

Source: lib.joule:492

enum ChirpMethod

Source: lib.joule:500

struct ComplexSignal

Source: lib.joule:515

fn new(i: Vec<f64>, q: Vec<f64>, sample_rate: f64) -> Self

Create from I/Q data

Source: lib.joule:526

fn from_real(signal: &Signal) -> Self

Create from real signal (Q = 0)

Source: lib.joule:532

fn from_polar(magnitude: &[f64], phase: &[f64], sample_rate: f64) -> Self

Source: lib.joule:542

fn len(&self) -> usize

Get signal length

Source: lib.joule:557

fn is_empty(&self) -> bool

Check if empty

Source: lib.joule:562

fn magnitude(&self) -> Vec<f64>

Source: lib.joule:568

fn phase(&self) -> Vec<f64>

Source: lib.joule:578

fn instantaneous_frequency(&self) -> Vec<f64>

Source: lib.joule:588

fn conjugate(&self) -> Self

Source: lib.joule:613

fn multiply(&self, other: &ComplexSignal) -> Self

Source: lib.joule:623

fn to_real(&self) -> Signal

Get real part as signal

Source: lib.joule:639

fn to_imag(&self) -> Signal

Get imaginary part as signal

Source: lib.joule:647

fn to_magnitude(&self) -> Signal

Get magnitude as signal

Source: lib.joule:655

fn convolve(signal: &[f64], kernel: &[f64]) -> Vec<f64>

Source: lib.joule:669

fn convolve_same(signal: &[f64], kernel: &[f64]) -> Vec<f64>

Source: lib.joule:688

fn convolve_valid(signal: &[f64], kernel: &[f64]) -> Vec<f64>

Source: lib.joule:696

fn convolve_fft(signal: &[f64], kernel: &[f64]) -> Vec<f64>

Source: lib.joule:715

fn correlate(signal: &[f64], kernel: &[f64]) -> Vec<f64>

Source: lib.joule:747

fn autocorrelate(signal: &[f64]) -> Vec<f64>

Source: lib.joule:754

fn correlate_normalized(signal: &[f64], template: &[f64]) -> Vec<f64>

Source: lib.joule:760

fn fft(input: &[f64]) -> Vec<(f64, f64)>

Source: lib.joule:789

fn ifft(input: &[(f64, f64)]) -> Vec<f64>

Source: lib.joule:796

fn fft_inplace(data: &mut [(f64, f64)], inverse: bool)

Source: lib.joule:803

fn test_signal_generation()

Source: lib.joule:861

fn test_signal_energy()

Source: lib.joule:868

fn test_convolution()

Source: lib.joule:874

fn test_chirp()

Source: lib.joule:886

fn test_complex_signal()

Source: lib.joule:892