дизайн фильтра нижних частот

Предположим, что у нас есть сигнал

>> fs=100;

>> ts=1/fs;
>> t=0:ts:2.93;

>> x=23*sin(2*pi*30*t)+22*cos(2*pi*51*t)+24*sin(2*pi*15*t)+6*randn(size(t));

Поскольку одна частота выше, чем частота дискретизации, разделенная на два, я хочу применить фильтр нижних частот, чтобы все частоты ниже 50 оставались неизменными, а все остальные должны быть удалены, поэтому я попытался:

>> fc=50;
>> wn=(2/fs)*fc;
>> b=fir1(20,wn,'low',kaiser(21,3));

но эта команда

fvtool(b,1,'fs',fs)

выдает ошибку:

Коэффициенты должны быть конечными.

Также команда

y = filter(b,1,x); removes all frequency components from  signal,what is problem?

person dato datuashvili    schedule 07.11.2014    source источник


Ответы (1)


Все коэффициенты в b равны NaN. Это связано с тем, что ваша частота среза установлена ​​равной 1, частоте Найквиста, но в соответствии с fir1 помощь:

The cut-off frequency Wn must be between 0 < Wn < 1.0, with 1.0 corresponding to half 
the sample rate.

Нет смысла устанавливать отсечку на 1,0 с фильтром нижних частот, поскольку он предназначен для пропускания всех частот.

В любом случае, нормализованные частоты идут от 0 до fs/2, поэтому, если вы хотите пройти ниже 50, ваша работа выполнена, поскольку это частота Найквиста при частоте дискретизации 100 Гц. Частоты выше 50 Гц не могут быть представлены в дискретном представлении с fs 100 Гц. В идеале вы должны отфильтровать высокие частоты перед дискретизацией/сэмплированием.

person chappjc    schedule 07.11.2014
comment
@datodatuashvili Выберите подходящий Wn или вообще не фильтруйте. При частоте дискретизации 100 Гц вы можете с самого начала отображать только частоты до 50 Гц. - person chappjc; 07.11.2014
comment
я просто тренируюсь, давайте предположим, что частота 51, поэтому я хочу изменить - person dato datuashvili; 07.11.2014
comment
@датодатуашвили, пожалуйста, прочитайте wikipedia.org/wiki/Nyquist_frequency - person chappjc; 07.11.2014
comment
вы не понимаете, мне нужно реализовать грамматически, а не теоретически я знаю, что это значит - person dato datuashvili; 07.11.2014
comment
@datodatuashvili Я думаю, это вы не понимаете: если ваша частота дискретизации составляет 100 Гц, вы не можете представить (и, следовательно, отфильтровать) что-либо выше 50 Гц. - person am304; 07.11.2014
comment
нет, мой друг, это не я, я не говорю, что я могу представить, я хочу реализовать фильтр нижних частот, чтобы все частоты выше 50 были удалены, мне нужен только код для этого, хорошо? я написал код, и есть ошибка пожалуйста, помогите мне - person dato datuashvili; 07.11.2014
comment
я и сам все понимаю, но все равно спасибо за помощь - person dato datuashvili; 07.11.2014