dfilt

Фильтр дискретного времени

Синтаксис

hd = dfilt.structure(input1,...)
hd = [dfilt.structure(input1,...), dfilt.structure(input1,...),...]
hd = design(d,'designmethod')

Описание

hd = dfilt.structure(input1,...) возвращает фильтр дискретного времени, hd, типа structure. Каждая структура берет одни или несколько входных параметров. Когда вы задаете dfilt.structure без входных параметров, фильтр по умолчанию создается.

Примечание

Необходимо использовать structure с dfilt.

hd = [dfilt.structure(input1,...), dfilt.structure(input1,...),...] возвращает вектор, содержащий фильтры dfilt.

Структуры

Структуры для dfilt.structure задают тип структуры фильтра. Доступные типы структур для dfilt показывают ниже.

dfilt.structure

Описание

Содействующая Поддержка Отображения в realizemdl

dfilt.allpass

Фильтр Allpass

Поддерживаемый

dfilt.cascadeallpass

Каскад allpass фильтрует разделы

Поддерживаемый

dfilt.cascadewdfallpass

Каскад allpass цифровых фильтров волны

Поддерживаемый

dfilt.delay

Задержка

Не поддерживаемый

dfilt.df1

Прямая форма I

Поддерживаемый

dfilt.df1sos

Прямая форма I, разделы второго порядка

Поддерживаемый

dfilt.df1t

Прямая форма я транспонировал

Поддерживаемый

dfilt.df1tsos

Прямая форма я транспонировал, разделы второго порядка

Поддерживаемый

dfilt.df2

Прямая форма II

Поддерживаемый

dfilt.df2sos

Прямая форма II, разделы второго порядка

Поддерживаемый

dfilt.df2t

Прямая форма II транспонированный

Поддерживаемый

dfilt.df2tsos

Прямая форма II транспонированных, разделов второго порядка

Поддерживаемый

dfilt.dffir

КИХ прямой формы

Поддерживаемый

dfilt.dffirt

КИХ прямой формы транспонирован

Поддерживаемый

dfilt.dfsymfir

Прямая форма симметричный КИХ

Поддерживаемый

dfilt.dfasymfir

Прямая форма антисимметричный КИХ

Поддерживаемый

dfilt.farrowfd

Типичная дробная задержка фильтр Фэрроу

Поддерживаемый

dfilt.farrowlinearfd

Линейная дробная задержка фильтр Фэрроу

Не поддерживаемый

dfilt.fftfir

Перекрытие - добавляет КИХ

Не поддерживаемый

dfilt.latticeallpass

Образуйте решетку allpass

Поддерживаемый

dfilt.latticear

Образуйте решетку авторегрессивный (AR)

Поддерживаемый

dfilt.latticearma

Образуйте решетку авторегрессивное скользящее среднее значение (ARMA)

Поддерживаемый

dfilt.latticemamax

Образуйте решетку скользящее среднее значение (MA) для максимальной фазы

Поддерживаемый

dfilt.latticemamin

Образуйте решетку скользящее среднее значение (MA) для минимальной фазы

Поддерживаемый

dfilt.calattice

Двойной, allpass решетка

Поддерживаемый

dfilt.calatticepc

Двойной, allpass образовывают решетку со степенью дополнительный вывод

Поддерживаемый

dfilt.statespace

Пространство состояний

Поддерживаемый

dfilt.scalar

Скалярный объект усиления

Поддерживаемый

dfilt.wdfallpass

Волна Allpass цифровой объект фильтра

Поддерживаемый

dfilt.cascade

Фильтры располагаются последовательно

Поддерживаемый

dfilt.parallel

Фильтры располагаются параллельно

Поддерживаемый

Для получения дополнительной информации о каждой структуре обратитесь к ее странице с описанием.

hd = design(d,'designmethod') возвращает объект dfilt hd, следующий из объекта спецификации фильтров d и метод разработки, который вы задаете в designmethod. Когда вы не используете аргумент designmethod, design использует метод оформления по умолчанию, чтобы создать фильтр из объекта d.

