Давайте на вашем нефильтрованного дискретизированным сигнала xu
(от your previous question) в частотной области, чтобы лучше понять, что происходит:
Как вы можете видеть, что есть 8 репликаций оригинала низкого - частотный сигнал (часто называемый образами) на Fs/8
, 2*Fs/8
, ..., 7*Fs/8
. Эти изображения включают как положительные, так и отрицательные частотные составляющие, поэтому изображение вокруг Fs/8
простирается от приблизительно Fs/16
до 3*Fs/16
.
Соответственно, дизайн частота среза вашего фильтра должна быть около Fs/(2*M) = Fs/16
или
Fpass = 1200000/2; % Passband Frequency
Fstop = 1250000/2; % Stopband Frequency
Полученная величина отклика фильтра разработан с:
N = 20;
b = firpm(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop], ...
{dens});
можно увидеть freqz(b,1)
:
Как вы можете заметить, фильтр обеспечивает очень мало затухания в полосе стоп-сигнала. Изображения, о которых я упоминал ранее, будут, тем не менее, обеспечивать довольно значительный вклад в отфильтрованный вывод. Увеличение количества коэффициентов поможет немного, но вы, вероятно, узнаете, что вам нужно много коэффициентов (порядка 500-1000), чтобы получить приличное ослабление затухания и острая полоса перехода.
Для сравнения, коэффициенты фильтра генерируются с fir1(60, 0.125)
(как использовано в my previous answer) обеспечивает гораздо лучшее затухание, где изображения сильнейшие в частотной области, но также имеет гораздо более широкую полосу перехода и использует больше коэффициентов фильтра. Полученный отфильтрованный сигнал на частоте затем:
Так вопрос тогда дошел до компромисса между числом коэффициентов (которые влияют на требования вычислительного и задержку фильтра), ширину полосы передачи и ослабление полосы пропускания. Чтобы правильно ответить, нам нужно знать, каковы требования вашего конкретного приложения.
При условии, что вы пытаетесь интерполировать сигналы с аналогичной полосой пропускания, как половинный гауссовый импульс, который вы использовали в качестве входного сигнала (таким образом, не требуя такой резкой полосы перехода, как указано 50000 Гц), и число коэффициентов является основной задачей, вы можете найти следующий дизайн выполняет немного лучше (хотя это все еще есть некоторые существенные артефакты) для того же числа коэффициентов (т.е. 21):
Fpass = 550000/2;
Fstop = 1250000/2;
Wpass = 1;
Wstop = 22;
N = 20;
b = firpm(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop], ...
{dens});
конечно, увеличение числа коэффициентов (а также ослабление требований к полосе пропускания, как было сделано выше) дополнительно уменьшит ошибку фильтра интерполяции. В качестве альтернативы, использование многоступенчатых фильтров (например, увеличение до 2, затем фильтра три раза в каскаде) также может уменьшить ошибку интерполяции с тем же общим числом коэффициентов и шириной полосы пропускания.