pub trait ComplexToRealTransformsOpsBuffered<S, T>: ToRealResultwhere
S: ToSliceMut<T>,
T: RealNumber,{
// Required methods
fn magnitude_b<B>(self, buffer: &mut B) -> Self::RealResult
where B: for<'a> Buffer<'a, S, T>;
fn magnitude_squared_b<B>(self, buffer: &mut B) -> Self::RealResult
where B: for<'a> Buffer<'a, S, T>;
fn to_real_b<B>(self, buffer: &mut B) -> Self::RealResult
where B: for<'a> Buffer<'a, S, T>;
fn to_imag_b<B>(self, buffer: &mut B) -> Self::RealResult
where B: for<'a> Buffer<'a, S, T>;
fn phase_b<B>(self, buffer: &mut B) -> Self::RealResult
where B: for<'a> Buffer<'a, S, T>;
}
Expand description
Defines transformations from complex to real number space.
§Failures
All operations in this trait set self.len()
to 0
if the type isn’t in
the complex number space.
Required Methods§
sourcefn magnitude_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
fn magnitude_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
Gets the absolute value, magnitude or norm of all vector elements.
§Example
use basic_dsp_vector::*;
let vector = vec!(Complex::new(3.0, -4.0), Complex::new(-3.0, 4.0)).to_complex_time_vec();
let mut buffer = SingleBuffer::new();
let result = vector.magnitude_b(&mut buffer);
assert_eq!([5.0, 5.0], result[0..]);
sourcefn magnitude_squared_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
fn magnitude_squared_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
Gets the square root of the absolute value of all vector elements.
§Example
use basic_dsp_vector::*;
let vector = vec!(Complex::new(3.0, -4.0), Complex::new(-3.0, 4.0)).to_complex_time_vec();
let mut buffer = SingleBuffer::new();
let result = vector.magnitude_squared_b(&mut buffer);
assert_eq!([25.0, 25.0], result[0..]);
sourcefn to_real_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
fn to_real_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
Gets all real elements.
§Example
use basic_dsp_vector::*;
let vector = vec!(Complex::new(1.0, 2.0), Complex::new(3.0, 4.0)).to_complex_time_vec();
let mut buffer = SingleBuffer::new();
let result = vector.to_real_b(&mut buffer);
assert_eq!([1.0, 3.0], result[0..]);
sourcefn to_imag_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
fn to_imag_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
Gets all imag elements.
§Example
use basic_dsp_vector::*;
let vector = vec!(Complex::new(1.0, 2.0), Complex::new(3.0, 4.0)).to_complex_time_vec();
let mut buffer = SingleBuffer::new();
let result = vector.to_imag_b(&mut buffer);
assert_eq!([2.0, 4.0], result[0..]);
sourcefn phase_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
fn phase_b<B>(self, buffer: &mut B) -> Self::RealResultwhere
B: for<'a> Buffer<'a, S, T>,
Gets the phase of all elements in [rad].
§Example
use basic_dsp_vector::*;
let data: Vec<Complex<f32>> = vec!(Complex::new(1.0, 0.0), Complex::new(0.0, 4.0), Complex::new(-2.0, 0.0), Complex::new(0.0, -3.0), Complex::new(1.0, 1.0));
let vector = data.to_complex_time_vec();
let mut buffer = SingleBuffer::new();
let result = vector.phase_b(&mut buffer);
assert_eq!([0.0, 1.5707964, 3.1415927, -1.5707964, 0.7853982], result[0..]);
Object Safety§
This trait is not object safe.