В чем разница между filter и conv в Matlab? - PullRequest
16 голосов
/ 06 декабря 2011

Я пытаюсь рассчитать вывод системы LTI . Я столкнулся с двумя различными функциями Matlab, которые должны подходить для данной работы: filter и conv. В чем разница между ними?

Ответы [ 2 ]

13 голосов
/ 06 декабря 2011

filter может работать с системами FIR и IIR, а conv принимает два входа и возвращает их свертку. Так что conv(h,x) и filter(h,1,x) дадут одинаковый результат. 1 в фильтре указывает, что рекурсивные коэффициенты фильтра равны [1]. Но если у вас есть БИХ-фильтр, вы не можете использовать conv. filter также может возвращать состояния фильтра, чтобы его можно было использовать в последующих вызовах без использования переходных процессов фильтра.

Подробнее см. Документацию conv и filter .

10 голосов
/ 28 марта 2012

conv(x,b) выполняет полную свертку.Длина результата составляет length(x)+ length(b)-1.filter(b,[1],x) дает вывод той же длины, что и x.Он не очищает линию задержки фильтра.

Предположим, x - это вектор строки.Сделать x0 = [x zeros(1,length(b)-1)];теперь filter(b,[1],x0) совпадает с conv(x,b).Это потому, что дополнительные 0 используются для очистки линии задержки.

Какой из них более разумен?Это зависит от того, что вам нужно!

...