В чем разница между filter и conv в Matlab?

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

Ответы

Ответ 1

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

Смотрите conv и filter документацию для деталей.

Ответ 2

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). Это связано с тем, что дополнительные 0s используются для сброса линии задержки.

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