Давайте сначала посмотрим на ваш нефильтрованный сигнал с повышенной частотой дискретизации xu
(из вашего предыдущего вопроса) в частотной области, чтобы лучше понять, что происходит. :
Как видите, есть 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)
(используемые в моем предыдущем ответе), обеспечивают гораздо лучшее затухание там, где изображения являются самый сильный в частотной области, но также имеет гораздо более широкую полосу перехода и использует больше коэффициентов фильтра. Результирующий отфильтрованный сигнал по частоте имеет вид:
Таким образом, вопрос сводится к компромиссу между количеством коэффициентов (которые влияют на вычислительные требования и задержку фильтра), шириной полосы перехода и затуханием в полосе задерживания. Чтобы правильно ответить, нам нужно знать, каковы требования вашего конкретного приложения.
Если вы пытаетесь интерполировать сигналы с той же полосой пропускания, что и половинный гауссовский импульс, который вы использовали в качестве входных данных (таким образом, не требуется столь резкой полосы перехода, как указанные вами 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 раза, затем фильтрация, три раза в каскаде) также может уменьшить ошибку интерполяции с тем же общим числом коэффициентов и пропускной способностью перехода.
person
SleuthEye
schedule
04.12.2015