dfilt

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

Синтаксис

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

Описание

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

Примечание

Необходимо использовать 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 = проект (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

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

filter

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

firtype

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

freqz

Строит частотную характеристику в fvtool. В отличие от этого, freqz функция, этот dfilt freqz метод имеет длину по умолчанию 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 возвращает a 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