Mixed radix, begining rader

This commit is contained in:
2025-09-21 15:06:03 +02:00
parent 6432ebfe02
commit 79f03a071a
10 changed files with 5137 additions and 659 deletions

View File

@ -12,10 +12,11 @@ mod nco;
use bfsk::BFSKMod;
use complex::Complex;
use fft::rader;
use complex::Complex32;
use nco::Nco;
use crate::fft::FFT;
use crate::fft::{dft::NaiveDFT, mixed_radix::MixedRadixFFT, rader::{compute_prime_primitive_root, RaderFFT}, radix2::Radix2FFT, DFT};
// Utilities
fn map<T>(input: T, in_min: T, in_max: T, out_min: T, out_max: T) -> T
@ -40,22 +41,26 @@ fn test() {
let mut o1 = Nco::new(freq1);
let mut o2 = Nco::new(freq2);
let mut vals = [Complex32::zero(); 8192];
for x in vals.iter_mut() {
let mut fft = RaderFFT::create(4799);
let mut dft = NaiveDFT::create(4799);
let vals = fft.get_input();
let vals_dft = dft.get_input();
for (x, y) in vals.iter_mut().zip(vals_dft.iter_mut()) {
*x = o1.cexp() + o2.cexp();
*y = *x;
//*x = o2.cexp(); //+ o2.cexp();
//*x = *x * (1. / x.mag());
o1.step();
o2.step();
}
let mut fft = FFT::new(13);
let output = fft.run_fft(&vals);
fft.execute();
let output = fft.get_output();
let mut f = File::create("out.csv").unwrap();
for (i, v) in output.iter().enumerate() {
for (i, (v, v2)) in output.iter().zip(dft.get_output()).enumerate() {
f.write_all(
format!("{},{},{},\n", i as f32 / 8192., v.mag(), v.arg())
format!("{},{},{},\n", i as f32 / 8192., v.mag(), v2.mag())
.to_string()
.as_bytes(),
)