Фильтр дискретного времени
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 |
---|---|---|
Фильтр Allpass | Поддерживаемый | |
Каскад allpass фильтрует разделы | Поддерживаемый | |
Каскад allpass цифровых фильтров волны | Поддерживаемый | |
Задержка | Не поддерживаемый | |
Прямая форма I | Поддерживаемый | |
Прямая форма I, разделы второго порядка | Поддерживаемый | |
Прямая форма я транспонировал | Поддерживаемый | |
Прямая форма я транспонировал, разделы второго порядка | Поддерживаемый | |
Прямая форма II | Поддерживаемый | |
Прямая форма II, разделы второго порядка | Поддерживаемый | |
Прямая форма II транспонированный | Поддерживаемый | |
Прямая форма II транспонированных, разделов второго порядка | Поддерживаемый | |
КИХ прямой формы | Поддерживаемый | |
КИХ прямой формы транспонирован | Поддерживаемый | |
Прямая форма симметричный КИХ | Поддерживаемый | |
Прямая форма антисимметричный КИХ | Поддерживаемый | |
Типичная дробная задержка фильтр Фэрроу | Поддерживаемый | |
Линейная дробная задержка фильтр Фэрроу | Не поддерживаемый | |
Перекрытие - добавляет КИХ | Не поддерживаемый | |
Образуйте решетку allpass | Поддерживаемый | |
Образуйте решетку авторегрессивный (AR) | Поддерживаемый | |
Образуйте решетку авторегрессивное скользящее среднее значение (ARMA) | Поддерживаемый | |
Образуйте решетку скользящее среднее значение (MA) для максимальной фазы | Поддерживаемый | |
Образуйте решетку скользящее среднее значение (MA) для минимальной фазы | Поддерживаемый | |
Двойной, allpass решетка | Поддерживаемый | |
Двойной, allpass образовывают решетку со степенью дополнительный вывод | Поддерживаемый | |
Пространство состояний | Поддерживаемый | |
Скалярный объект усиления | Поддерживаемый | |
Волна Allpass цифровой объект фильтра | Поддерживаемый | |
Фильтры располагаются последовательно | Поддерживаемый | |
Фильтры располагаются параллельно | Поддерживаемый |
Для получения дополнительной информации о каждой структуре обратитесь к ее странице с описанием.
hd = design(d,'designmethod')
возвращает объект dfilt
hd
, следующий из объекта спецификации фильтров d
и метод разработки, который вы задаете в designmethod
. Когда вы не используете аргумент designmethod
, design
использует метод оформления по умолчанию, чтобы создать фильтр из объекта d
.
С этим синтаксисом вы разрабатываете фильтры по:
Задавая спецификации фильтра, такие как форма ответа (возможно, highpass) и детали (ребра полосы пропускания и затухание).
Выбор метода (такого как equiripple
), чтобы разработать фильтр.
Применение метода к спецификациям возражает с design(d,'designmethod)
.
Используя основанный на спецификации метод может быть более эффективным, чем основанные на коэффициенте методы проектирования фильтра.
Когда вы используете синтаксис
, вы имеете область значений в наличии методов разработки в зависимости от hd = design(d,'designmethod')
d
, объекта спецификации фильтров. В следующей таблице перечислены все методы разработки в тулбоксе.
Метод разработки | Отфильтруйте результат проекта |
---|---|
БИХ Баттерворта | |
Чебышевский БИХ типа I | |
Чебышевский БИХ типа II | |
Эллиптический БИХ | |
Equiripple с той же пульсацией в передаче и полосах задерживания | |
КИХ наименьших квадратов | |
Выбранный частотой КИХ | |
Интерполированный КИХ | |
Наименьшее количество БИХ нормы Pth | |
БИХ наименьших квадратов | |
Оконный кайзером КИХ | |
Дробный фильтр задержки | |
Многоступенчатый КИХ | |
Оконный КИХ |
Когда объект
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
Выполняет фильтрацию с помощью объекта dfilt
.
Возвращает тип (1-4) линейного фильтра фазы FIR.
Строит частотную характеристику в fvtool
. В отличие от функции freqz
, этот метод freqz
dfilt
имеет длину по умолчанию 8 192.
Строит групповую задержку fvtool
.
Строит импульсный ответ в fvtool
.
impzlength
Возвращает продолжительность импульсного ответа.
info
Отображения информация о dfilt
, такие как структура фильтра, длина, устойчивость, линейная фаза, и, в надлежащих случаях, решетка и продолжительность лестничной структуры.
isallpass
Возвращает логический 1
(т.е. верный), если объект dfilt
в фильтре allpass или логическом 0
(т.е. ложь), если это не.
Возвращает логический 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
принят, чтобы быть в герц.
Преобразовывает dfilt
в Систему фильтра object™. Смотрите страницу с описанием для списка поддерживаемых объектов.
Преобразовывает dfilt
в передаточную функцию.
Строит нулевой фазовый отклик в fvtool
.
Преобразовывает dfilt
в форму нулевого полюсного усиления.
Строит нулевой полюсом график в 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.
Обратитесь к страницам с описанием для каждой структуры для большего количества примеров.
Смотрите также
design
| dfilt
| dfilt.cascade
| dfilt.df1
| dfilt.df1t
| dfilt.df2
| dfilt.df2t
| dfilt.dfasymfir
| dfilt.dffir
| dfilt.dffirt
| dfilt.dfsymfir
| dfilt.latticeallpass
| dfilt.latticear
| dfilt.latticearma
| dfilt.latticemamax
| dfilt.latticemamin
| dfilt.parallel
| dfilt.statespace
| fdesign
| filter
| freqz
| grpdelay
| impz
| realizemdl
| sos
| stepz
| zplane
Введенный в R2011a