Skip to content

Commit

Permalink
Update dsp examples
Browse files Browse the repository at this point in the history
  • Loading branch information
dancazarin committed Feb 5, 2024
1 parent f1ac648 commit 345343c
Show file tree
Hide file tree
Showing 13 changed files with 117 additions and 120 deletions.
32 changes: 16 additions & 16 deletions docs/docs/bq_gallery.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;

biquad_params<fbase> bq[] = { biquad_highshelf(0.3, +9.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_highshelf(0.3, +9.0) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_highshelf", output, options + ", title='Biquad high shelf filter (0.3, +9)'");
```
Result
Expand All @@ -22,8 +22,8 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;
biquad_params<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_lowpass", output, options + ", title='Biquad Low pass filter (0.2, 0.9)'");
```
Result
Expand All @@ -38,8 +38,8 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;

biquad_params<fbase> bq[] = { biquad_lowshelf(0.3, -1.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_lowshelf(0.3, -1.0) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_lowshelf", output, options + ", title='Biquad low shelf filter (0.3, -1)'");
```
Result
Expand All @@ -53,9 +53,9 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;
biquad_params<fbase> bq[] = { biquad_notch(0.1, 0.5), biquad_notch(0.2, 0.5), biquad_notch(0.3, 0.5),
biquad_section<fbase> bq[] = { biquad_notch(0.1, 0.5), biquad_notch(0.2, 0.5), biquad_notch(0.3, 0.5),
biquad_notch(0.4, 0.5) };
output = biquad(bq, unitimpulse());
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_notch", output, options + ", title='Four Biquad Notch filters'");
```
Result
Expand All @@ -68,8 +68,8 @@ Code
```c++ linenums="1"
const std::string options = "phaseresp=True";
univector<fbase, 128> output;
biquad_params<fbase> bq[] = { biquad_peak(0.3, 0.5, +9.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_peak(0.3, 0.5, +9.0) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_peak", output, options + ", title='Biquad Peak filter (0.2, 0.5, +9)'");
```
Result
Expand All @@ -83,8 +83,8 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;
biquad_params<fbase> bq[] = { biquad_peak(0.3, 3.0, -2.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_peak(0.3, 3.0, -2.0) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_peak2", output, options + ", title='Biquad Peak filter (0.3, 3, -2)'");
```
Result
Expand All @@ -98,8 +98,8 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;

biquad_params<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_bandpass", output, options + ", title='Biquad band pass (0.25, 0.2)'");
```
Result
Expand All @@ -113,8 +113,8 @@ Code
const std::string options = "phaseresp=True";
univector<fbase, 128> output;
biquad_params<fbase> bq[] = { biquad_highpass(0.3, 0.1) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_highpass(0.3, 0.1) };
output = iir(unitimpulse(), iir_params{ bq });
plot_save("biquad_highpass", output, options + ", title='Biquad High pass filter (0.3, 0.1)'");
```
Result
Expand Down
67 changes: 33 additions & 34 deletions docs/docs/iir_gallery.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,11 @@
Code
```c++ linenums="1"
const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 10), padwidth=8192";
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;

zpk<fbase> filt = iir_lowpass(bessel<fbase>(24), 1000, 48000);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(bessel<fbase>(24), 1000, 48000);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("bessel_lowpass24", output, options + ", title='24th-order Bessel filter, lowpass 1khz'");

```
Expand All @@ -41,9 +40,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;
zpk<fbase> filt = iir_lowpass(bessel<fbase>(12), 1000, 48000);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(bessel<fbase>(12), 1000, 48000);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("bessel_lowpass12", output, options + ", title='12th-order Bessel filter, lowpass 1khz'");
```
Expand All @@ -59,9 +58,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;

zpk<fbase> filt = iir_lowpass(bessel<fbase>(6), 1000, 48000);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(bessel<fbase>(6), 1000, 48000);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("bessel_lowpass6", output, options + ", title='6th-order Bessel filter, lowpass 1khz'");
```
Result
Expand All @@ -76,9 +75,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;
zpk<fbase> filt = iir_lowpass(butterworth<fbase>(24), 1000, 48000);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(butterworth<fbase>(24), 1000, 48000);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("butterworth_lowpass24", output,
options + ", title='24th-order Butterworth filter, lowpass 1khz'");
```
Expand All @@ -95,9 +94,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;

zpk<fbase> filt = iir_lowpass(butterworth<fbase>(12), 1000, 48000);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(butterworth<fbase>(12), 1000, 48000);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("butterworth_lowpass12", output,
options + ", title='12th-order Butterworth filter, lowpass 1khz'");
```
Expand All @@ -113,9 +112,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;
zpk<fbase> filt = iir_highpass(butterworth<fbase>(12), 1000, 48000);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_highpass(butterworth<fbase>(12), 1000, 48000);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("butterworth_highpass12", output,
options + ", title='12th-order Butterworth filter, highpass 1khz'");
```
Expand All @@ -131,9 +130,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;

zpk<fbase> filt = iir_bandpass(butterworth<fbase>(12), 0.1, 0.2);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_bandpass(butterworth<fbase>(12), 0.1, 0.2);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("butterworth_bandpass12", output,
options + ", title='12th-order Butterworth filter, bandpass'");
```
Expand All @@ -149,9 +148,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;
zpk<fbase> filt = iir_bandstop(butterworth<fbase>(12), 0.1, 0.2);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_bandstop(butterworth<fbase>(12), 0.1, 0.2);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("butterworth_bandstop12", output,
options + ", title='12th-order Butterworth filter, bandstop'");
```
Expand All @@ -167,9 +166,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;

zpk<fbase> filt = iir_bandpass(butterworth<fbase>(4), 0.005, 0.9);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_bandpass(butterworth<fbase>(4), 0.005, 0.9);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("butterworth_bandpass4", output, options + ", title='4th-order Butterworth filter, bandpass'");
```
Result
Expand All @@ -184,9 +183,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;
zpk<fbase> filt = iir_lowpass(chebyshev1<fbase>(8, 2), 0.09);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(chebyshev1<fbase>(8, 2), 0.09);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("chebyshev1_lowpass8", output,
options + ", title='8th-order Chebyshev type I filter, lowpass'");
```
Expand All @@ -202,9 +201,9 @@ const std::string options = "phaseresp=True, log_freq=True, freq_dB_lim=(-160, 1
constexpr size_t maxorder = 32;
univector<fbase, 1024> output;

zpk<fbase> filt = iir_lowpass(chebyshev2<fbase>(8, 80), 0.09);
std::vector<biquad_params<fbase>> bqs = to_sos(filt);
output = biquad<maxorder>(bqs, unitimpulse());
zpk<fbase> filt = iir_lowpass(chebyshev2<fbase>(8, 80), 0.09);
iir_params<fbase> bqs = to_sos(filt);
output = iir(unitimpulse(), iir_params{ bqs });
plot_save("chebyshev2_lowpass8", output,
options + ", title='8th-order Chebyshev type II filter, lowpass'");
```
Expand Down
56 changes: 28 additions & 28 deletions examples/biquads.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,74 +20,74 @@ int main()

univector<fbase, 128> output;
{
biquad_params<fbase> bq[] = { biquad_notch(0.1, 0.5), biquad_notch(0.2, 0.5), biquad_notch(0.3, 0.5),
biquad_notch(0.4, 0.5) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_notch(0.1, 0.5), biquad_notch(0.2, 0.5), biquad_notch(0.3, 0.5),
biquad_notch(0.4, 0.5) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_notch", output, options + ", title='Four Biquad Notch filters'");

{
biquad_params<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_lowpass", output, options + ", title='Biquad Low pass filter (0.2, 0.9)'");

{
biquad_params<fbase> bq[] = { biquad_highpass(0.3, 0.1) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_highpass(0.3, 0.1) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_highpass", output, options + ", title='Biquad High pass filter (0.3, 0.1)'");

{
biquad_params<fbase> bq[] = { biquad_peak(0.3, 0.5, +9.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_peak(0.3, 0.5, +9.0) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_peak", output, options + ", title='Biquad Peak filter (0.2, 0.5, +9)'");

{
biquad_params<fbase> bq[] = { biquad_peak(0.3, 3.0, -2.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_peak(0.3, 3.0, -2.0) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_peak2", output, options + ", title='Biquad Peak filter (0.3, 3, -2)'");

{
biquad_params<fbase> bq[] = { biquad_lowshelf(0.3, -1.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_lowshelf(0.3, -1.0) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_lowshelf", output, options + ", title='Biquad low shelf filter (0.3, -1)'");

{
biquad_params<fbase> bq[] = { biquad_highshelf(0.3, +9.0) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_highshelf(0.3, +9.0) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_highshelf", output, options + ", title='Biquad high shelf filter (0.3, +9)'");

{
biquad_params<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
output = biquad(bq, unitimpulse());
biquad_section<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
output = iir(unitimpulse(), iir_params{ bq });
}
plot_save("biquad_bandpass", output, options + ", title='Biquad band pass (0.25, 0.2)'");

{
biquad_params<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
biquad_section<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
std::vector<fbase> data(output.size(), 0.f);
data[0] = 1.f;
output = biquad(bq, make_univector(data));
output = iir(make_univector(data), iir_params{ bq });
}
plot_save("biquad_bandpass_stdvector", output, options + ", title='Biquad band pass (0.25, 0.2)'");

{
biquad_params<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
fbase data[output.size()] = { 0 }; // .size() is constexpr
data[0] = 1.f;
output = biquad(bq, make_univector(data));
biquad_section<fbase> bq[] = { biquad_bandpass(0.25, 0.2) };
fbase data[output.size()] = { 0 }; // .size() is constexpr
data[0] = 1.f;
output = iir(make_univector(data), iir_params{ bq });
}
plot_save("biquad_bandpass_carray", output, options + ", title='Biquad band pass (0.25, 0.2)'");

{
// filter initialization
biquad_params<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
expression_filter<fbase> filter = to_filter(biquad(bq, placeholder<fbase>()));
biquad_section<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
expression_filter<fbase> filter = to_filter(iir(placeholder<fbase>(), iir_params{ bq }));

// prepare data
output = unitimpulse();
Expand All @@ -100,8 +100,8 @@ int main()

{
// filter initialization
biquad_params<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
biquad_filter<fbase> filter(bq);
biquad_section<fbase> bq[] = { biquad_lowpass(0.2, 0.9) };
iir_filter<fbase> filter(bq);

// prepare data
output = unitimpulse();
Expand All @@ -110,7 +110,7 @@ int main()
filter.apply(output);
}
plot_save("biquad_filter_lowpass", output,
options + ", title='Biquad Low pass filter (0.2, 0.9) (using biquad_filter)'");
options + ", title='Biquad Low pass filter (0.2, 0.9) (using iir_filter)'");

println("SVG plots have been saved to svg directory");

Expand Down
4 changes: 2 additions & 2 deletions examples/ccv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ int main()
auto toc = std::chrono::high_resolution_clock::now();
auto const ccv_time_complex = std::chrono::duration_cast<std::chrono::duration<float>>(toc - tic);
tic = toc;
filtered_cnoise_fir = kfr::fir(cnoise, taps127);
filtered_cnoise_fir = kfr::fir(cnoise, fir_params{ taps127 });
toc = std::chrono::high_resolution_clock::now();
auto const fir_time_complex = std::chrono::duration_cast<std::chrono::duration<float>>(toc - tic);
auto const cdiff = rms(cabs(filtered_cnoise_fir - filtered_cnoise_ccv));
Expand All @@ -58,7 +58,7 @@ int main()
toc = std::chrono::high_resolution_clock::now();
auto const ccv_time_real = std::chrono::duration_cast<std::chrono::duration<float>>(toc - tic);
tic = toc;
filtered_noise_fir = kfr::fir(noise, taps127);
filtered_noise_fir = kfr::fir(noise, fir_params{ taps127 });
toc = std::chrono::high_resolution_clock::now();
auto const fir_time_real = std::chrono::duration_cast<std::chrono::duration<float>>(toc - tic);
auto const diff = rms(filtered_noise_fir - filtered_noise_ccv);
Expand Down
2 changes: 1 addition & 1 deletion examples/fir.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ int main()
univector<float> noise = truncate(gen_random_range(random_init(1, 2, 3, 4), -1.f, +1.f), 10000);

// Apply band stop filter
univector<float> filtered_noise = fir(noise, taps127);
univector<float> filtered_noise = fir(noise, fir_params{ taps127 });

#if PYTHON_IS_INSTALLED
// Plot results
Expand Down
Loading

0 comments on commit 345343c

Please sign in to comment.