sample_rate <- 500
my_diagnose <- function(
filter, vlines = c(8, 12), cutoffs = c(-3, -6)) {
diagnose_filter(
b = filter$b,
a = filter$a,
fs = sample_rate,
vlines = vlines,
cutoffs = cutoffs
)
}
# ---- Default using butterworth to generate 8-12 bandpass filter ----
# Butterworth filter with cut-off frequency
# 7 ~ 13 (default transition bandwidth is 1Hz) at -3 dB
filter <- design_filter_iir(
method = "butter",
low_pass_freq = 12,
high_pass_freq = 8,
sample_rate = 500
)
filter
my_diagnose(filter)
## explicit bandwidths and attenuation (sharper transition)
# Butterworth filter with cut-off frequency
# passband ripple is 0.5 dB (8-12 Hz)
# stopband attenuation is 40 dB (5-18 Hz)
filter <- design_filter_iir(
method = "butter",
low_pass_freq = 12, low_pass_trans_freq = 6,
high_pass_freq = 8, high_pass_trans_freq = 3,
sample_rate = 500,
passband_ripple = 0.5,
stopband_attenuation = 40
)
filter
my_diagnose(filter)
# ---- cheby1 --------------------------------
filter <- design_filter_iir(
method = "cheby1",
low_pass_freq = 12,
high_pass_freq = 8,
sample_rate = 500
)
my_diagnose(filter)
# ---- cheby2 --------------------------------
filter <- design_filter_iir(
method = "cheby2",
low_pass_freq = 12,
high_pass_freq = 8,
sample_rate = 500
)
my_diagnose(filter)
# ----- ellip ---------------------------------
filter <- design_filter_iir(
method = "ellip",
low_pass_freq = 12,
high_pass_freq = 8,
sample_rate = 500
)
my_diagnose(filter)
Run the code above in your browser using DataLab