pub struct BodeAnalysis {
pub num: Vec<f64>,
pub den: Vec<f64>,
}Expand description
Bode analysis for a transfer function given numerator and denominator polynomials.
Polynomials stored as coefficients in descending order of s:
num = [b_n, ..., b_0], den = [a_m, ..., a_0].
Fields§
§num: Vec<f64>Numerator polynomial coefficients (descending order of s).
den: Vec<f64>Denominator polynomial coefficients (descending order of s).
Implementations§
Source§impl BodeAnalysis
impl BodeAnalysis
Sourcepub fn eval_at(&self, omega: f64) -> (f64, f64)
pub fn eval_at(&self, omega: f64) -> (f64, f64)
Evaluate transfer function G(jω) at angular frequency ω.
Sourcepub fn compute(&self, omegas: &[f64]) -> Vec<BodePoint>
pub fn compute(&self, omegas: &[f64]) -> Vec<BodePoint>
Compute Bode points at the given frequencies.
Sourcepub fn compute_log(
&self,
omega_min: f64,
omega_max: f64,
n_points: usize,
) -> Vec<BodePoint>
pub fn compute_log( &self, omega_min: f64, omega_max: f64, n_points: usize, ) -> Vec<BodePoint>
Compute logarithmically-spaced Bode plot from ω_min to ω_max with n_points points.
Sourcepub fn margins(
&self,
omega_min: f64,
omega_max: f64,
n_points: usize,
) -> (f64, f64)
pub fn margins( &self, omega_min: f64, omega_max: f64, n_points: usize, ) -> (f64, f64)
Find gain margin (dB) and phase margin (degrees).
- Gain margin: gain (dB) at the phase crossover frequency (where phase = -180°).
- Phase margin: phase (deg) + 180° at the gain crossover frequency (where gain = 0 dB).
Returns (gain_margin_db, phase_margin_deg).
Trait Implementations§
Source§impl Clone for BodeAnalysis
impl Clone for BodeAnalysis
Source§fn clone(&self) -> BodeAnalysis
fn clone(&self) -> BodeAnalysis
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for BodeAnalysis
impl RefUnwindSafe for BodeAnalysis
impl Send for BodeAnalysis
impl Sync for BodeAnalysis
impl Unpin for BodeAnalysis
impl UnsafeUnpin for BodeAnalysis
impl UnwindSafe for BodeAnalysis
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.