Функция одномерной цифровой фильтрации массива
y = filter(b,a,x); y = filter(b,a,x,zi); y = filter(b,a,M,zi,dim);
Имя | Тип данных | Описание |
---|---|---|
b | array | Массив коэффициентов числителя передаточной функции фильтра |
a | array | Массив коэффициентов знаменателя передаточной функции фильтра |
x | array/matrix | Вектор или матрица, составляющие массив значений одного или нескольких фильтруемых сигналов |
M | matrix | Матрица, составляющая массив значений фильтруемого сигнала |
zi | array / matrix | Вектор или матрица, содержит начальные значения задержек фильтра для одного или нескольких фильтруемых сигналов; |
dim | integer | Целое число 1 или 2, обозначающее направление, вдоль которого производится фильтрация матрицы; 1 - по столбцам, 2 - по строкам. |
filter(b,a,x) – функция производит фильтрацию сигнала x, с помощью цифрового фильтра, заданного коэффициентами числителя и знаменателя a и b передаточной функции; x может быть вектором или матрицей, содержащими один или несколько фильтруемых сигналов; сигналы упоковываются в матрицы по стролбцам;
filter(b,a,x,zi) - функция производит фильтрацию сигнала x, используя начальные значения задержек фильтра zi; если x - вектор, то zi должно иметь размерность равную max(cols(a), cols(b))-1; если x - матрица, то zi должно быть матрицей, с количеством столбцов, равным количеству фильтруемых сигналов и количеством строк, равным max(cols(a), cols(b))-1;
filter(b,a,M,zi,dim) - функция производит фильтрацию матрицы M, вдоль размерности dim (1 - фильтрация по столбцам, 2 - фильтрация по строкам); матрица zi может быть пустой [[]].
Имя | Тип данных | Описание |
---|---|---|
y | array / matrix | Функция возвращает массив или матрицу, в зависимости от типа входного сигнала |
initialization t = vector(101); x1 = vector(101); y33 = vector(101); y44 = vector(101); for (i=2,101) // массив аргументов t[i] = t[i-1]+0.1; b = [0.2 0.2 0.2]; // коэффициенты фильтра a = [1, 0.2]; b2 = [0.4 0.4 0.4]; // ненормированные коэффициенты фильтра a2 = [2, 0.4]; zi2 = [5 4]; // начальные условия запаздываний фильтра (zi) zi4 = [[5 5 5];[4 4 4]]; end; // на каждом шаге: // формируем массив данных для фильтрации for (i=1,101) x1[i] = sin(1+5*sin(time/10)*t[i])+0.4*rand; // формируем матрицы данных для фильтрации x2 = [fliplr(x1),x1,x1]; x3 = transp(x2); // фильтруем y1 = filter(b,a,x1); // вектор y2 = filter(b2,a2,x1); // вектор с ненормированными коэффициентами фильтра y3 = filter(b,a,x1,zi2); // вектор с zi y4 = filter(b,a,x3); // матрицу по столбцам y5 = filter(b,a,x3,zi4); // матрицу по столбцам с zi y6 = filter(b,a,x2,[[]],2); // матрицу по строкам (zi - пустая матрица)
В скрипте примера производится фильтрация сигналов, заданных в виде векторов и матриц с различной упаковкой.
Нет.