filter

Отфильтруйте данные с объектом фильтра

Синтаксис

y = filter(hd,x)
y = filter(hd,x,dim)

Описание

Синтаксисы фильтра фиксированной точки

y = filter(hd,x) фильтрует вектор действительных или комплексных входных данных x через фиксированную точку фильтруют hd, создание отфильтрованных выходных данных y. Векторы x и y имейте ту же длину. фильтр хранит итоговые условия для фильтра в States свойство hdhd.states.

Когда вы устанавливаете свойство PersistentMemory к false (настройка по умолчанию), начальные условия для фильтра обнуляются, прежде чем фильтрация запускается. Использовать ненулевые начальные условия в hd, установите PersistentMemory к true. Затем установите hd.states к вектору nstates(hd) элементы, один элемент для каждого состояния, чтобы установить. Если вы задаете скаляр для hd.statesфильтр расширяет скаляр до вектора соответствующей длины для состояний. Все элементы расширенного вектора имеют значение скаляра.

Если x матрица, y = filter(hd,x) фильтры вдоль каждого столбца x произвести матричный y из независимых каналов. Если x многомерный массив, y = filter(hd,x) фильтры x по первому неодноэлементному измерению x.

Использовать ненулевые начальные условия, когда вы фильтруете матричный x, установите состояния фильтра на матрицу начальных значений условия. Установите начальные условия путем установки States свойство для фильтра (hd.states) к матрице nstates(hd) строки и size(x,2) столбцы.

y = filter(hd,x,dim) применяет фильтр hd к входным данным, расположенным по определенному измерению x заданный dim.

Когда вы фильтруете многоканальные данные, dim позволяет вам задать, какая размерность входной матрицы отфильтровать вперед — представляет ли строка канал или столбец, представляет канал. Когда вы обеспечиваете dim входной параметр, фильтр действует по измерению, заданному dim. Когда ваши входные данные x вектор или матрица и dim 1, каждый столбец x обработан как входной канал того. Когда dim 2, фильтр обрабатывает каждую строку входа x как канал.

Чтобы отфильтровать многоканальные данные в среде цикла, необходимо использовать dim входной параметр, чтобы установить соответствующую размерность обработки.

Вы задаете начальные условия для каждого канала индивидуально, при необходимости, установкой hm.states к матрице nstates(hd) строки (одна строка, содержащая состояния для одного канала входных данных) и size(x,2) столбцы (один столбец, содержащий фильтр, утверждает для каждого канала).

Примеры

свернуть все

Отфильтруйте сигнал с помощью фильтра с различными начальными условиями (IC) или никакими начальными условиями.

x = randn(100,1);    % Original signal.
b = fir1(50,.4);     % 50th-order linear-phase FIR filter.
hd = dfilt.dffir(b);    % Direct-form FIR implementation.

Не устанавливайте определенные начальные условия.

y1 = filter(hd,x);   % 'PersistentMemory'='false'(default).
zf = hd.states;      % Final conditions.

Теперь используйте ненулевые начальные условия установкой ICs, прежде чем вы отфильтруете.

hd.persistentmemory = true;
hd.states = 1;      % Uses scalar expansion.
y2 = filter(hd,x);
stem([y1 y2])       % Different sequences at beginning.
legend('y1','y2');

Рассмотрение диаграммы стебель-листья показывает, что последовательности отличаются в начале процесса фильтра.

Вот один способ использовать фильтр с потоковой передачей данных.

reset(hd);           % Clear filter history.
y3 = filter(hd,x);   % Filter entire signal in one block.

Как эксперимент, повторите процесс, фильтруя данные как разделы, а не в потоковой передаче формы.

reset(hd);              % Clear filter history.
yloop = zeros(20,5);    % Preallocate output array.
xblock = reshape(x,[20 5]);
for i=1:5
   yloop(:,i) = filter(hd,xblock(:,i));
end

Используйте диаграмму стебель-листья, чтобы видеть сравнение между фильтрацией блока блоком и потоковой передачей.

stem([y3 yloop(:)]);
legend('y3','yloop')

Фильтрация раздела разделом сигнала эквивалентна фильтрации целого сигнала целиком.

Алгоритмы

свернуть все

Квантованные фильтры

filter реализации команды зафиксировали - или арифметика с плавающей точкой на квантованной структуре фильтра, которую вы задаете.

Алгоритм применяется filter то, когда вы используете объект фильтра дискретного времени на входном сигнале, зависит от ответа, который вы выбрали для фильтра, такого как lowpass или Найквист или bandstop. Чтобы узнать больше о каждом алгоритме фильтра, обратитесь к литературной ссылке, обеспеченной на соответствующей странице с описанием фильтра дискретного времени.

Примечание

dfilt/filter не нормирует коэффициенты фильтра автоматически. Функциональный filter предоставленный MATLAB действительно нормирует коэффициенты.

Адаптивные фильтры

Алгоритм используется filter когда вы применяетесь, адаптивный объект фильтра к сигналу зависит от алгоритма, который вы выбрали для своего адаптивного фильтра. Чтобы узнать больше о каждом адаптивном алгоритме фильтра, обратитесь к литературной ссылке, обеспеченной на соответствующей адаптивной странице с описанием объекта фильтра.

Ссылки

[1] Оппенхейм, A.V., и Р.В. Шафер, обработка сигналов дискретного времени, Prentice Hall, 1989.

Смотрите также

Функции

Введенный в R2011a