С этим синтаксисом вы разрабатываете фильтры по:

  1. Задавая спецификации фильтра, такие как форма ответа (возможно, highpass) и детали (ребра полосы пропускания и затухание).

  2. Выбор метода (такого как equiripple), чтобы разработать фильтр.

  3. Применение метода к спецификациям возражает с design(d,'designmethod).

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

Методы разработки для синтаксиса проекта

Когда вы используете синтаксис hd = design(d,'designmethod'), вы имеете область значений в наличии методов разработки в зависимости от d, объекта спецификации фильтров. В следующей таблице перечислены все методы разработки в тулбоксе.

Метод разработки

Отфильтруйте результат проекта

butter

БИХ Баттерворта

cheby1

Чебышевский БИХ типа I

cheby2

Чебышевский БИХ типа II

ellip

Эллиптический БИХ

equiripple

Equiripple с той же пульсацией в передаче и полосах задерживания

firls

КИХ наименьших квадратов

freqsamp

Выбранный частотой КИХ

ifir

Интерполированный КИХ

iirlpnorm

Наименьшее количество БИХ нормы Pth

iirls

БИХ наименьших квадратов

kaiserwin

Оконный кайзером КИХ

lagrange

Дробный фильтр задержки

multistage

Многоступенчатый КИХ

window

Оконный КИХ

Когда объект d спецификаций изменяется, доступные методы для разработки фильтров от d также изменяются. Например, если d является фильтром lowpass со спецификацией по умолчанию 'Fp,Fst,Ap,Ast', применимые методы:

% Create an object to design a lowpass filter.
d=fdesign.lowpass; 
designmethods(d) % What design methods apply to object d?

Если вы изменяете спецификацию на 'N,F3dB', доступное изменение методов разработки:

d=fdesign.lowpass('N,F3dB');
designmethods(d)

Методы анализа

Методы обеспечивают способы выполнить функции непосредственно на вашем объекте dfilt, не имея необходимость задавать параметры фильтра снова. Можно применить эти методы непосредственно на переменную, которую вы присвоили своему объекту dfilt.

Например, если вы создаете объект dfilt, hd, можно проверять, имеет ли он линейную фазу с islinphase(hd), просмотрите его график частотной характеристики с fvtool(hd) или получите его значения частотной характеристики с h = freqz(hd). Можно использовать все методы, описанные здесь таким образом.

Примечание

Если ваша переменная hd является 1D массивом фильтров dfilt, метод применяется к каждому объекту в массиве. Только freqz, grpdelay, impz, is*, order и методы stepz могут быть применены к массивам. Метод zplane может быть применен к массиву, только если zplane используется без выходных параметров.

Некоторые методы, перечисленные здесь, имеют то же имя как функции в программном обеспечении Signal Processing Toolbox™. Они ведут себя так же.

Метод

Описание

addstage

Добавляет этап к объекту cascade или parallel, где этап является отдельным, модульным фильтром. Обратитесь к dfilt.cascade и dfilt.parallel.

block

block(hd) создает блок объекта dfilt. Метод block может задать эти свойства и значения:

'Destination' указывает, куда поместить блок. 'Current' помещает блок в текущую модель Simulink®. 'New' создает новую модель. Значением по умолчанию является 'Current'.

'Blockname' присваивает вводимый вектор символов имени блока. Именем по умолчанию является 'Filter'.

'OverwriteBlock' указывает, перезаписать ли блок, сгенерированный методом блока ('on') и заданный Blockame. Значением по умолчанию является 'off'.

'MapStates' задает начальные условия в блоке ('on'). Значением по умолчанию является 'off'. Обратитесь к "Используя состояния Фильтра" в документации Signal Processing Toolbox.

cascade

Возвращает серийную комбинацию двух объектов dfilt. Обратитесь к dfilt.cascade.

coeffs

Возвращает коэффициенты фильтра в структуре, содержащей поля, которые используют те же имена свойства в качестве тех в исходном dfilt.

convert

Преобразовывает объект dfilt от одной структуры фильтра, к другой структуре фильтра.

fcfwrite

Пишет коэффициент фильтра ASCII-файл. Файл может содержать один фильтр или вектор объектов. Именем файла по умолчанию является untitled.fcf.

fcfwrite(hd,filename) пишет в дисковый файл под названием filename в текущей рабочей папке. Расширение .fcf добавляется автоматически.

fcfwrite(...,fmt) написал коэффициенты в формате fmt, где допустимые векторы символов fmt:

'hex' для шестнадцатеричного

'dec' для десятичного числа

'bin' для бинарного представления

fftcoeffs

Возвращает коэффициенты частотного диапазона, используемые при фильтрации с dfilt.fftfir

filter

Выполняет фильтрацию с помощью объекта dfilt.

firtype

Возвращает тип (1-4) линейного фильтра фазы FIR.

freqz

Строит частотную характеристику в fvtool. В отличие от функции freqz, этот метод freqz dfilt имеет длину по умолчанию 8 192.

grpdelay

Строит групповую задержку fvtool.

impz

Строит импульсный ответ в fvtool.

impzlength

Возвращает продолжительность импульсного ответа.

info

Отображения информация о dfilt, такие как структура фильтра, длина, устойчивость, линейная фаза, и, в надлежащих случаях, решетка и продолжительность лестничной структуры.

isallpass

Возвращает логический 1 (т.е. верный), если объект dfilt в фильтре allpass или логическом 0 (т.е. ложь), если это не.

iscascade

Возвращает логический 1, если объект dfilt располагается каскадом или логический 0, если это не.

isfir

Возвращает логический 1, если объект dfilt имеет конечный импульсный ответ (FIR) или логический 0, если это не делает.

islinphase

Возвращает логический 1, если объект dfilt является линейной фазой или логическим 0, если это не.

ismaxphase

Возвращает логический 1, если объект dfilt является максимальной фазой или логическим 0, если это не.

isminphase

Возвращает логический 1, если объект dfilt является минимальной фазой или логическим 0, если это не.

isparallel

Возвращает логический 1, если объект dfilt имеет параллельные этапы или логический 0, если он не делает.

isreal

Возвращает логический 1, если объект dfilt имеет коэффициенты с действительным знаком или логический ноль, если он не делает.

isscalar

Возвращает логический 1, если объект dfilt является скаляром или логическим 0, если это не скаляр.

issos

Возвращает логический 1, если объект dfilt имеет разделы второго порядка или логический 0, если он не делает.

isstable

Возвращает логический 1, если объект dfilt стабилен или логический 0, если это не.

nsections

Возвращает количество разделов в фильтре разделов второго порядка. Если многоступенчатый фильтр содержит этапы с несколькими разделами, использование nsections возвращает общее количество разделов на всех этапах (этап с одним разделом возвращается 1).

nstages

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

nstates

Возвращает количество состояний для объекта.

order

Возвращает порядок фильтра. Если hd является одноступенчатым фильтром, распоряжение дано количеством задержек, необходимых для минимальной реализации фильтра. Если hd имеет несколько этапов, распоряжение дано количеством задержек, необходимых для минимальной реализации полного фильтра.

parallel

Возвращает параллельную комбинацию двух фильтров dfilt. Обратитесь к dfilt.parallel.

phasez

Строит фазовый отклик в fvtool.

realizemdl

(Доступный только с Simulink.)

realizemdl(hd) создает модель Simulink, содержащую реализацию блока подсистемы вашего dfilt.

realizemdl(hd,p1,v1,p2,v2,...) создает блок с помощью свойств p1, p2... и значений v1, v2... заданный.

Следующие свойства доступны:

'Blockname' задает имя блока. Значением по умолчанию является 'Filter'.

'Destination' задает, добавить ли блок в текущую модель Simulink или создать новую модель. Допустимыми значениями является 'Current' и 'New'.

'OverwriteBlock' задает, перезаписать ли существующий блок, который был создан realizemdl, или создайте новый блок. Допустимыми значениями является 'on' и 'off'. Только блоки, созданные realizemdl, перезаписываются.

Следующие свойства оптимизируют блочную структуру. Определение 'on' включает оптимизацию, и 'off' создает блок без оптимизации. Значением по умолчанию для каждого блока является 'off'.

'OptimizeZeros' удаляет блоки нулевого усиления.

'OptimizeOnes' заменяет блоки усиления единицы на прямую связь.

'OptimizeNegOnes' заменяет отрицательные блоки усиления единицы на изменение знака в самом близком блоке суммирования.

'OptimizeDelayChains' заменяет цепочки задержки, составленные из единичных задержек n с одной задержкой n.

removestage

Удаляет этап из каскадного или параллельного dfilt. Обратитесь к dfilt.cascade и dfilt.parallel.

setstage

Перезаписывает этап каскадного или параллельного dfilt. Обратитесь к dfilt.cascade и dfilt.parallel.

sos

Преобразовывает dfilt в разделы второго порядка dfilt. Если hd имеет один раздел, возвращенный фильтр имеет тот же класс.

sos(hd,flag) задает упорядоченное расположение разделов второго порядка. Если flag='UP', первая строка содержит полюса, самые близкие к источнику, и последняя строка содержит полюса, самые близкие к модульному кругу. Если flag='down', разделы упорядочены в противоположном направлении. Нули всегда соединяются с полюсами, самыми близкими к ним.

sos(hd,flag,scale) задает масштабирование усиления и коэффициенты числителя всех разделов второго порядка. scale может быть 'none', 'inf' (норма бесконечности) или 'two' (2-норма). Используя норму бесконечности, масштабирующуюся с up, упорядоченное расположение минимизирует вероятность переполнения в реализации. Используя 2-норму, масштабирующуюся с down, упорядоченное расположение минимизирует пиковый шум округления.

ss

Преобразовывает dfilt в пространство состояний. Чтобы видеть отдельные матрицы A,B,C,D для модели в пространстве состояний, используйте [A,B,C,D]=ss(hd).

stepz

Строит переходной процесс в fvtool

stepz(hd,n) вычисляет первые выборки n переходного процесса.

stepz(hd,n,Fs) разделяет выборки времени T = 1/Fs, где Fs принят, чтобы быть в герц.

sysobj

Преобразовывает dfilt в Систему фильтра object™. Смотрите страницу с описанием для списка поддерживаемых объектов.

tf

Преобразовывает dfilt в передаточную функцию.

zerophase

Строит нулевой фазовый отклик в fvtool.

zpk

Преобразовывает dfilt в форму нулевого полюсного усиления.

zplane

Строит нулевой полюсом график в fvtool.

Просмотр свойств

Как с любым объектом, используйте get, чтобы просмотреть dfilt свойства. Чтобы видеть определенное свойство, использовать

 get(hd,'property')

Чтобы видеть все свойства для объекта, использовать

get(hd)

Примечание

Объекты dfilt включают свойство arithmetic. Можно изменить внутреннюю арифметику фильтра от двойной точности до использования с одинарной точностью: hd.arithmetic = 'single'.

Если у вас есть программное обеспечение Fixed-Point Designer™, можно изменить свойство arithmetic на использование фиксированной точки: hd.arithmetic = 'fixed'

Изменение свойств

Чтобы установить определенные свойства, использовать

set(hd,'property1',value,'property2',value,...)

Необходимо использовать одинарные кавычки вокруг имени свойства. Используйте одинарные кавычки вокруг аргумента value, когда значение будет вектором символов, таким как specifyall или fixed.

Копирование объекта

Чтобы создать копию объекта, используйте метод copy.

h2 = copy(hd)

Примечание

Используя синтаксис H2 = hd копирует только указатель на объект и не создает новый, независимый объект.

Преобразование между структурами фильтра

Чтобы изменить структуру фильтра объекта dfilt hd, использовать

hd2 = convert(hd,'structure_charactervector');

где structure_charactervector является любым допустимым именем структуры в одинарных кавычках. Если hd является cascade или структура parallel, каждый этап преобразован в новую структуру.

Используя состояния фильтра

Два свойства управляют состояниями фильтра:

  • states — Хранит текущие состояния фильтра. Прежде чем фильтр применяется, состояния соответствуют начальным условиям и после того, как фильтр применяется, состояния соответствуют итоговым условиям. Для df1, df1t, df1sos и структур df1tsos, states возвращает объект filtstates.

  • PersistentMemory — Средства управления, сохранен ли фильтр states. Значением по умолчанию является 'false', который заставляет начальные условия быть сброшенными, чтобы обнулить прежде, чем отфильтровать и выключает отображение информации о states. Установка PersistentMemory к 'true' позволяет фильтру использовать ваши начальные условия или снова использовать итоговые условия от предыдущей операции фильтрации как начальные условия следующей операции фильтрации. Установка true также отображает информацию о фильтре states.

Примечание

Если вы устанавливаете states и хотите использовать их для фильтрации, необходимо установить PersistentMemory на 'true', прежде чем вы будете использовать фильтр.

Примеры

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

[b,a] = butter(8,0.25);
hd = dfilt.df1(b,a);
isstable(hd)

Если значения числителя dfilt не соответствуют на одной строке, описание вектора отображено. Чтобы видеть определенные значения числителя для этого примера, использовать

B = get(hd,'numerator');
% or
B1 = hd.numerator;

Создайте массив, содержащий два объекта dfilt, примените метод и проверьте, что метод действует на оба объекта. Используйте метод, чтобы протестировать, являются ли объекты КИХ-объектами.

b = fir1(5,.5);
hd = dfilt.dffir(b);         % Create an FIR filter object
[b,a] = butter(5,.5);        % Create IIR filter
hd(2) = dfilt.df2t(b,a);	     % Create DF2T object and place
                              % in the second column of hd.
[h,w] = freqz(hd);
test_fir = isfir(hd) 
% hd(1) is FIR and hd(2) is not.

Обратитесь к страницам с описанием для каждой структуры для большего количества примеров.

Введенный в R2011a