1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
pub struct Decomposor {
pub n: usize,
pub dt: f64,
pub freq: Vec<f64>,
pub dft: Vec<Complex<f64>>,
pub rdft: Vec<Complex<f64>>,
}
impl Default for Decomposor {
fn default() -> Self {
Decomposor {
n: 0,
dt: 0.0,
freq: vec![],
dft: vec![],
rdft: vec![],
}
}
}
pub fn decompose(signal: &[f64], dt: f64, config: Decomposor) -> (Vec<f64>, Vec<f64>) {
let n = signal.len();
let val = 1.0 / (n as f64 * dt);
let mut result: Vec<f64> = vec![];
let mid = (n - 1) / 2 + 1;
result.append(&mut (0..mid).map(|x| val * x as f64).collect::<Vec<f64>>());
result.append(&mut (-(n as isize / 2)..0).map(|x| val * x as f64).collect::<Vec<f64>>());
let mut dft_signal: Vec<Complex<f64>> = vec![];
for i in 0..signal.len() {
dft_signal.push(Complex::new(signal[i], 0.0));
}
let dft_signal = dft(&dft_signal);
let mut dft_result: Vec<f64> = vec![];
for i in 0..dft_signal.len() {
dft_result.push(dft_signal[i].re);
}
(result, dft_result)
}
*/