designfilt

Спроектируйте цифровые фильтры

designfilt больше не помогает в исправлении вызовов функции в рамках скрипта или функции. Для получения дополнительной информации см. Вопросы совместимости.

Описание

пример

d = designfilt(resp,Name,Value) проектирует digitalFilter объект, d, с ответом вводят resp. Примеры resp 'lowpassfir' и 'bandstopiir'. Задайте фильтр далее с помощью набора Аргументов в виде пар имя-значение. Позволенные наборы спецификации зависят от resp и состойте из комбинаций их:

  • Frequency Constraints соответствует частотам, на которых фильтр предоставляет желаемое поведение. Примеры включают 'PassbandFrequency' и 'CutoffFrequency'. Необходимо всегда задавать ограничения частоты.

  • Magnitude Constraints описывает поведение фильтра в конкретных частотных диапазонах. Примеры включают 'PassbandRipple' и 'StopbandAttenuation'. designfilt обеспечивает значения по умолчанию для ограничений величины, оставленных незаданными. В проектах произвольной величины необходимо всегда задавать векторы из желаемых амплитуд.

  • Filter Order. Некоторые методы разработки позволяют вам задать порядок. Другие производят проекты минимального порядка. Таким образом, они генерируют самые маленькие фильтры, которые удовлетворяют заданным ограничениям.

  • Design Method является алгоритмом, используемым, чтобы спроектировать фильтр. Примеры включают метод наименьших квадратов с ограничениями ('cls') и работа с окнами Кайзера ('kaiserwin'). Для некоторых наборов спецификации существует несколько методов разработки, доступных, чтобы выбрать из. В других случаях можно использовать только один метод, чтобы выполнить желаемым техническим требованиям.

  • Design Method Options является параметрами, характерными для данного метода разработки. Примеры включают 'Window' для 'window' метод и оптимизация 'Weights' для произвольной величины equiripple проекты. designfilt обеспечивает значения по умолчанию для проектных решений, оставленных незаданными.

  • Sample Rate является частотой, на которой действует фильтр. designfilt имеет частоту дискретизации по умолчанию 2 Гц. Используя это значение эквивалентно работе с нормированными частотами.

Примечание

Если вы задаете неполный или противоречивый набор аргументов name-value в командной строке, designfilt предложения открыть Ассистент Создания фильтра. Ассистент помогает вам спроектировать фильтр и вставляет откорректированный MATLAB® код по командной строке.

Если вы вызываете designfilt из скрипта или функции с неправильным набором технических требований, designfilt выдает ошибку сообщение со ссылкой, чтобы открыть Ассистент Создания фильтра. Ассистент помогает вам спроектировать фильтр и вставляет откорректированный код MATLAB по командной строке. Спроектированный фильтр сохранен в рабочую область.

  • Использование filter в форме dataOut = filter(d,dataIn) отфильтровать сигнал с digitalFilterD. Для БИХ-фильтров, filter функционируйте использует прямую форму II реализаций.

  • Используйте FVTool, чтобы визуализировать digitalFilterD.

  • Введите d.Coefficients получить коэффициенты digitalFilterD. Для БИХ-фильтров коэффициенты описываются как секции второго порядка.

  • Смотрите digitalFilter для списка функций фильтрации и анализа, доступных для использования с digitalFilter объекты.

designfilt(d) позволяет вам отредактировать существующий цифровой фильтр, d. Это открывает Ассистент Создания фильтра, заполненный с техническими требованиями фильтра, которые можно затем изменить. Это - единственный способ, которым можно отредактировать digitalFilter объект. Его свойства в противном случае только для чтения.

Примеры

свернуть все

Спроектируйте минимальный порядок КИХ-фильтр lowpass с нормированной частотой полосы пропускания 0.25π рад/отсчет, частота полосы задерживания 0.35π рад/отсчет, неравномерность в полосе пропускания 0,5 дБ и затухание в полосе задерживания 65 дБ. Используйте окно Кайзера, чтобы спроектировать фильтр. Визуализируйте его ответ величины. Используйте его, чтобы отфильтровать вектор из случайных данных.

lpFilt = designfilt('lowpassfir','PassbandFrequency',0.25, ...
         'StopbandFrequency',0.35,'PassbandRipple',0.5, ...
         'StopbandAttenuation',65,'DesignMethod','kaiserwin');
fvtool(lpFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = rand(1000,1);
dataOut = filter(lpFilt,dataIn);

Спроектируйте БИХ-фильтр lowpass с порядком 8, частота полосы пропускания 35 кГц и неравномерность в полосе пропускания 0,2 дБ. Задайте частоту дискретизации 200 кГц. Визуализируйте ответ величины фильтра.

lpFilt = designfilt('lowpassiir','FilterOrder',8, ...
         'PassbandFrequency',35e3,'PassbandRipple',0.2, ...
         'SampleRate',200e3);
fvtool(lpFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

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

dataIn = randn(1000,1);
dataOut = filter(lpFilt,dataIn);

Выведите коэффициенты фильтра, описанные как секции второго порядка.

sos = lpFilt.Coefficients
sos = 4×6

    0.2666    0.5333    0.2666    1.0000   -0.8346    0.9073
    0.1943    0.3886    0.1943    1.0000   -0.9586    0.7403
    0.1012    0.2023    0.1012    1.0000   -1.1912    0.5983
    0.0318    0.0636    0.0318    1.0000   -1.3810    0.5090

Спроектируйте минимальный порядок highpass КИХ-фильтр с нормированной частотой полосы задерживания 0.25π рад/отсчет, частота полосы пропускания 0.35π рад/отсчет, неравномерность в полосе пропускания 0,5 дБ и затухание в полосе задерживания 65 дБ. Используйте окно Кайзера, чтобы спроектировать фильтр. Визуализируйте его ответ величины. Используйте его, чтобы отфильтровать 1 000 выборок случайных данных.

hpFilt = designfilt('highpassfir','StopbandFrequency',0.25, ...
         'PassbandFrequency',0.35,'PassbandRipple',0.5, ...
         'StopbandAttenuation',65,'DesignMethod','kaiserwin');
fvtool(hpFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(hpFilt,dataIn);

Спроектируйте highpass БИХ-фильтр с порядком 8, частота полосы пропускания 75 кГц и неравномерность в полосе пропускания 0,2 дБ. Задайте частоту дискретизации 200 кГц. Визуализируйте ответ величины фильтра. Примените фильтр к вектору с 1000 выборками из случайных данных.

hpFilt = designfilt('highpassiir','FilterOrder',8, ...
         'PassbandFrequency',75e3,'PassbandRipple',0.2, ...
         'SampleRate',200e3);
fvtool(hpFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(hpFilt,dataIn);

Спроектируйте КИХ-фильтр полосы пропускания 20-го порядка с более низкой частотой среза, 500 Гц и более высокой частотой среза 560 Гц. Частота дискретизации составляет 1 500 Гц. Визуализируйте ответ величины фильтра. Используйте его, чтобы отфильтровать случайный сигнал, содержащий 1 000 выборок.

bpFilt = designfilt('bandpassfir','FilterOrder',20, ...
         'CutoffFrequency1',500,'CutoffFrequency2',560, ...
         'SampleRate',1500);
fvtool(bpFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(bpFilt,dataIn);

Выведите коэффициенты фильтра.

b = bpFilt.Coefficients
b = 1×21

   -0.0113    0.0067    0.0125   -0.0445    0.0504    0.0101   -0.1070    0.1407   -0.0464   -0.1127    0.1913   -0.1127   -0.0464    0.1407   -0.1070    0.0101    0.0504   -0.0445    0.0125    0.0067   -0.0113

Спроектируйте БИХ-фильтр полосы пропускания 20-го порядка с более низкой частотой на 3 дБ, 500 Гц и более высокой частотой на 3 дБ 560 Гц. Частота дискретизации составляет 1 500 Гц. Визуализируйте частотную характеристику фильтра. Используйте его, чтобы отфильтровать случайный сигнал с 1000 выборками.

bpFilt = designfilt('bandpassiir','FilterOrder',20, ...
         'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...
         'SampleRate',1500);
fvtool(bpFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(bpFilt,dataIn);

Спроектируйте 20-й порядок bandstop КИХ-фильтр с более низкой частотой среза, 500 Гц и более высокой частотой среза 560 Гц. Частота дискретизации составляет 1 500 Гц. Визуализируйте ответ величины фильтра. Используйте его, чтобы отфильтровать 1 000 выборок случайных данных.

bsFilt = designfilt('bandstopfir','FilterOrder',20, ...
         'CutoffFrequency1',500,'CutoffFrequency2',560, ...
         'SampleRate',1500);
fvtool(bsFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(bsFilt,dataIn);

Спроектируйте 20-й порядок bandstop БИХ-фильтр с более низкой частотой на 3 дБ, 500 Гц и более высокой частотой на 3 дБ 560 Гц. Частота дискретизации составляет 1 500 Гц. Визуализируйте ответ величины фильтра. Используйте его, чтобы отфильтровать 1 000 выборок случайных данных.

bsFilt = designfilt('bandstopiir','FilterOrder',20, ...
         'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...
         'SampleRate',1500);
fvtool(bsFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(bsFilt,dataIn);

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

dFilt = designfilt('differentiatorfir','FilterOrder',7);
fvtool(dFilt,'MagnitudeDisplay','Zero-phase')

Figure Filter Visualization Tool - Zero-phase Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Zero-phase Response contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(dFilt,dataIn);

Спроектируйте Гильбертов трансформатор порядка 18. Задайте нормированную ширину перехода 0.25π рад/отсчет. Отобразите в линейных модулях ответ величины фильтра. Используйте его, чтобы отфильтровать вектор с 1000 выборками из случайных данных.

hFilt = designfilt('hilbertfir','FilterOrder',18,'TransitionWidth',0.25);
fvtool(hFilt,'MagnitudeDisplay','magnitude')

Figure Filter Visualization Tool - Magnitude Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(hFilt,dataIn);

Вам дают сигнал, произведенный на уровне 1 кГц. Спроектируйте фильтр, который останавливает частоты между 100 Гц и 350 Гц и частоты, больше, чем 400 Гц. Задайте порядка фильтра 60. Визуализируйте частотную характеристику фильтра. Используйте его, чтобы отфильтровать случайный сигнал с 1000 выборками.

mbFilt = designfilt('arbmagfir','FilterOrder',60, ...
         'Frequencies',0:50:500,'Amplitudes',[1 1 1 0 0 0 0 1 1 0 0], ...
         'SampleRate',1000);
fvtool(mbFilt)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

dataIn = randn(1000,1);
dataOut = filter(mbFilt,dataIn);

Входные параметры

свернуть все

Отфильтруйте ответ и тип в виде вектора символов или строкового скаляра.

Выберите эту опцию, чтобы спроектировать конечную импульсную характеристику (FIR) фильтр lowpass. Этот пример использует пятый набор спецификации из таблицы.

d = designfilt('lowpassfir', ...        % Response type
       'FilterOrder',25, ...            % Filter order
       'PassbandFrequency',400, ...     % Frequency constraints
       'StopbandFrequency',550, ...
       'DesignMethod','ls', ...         % Design method
       'PassbandWeight',1, ...          % Design method options
       'StopbandWeight',2, ...
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'PassbandFrequency'

'StopbandFrequency'

'PassbandRipple'

'StopbandAttenuation'

'equiripple' (значение по умолчанию)

N/A

'kaiserwin'

'MinOrder'

'ScalePassband'

'FilterOrder'

'HalfPowerFrequency'

N/A

'maxflat'

N/A

'FilterOrder'

'CutoffFrequency'

N/A

'window'

'Window'

'ScalePassband'

'FilterOrder'

'CutoffFrequency'

'PassbandRipple'

'StopbandAttenuation'

'cls'

'PassbandOffset'

'ZeroPhase'

'FilterOrder'

'PassbandFrequency'

'StopbandFrequency'

N/A

'equiripple' (значение по умолчанию)

'PassbandWeight'

'StopbandWeight'

'ls'

'PassbandWeight'

'StopbandWeight'

Выберите эту опцию, чтобы спроектировать бесконечную импульсную характеристику (IIR) фильтр lowpass. Этот пример использует первый набор спецификации из таблицы.

d = designfilt('lowpassiir', ...        % Response type
       'PassbandFrequency',400, ...     % Frequency constraints
       'StopbandFrequency',550, ...
       'PassbandRipple',4, ...          % Magnitude constraints
       'StopbandAttenuation',55, ...
       'DesignMethod','ellip', ...      % Design method
       'MatchExactly','passband', ...   % Design method options
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'PassbandFrequency'

'StopbandFrequency'

'PassbandRipple'

'StopbandAttenuation'

'butter' (значение по умолчанию)

'MatchExactly'

'cheby1'

'MatchExactly'

'cheby2'

'MatchExactly'

'ellip'

'MatchExactly'

'FilterOrder'

'HalfPowerFrequency'

N/A

'butter'

N/A

'FilterOrder'

'PassbandFrequency'

'PassbandRipple'

'cheby1'

N/A

'FilterOrder'

'PassbandFrequency'

'PassbandRipple'

'StopbandAttenuation'

'ellip'

N/A

'FilterOrder'

'StopbandFrequency'

'StopbandAttenuation'

'cheby2'

N/A

'NumeratorOrder'

'DenominatorOrder'

'HalfPowerFrequency'

N/A

'butter'

N/A

Выберите эту опцию, чтобы спроектировать конечную импульсную характеристику (FIR) highpass фильтр. Этот пример использует первый набор спецификации из таблицы.

d = designfilt('highpassfir', ...       % Response type
       'StopbandFrequency',400, ...     % Frequency constraints
       'PassbandFrequency',550, ...
       'StopbandAttenuation',55, ...    % Magnitude constraints
       'PassbandRipple',4, ...
       'DesignMethod','kaiserwin', ...  % Design method
       'ScalePassband',false, ...       % Design method options
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'StopbandFrequency'

'PassbandFrequency'

'StopbandAttenuation'

'PassbandRipple'

'equiripple' (значение по умолчанию)

N/A

'kaiserwin'

'MinOrder'

'ScalePassband'

'FilterOrder'

'CutoffFrequency'

N/A

'window'

'Window'

'ScalePassband'

'FilterOrder'

'CutoffFrequency'

'StopbandAttenuation'

'PassbandRipple'

'cls'

'PassbandOffset'

'ZeroPhase'

'FilterOrder'

'StopbandFrequency'

'PassbandFrequency'

N/A

'equiripple' (значение по умолчанию)

'PassbandWeight'

'StopbandWeight'

'ls'

'PassbandWeight'

'StopbandWeight'

Выберите эту опцию, чтобы спроектировать бесконечную импульсную характеристику (IIR) highpass фильтр. Этот пример использует первый набор спецификации из таблицы.

d = designfilt('highpassiir', ...       % Response type
       'StopbandFrequency',400, ...     % Frequency constraints
       'PassbandFrequency',550, ...
       'StopbandAttenuation',55, ...    % Magnitude constraints
       'PassbandRipple',4, ...
       'DesignMethod','cheby1', ...     % Design method
       'MatchExactly','stopband', ...   % Design method options
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'StopbandFrequency'

'PassbandFrequency'

'StopbandAttenuation'

'PassbandRipple'

'butter' (значение по умолчанию)

'MatchExactly'

'cheby1'

'MatchExactly'

'cheby2'

'MatchExactly'

'ellip'

'MatchExactly'

'FilterOrder'

'HalfPowerFrequency'

N/A

'butter'

N/A

'FilterOrder'

'PassbandFrequency'

'PassbandRipple'

'cheby1'

N/A

'FilterOrder'

'PassbandFrequency'

'StopbandAttenuation'

'PassbandRipple'

'ellip'

N/A

'FilterOrder'

'StopbandFrequency'

'StopbandAttenuation'

'cheby2'

N/A

'NumeratorOrder'

'DenominatorOrder'

'HalfPowerFrequency'

N/A

'butter'

N/A

Выберите эту опцию, чтобы спроектировать полосовой фильтр конечной импульсной характеристики (FIR). Этот пример использует четвертый набор спецификации из таблицы.

d = designfilt('bandpassfir', ...       % Response type
       'FilterOrder',86, ...            % Filter order
       'StopbandFrequency1',400, ...    % Frequency constraints
       'PassbandFrequency1',450, ...
       'PassbandFrequency2',600, ...
       'StopbandFrequency2',650, ...
       'DesignMethod','ls', ...         % Design method
       'StopbandWeight1',1, ...         % Design method options
       'PassbandWeight', 2, ...
       'StopbandWeight2',3, ...
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'StopbandFrequency1'

'PassbandFrequency1'

'PassbandFrequency2'

'StopbandFrequency2'

'StopbandAttenuation1'

'PassbandRipple'

'StopbandAttenuation2'

'equiripple' (значение по умолчанию)

N/A

'kaiserwin'

'MinOrder'

ScalePassband

'FilterOrder'

'CutoffFrequency1'

'CutoffFrequency2'

N/A

'window'

'Window'

'ScalePassband'

'FilterOrder'

'CutoffFrequency1'

'CutoffFrequency2'

'StopbandAttenuation1'

'PassbandRipple'

'StopbandAttenuation2'

'cls'

'PassbandOffset'

'ZeroPhase'

'FilterOrder'

'StopbandFrequency1'

'PassbandFrequency1'

'PassbandFrequency2'

'StopbandFrequency2'

N/A

'equiripple' (значение по умолчанию)

'StopbandWeight1'

'PassbandWeight'

'StopbandWeight2'

'ls'

'StopbandWeight1'

'PassbandWeight'

'StopbandWeight2'

Выберите эту опцию, чтобы спроектировать полосовой фильтр бесконечной импульсной характеристики (IIR). Этот пример использует первый набор спецификации из таблицы.

d = designfilt('bandpassiir', ...       % Response type
       'StopbandFrequency1',400, ...    % Frequency constraints
       'PassbandFrequency1',450, ...
       'PassbandFrequency2',600, ...
       'StopbandFrequency2',650, ...
       'StopbandAttenuation1',40, ...   % Magnitude constraints
       'PassbandRipple',1, ...
       'StopbandAttenuation2',50, ...
       'DesignMethod','ellip', ...      % Design method
       'MatchExactly','passband', ...   % Design method options
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'StopbandFrequency1'

'PassbandFrequency1'

'PassbandFrequency2'

'StopbandFrequency2'

'StopbandAttenuation1'

'PassbandRipple'

'StopbandAttenuation2'

'butter' (значение по умолчанию)

'MatchExactly'

'cheby1'

'MatchExactly'

'cheby2'

'MatchExactly'

'ellip'

'MatchExactly'

'FilterOrder'

'HalfPowerFrequency1'

'HalfPowerFrequency2'

N/A

'butter'

N/A

'FilterOrder'

'PassbandFrequency1'

'PassbandFrequency2'

'PassbandRipple'

'cheby1'

N/A

'FilterOrder'

'PassbandFrequency1'

'PassbandFrequency2'

'StopbandAttenuation1'

'PassbandRipple'

'StopbandAttenuation2'

'ellip'

N/A

'FilterOrder'

'StopbandFrequency1'

'StopbandFrequency2'

'StopbandAttenuation'

'cheby2'

N/A

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

d = designfilt('bandstopfir', ...       % Response type
       'FilterOrder',32, ...            % Filter order
       'PassbandFrequency1',400, ...    % Frequency constraints
       'StopbandFrequency1',500, ...
       'StopbandFrequency2',700, ...
       'PassbandFrequency2',850, ...
       'DesignMethod','ls', ...         % Design method
       'PassbandWeight1',1, ...         % Design method options
       'StopbandWeight', 3, ...
       'PassbandWeight2',5, ...
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'PassbandFrequency1'

'StopbandFrequency1'

'StopbandFrequency2'

'PassbandFrequency2'

'PassbandRipple1'

'StopbandAttenuation'

'PassbandRipple2'

'equiripple' (значение по умолчанию)

N/A

'kaiserwin'

'MinOrder'

'ScalePassband'

'FilterOrder'

'CutoffFrequency1'

'CutoffFrequency2'

N/A

'window'

'Window'

'ScalePassband'

'FilterOrder'

'CutoffFrequency1'

'CutoffFrequency2'

'PassbandRipple1'

'StopbandAttenuation'

'PassbandRipple2'

'cls'

'PassbandOffset'

'ZeroPhase'

'FilterOrder'

'PassbandFrequency1'

'StopbandFrequency1'

'StopbandFrequency2'

'PassbandFrequency2'

N/A

'equiripple' (значение по умолчанию)

'PassbandWeight1'

'StopbandWeight'

'PassbandWeight2'

'ls'

'PassbandWeight1'

'StopbandWeight'

'PassbandWeight2'

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

d = designfilt('bandstopiir', ...       % Response type
       'PassbandFrequency1',400, ...    % Frequency constraints
       'StopbandFrequency1',500, ...
       'StopbandFrequency2',700, ...
       'PassbandFrequency2',850, ...
       'PassbandRipple1',1, ...         % Magnitude constraints
       'StopbandAttenuation',55, ...
       'PassbandRipple2',1, ...
       'DesignMethod','ellip', ...      % Design method
       'MatchExactly','both', ...       % Design method options
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' (при необходимости), или любое из ограничений частоты, designfilt выдает ошибку.

  • Если вы не используете ограничения величины, designfilt значения по умолчанию использования.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

N/A (Проект Минимального порядка)

'PassbandFrequency1'

'StopbandFrequency1'

'StopbandFrequency2'

'PassbandFrequency2'

'PassbandRipple1'

'StopbandAttenuation'

'PassbandRipple2'

'butter' (значение по умолчанию)

'MatchExactly'

'cheby1'

'MatchExactly'

'cheby2'

'MatchExactly'

'ellip'

'MatchExactly'

'FilterOrder'

'HalfPowerFrequency1'

'HalfPowerFrequency2'

N/A

'butter'

N/A

'FilterOrder'

'PassbandFrequency1'

'PassbandFrequency2'

'PassbandRipple'

'cheby1'

N/A

'FilterOrder'

'PassbandFrequency1'

'PassbandFrequency2'

'PassbandRipple'

'StopbandAttenuation'

'ellip'

N/A

'FilterOrder'

'StopbandFrequency1'

'StopbandFrequency2'

'StopbandAttenuation'

'cheby2'

N/A

Выберите эту опцию, чтобы спроектировать фильтр дифференциатора конечной импульсной характеристики (FIR). Этот пример использует второй набор спецификации из таблицы.

d = designfilt('differentiatorfir', ... % Response type
       'FilterOrder',42, ...            % Filter order
       'PassbandFrequency',400, ...     % Frequency constraints
       'StopbandFrequency',500, ...
       'DesignMethod','equiripple', ... % Design method
       'PassbandWeight',1, ...          % Design method options
       'StopbandWeight',4, ...
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder', или любое из ограничений частоты при разработке дифференциатора частичной полосы, designfilt выдает ошибку.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

'FilterOrder'

N/A

N/A

'equiripple' (значение по умолчанию)

N/A

'ls'

N/A

'FilterOrder'

'PassbandFrequency'

'StopbandFrequency'

N/A

'equiripple' (значение по умолчанию)

'PassbandWeight'

'StopbandWeight'

'ls'

N/A

Выберите эту опцию, чтобы спроектировать конечную импульсную характеристику (FIR) фильтр трансформатора Гильберта. Этот пример использует набор спецификации из таблицы.

d = designfilt('hilbertfir', ...        % Response type
       'FilterOrder',12, ...            % Filter order
       'TransitionWidth',400, ...       % Frequency constraints
       'DesignMethod','ls', ...         % Design method
       'SampleRate',2000)               % Sample rate

  • Если вы не используете 'FilterOrder' или 'TransitionWidth', designfilt выдает ошибку.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для Гильбертовых трансформаторов.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

'FilterOrder'

'TransitionWidth'

N/A

'equiripple' (значение по умолчанию)

N/A

'ls'

N/A

Выберите эту опцию, чтобы спроектировать фильтр конечной импульсной характеристики (FIR) произвольного ответа величины. Этот пример использует второй набор спецификации из таблицы.

d = designfilt('arbmagfir', ...         % Response type
       'FilterOrder',88, ...            % Filter order
       'NumBands',4, ...                % Frequency constraints
       'BandFrequencies1',[0 20], ...
       'BandFrequencies2',[25 40], ...
       'BandFrequencies3',[45 65], ...
       'BandFrequencies4',[70 100], ...
       'BandAmplitudes1',[2 2], ...     % Magnitude constraints
       'BandAmplitudes2',[0 0], ...
       'BandAmplitudes3',[1 1], ...
       'BandAmplitudes4',[0 0], ...
       'DesignMethod','ls', ...         % Design method
       'BandWeights1',[1 1]/10, ...     % Design method options
       'BandWeights2',[3 1], ...
       'BandWeights3',[2 4], ...
       'BandWeights4',[5 1], ...
       'SampleRate',200)                % Sample rate

  • Если вы не используете 'FilterOrder', или любое из ограничений частоты или величины, designfilt выдает ошибку.

  • Если вы не используете 'DesignMethod', designfilt использует метод оформления по умолчанию для набора спецификации.

  • Если вы не используете опции метода разработки, designfilt использует значения по умолчанию для предпочтительного метода разработки.

  • Если вы не используете 'SampleRate', designfilt наборы это к 2 Гц.

Имена аргумента порядка фильтраОграничительные имена аргумента частотыОграничительные имена аргумента величины'DesignMethod' Значения аргументовИмена аргумента проектного решения

'FilterOrder'

'Frequencies'

'Amplitudes'

'freqsamp' (значение по умолчанию)

'Window'

'equiripple'

'Weights'

'ls'

'Weights'

'FilterOrder'

'NumBands'

'BandFrequencies1'

'BandFrequenciesN'

'BandAmplitudes1'

'BandAmplitudesN'

'equiripple' (значение по умолчанию)

'BandWeights1'

'BandWeightsN'

'ls'

'BandWeights1'

'BandWeightsN'

Типы данных: char | string

Цифровой фильтр в виде digitalFilter объект сгенерирован designfilt. Используйте этот вход, чтобы изменить технические требования существующего digitalFilter.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'FilterOrder',20,'CutoffFrequency',0.4 достаточен, чтобы задать КИХ-фильтр lowpass.

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

Порядок фильтра

свернуть все

Порядок фильтра в виде положительного целочисленного скаляра.

Типы данных: double

Порядок числителя БИХ проектирует в виде положительного целочисленного скаляра.

Типы данных: double

Порядок знаменателя БИХ проектирует в виде положительного целочисленного скаляра.

Типы данных: double

Ограничения частоты

свернуть все

Частота полосы пропускания в виде положительной скалярной величины. Значение частоты должно быть в области значений Найквиста.

'PassbandFrequency1' более низкая частота полосы пропускания для проекта bandstop или полосы пропускания.

'PassbandFrequency2' более высокая частота полосы пропускания для проекта bandstop или полосы пропускания.

Типы данных: double

Частота полосы задерживания в виде положительной скалярной величины. Значение частоты должно быть в области значений Найквиста.

'StopbandFrequency1' более низкая частота полосы задерживания для проекта bandstop или полосы пропускания

'StopbandFrequency2' более высокая частота полосы задерживания для проекта bandstop или полосы пропускания.

Типы данных: double

Частота на 6 дБ в виде положительной скалярной величины. Значение частоты должно быть в области значений Найквиста.

'CutoffFrequency1' более низкая частота на 6 дБ для проекта bandstop или полосы пропускания.

'CutoffFrequency2' более высокая частота на 6 дБ для проекта bandstop или полосы пропускания.

Типы данных: double

Частота на 3 дБ в виде положительной скалярной величины. Значение частоты должно быть в области значений Найквиста.

'HalfPowerFrequency1' более низкая частота на 3 дБ для проекта bandstop или полосы пропускания.

'HalfPowerFrequency2' более высокая частота на 3 дБ для проекта bandstop или полосы пропускания.

Типы данных: double

Ширина области перехода между полосой пропускания и полосой задерживания для Гильбертова трансформатора в виде положительной скалярной величины.

Типы данных: double

Частоты ответа в виде вектора. Используйте эту переменную, чтобы перечислить частоты, на которых фильтр произвольного ответа величины желал амплитуд. Частоты должны монотонно увеличиваться и лежать в области значений Найквиста. Первый элемент вектора должен быть или 0 или –fs/2, где fs является частотой дискретизации, и ее последним элементом должен быть fs/2. Если вы не задаете частоту дискретизации, designfilt использует значение по умолчанию 2 Гц.

Типы данных: double

Количество полос в многополосном проекте в виде положительного целочисленного скаляра, не больше, чем 10.

Типы данных: double

Многополосные частоты ответа в виде числовых векторов. 'BandFrequenciesi', куда i запускается от 1 до 'NumBands', вектор, содержащий частоты, на которых i th полоса многополосного проекта имеет требуемые значения, 'BandAmplitudesi'. 'NumBands' может быть самое большее 10. Частоты должны лечь в области значений Найквиста и должны быть заданы в монотонно увеличивающемся порядке. Смежные диапазоны частот должны иметь ту же амплитуду на своем перекрестке.

Типы данных: double

Ограничения величины

свернуть все

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

'PassbandRipple1' неравномерность в полосе пропускания нижней полосы для проекта bandstop.

'PassbandRipple2' неравномерность в полосе пропускания более высокой полосы для проекта bandstop.

Типы данных: double

Затухание в полосе задерживания в виде положительной скалярной величины описывается в децибелах.

'StopbandAttenuation1' затухание в полосе задерживания нижней полосы для полосового проекта.

'StopbandAttenuation2' затухание в полосе задерживания более высокой полосы для полосового проекта.

Типы данных: double

Желаемые амплитуды ответа произвольного ответа величины фильтруют в виде вектора. Опишите амплитуды в линейных модулях. Вектор должен иметь ту же длину как 'Frequencies'.

Типы данных: double

Многополосные амплитуды ответа в виде числовых векторов. 'BandAmplitudesi', куда i запускается от 1 до 'NumBands', вектор, содержащий желаемые амплитуды в i th полоса многополосного проекта. 'NumBands' может быть самое большее 10. Опишите амплитуды в линейных модулях. 'BandAmplitudesi' должен иметь ту же длину как 'BandFrequenciesi'. Смежные диапазоны частот должны иметь ту же амплитуду на своем перекрестке.

Типы данных: double

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

свернуть все

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

  • 'butter' проектирует БИХ-фильтр Баттерворта. Фильтры Баттерворта имеют сглаженную монотонную частотную характеристику, которая является максимально плоской в полосе пропускания. Они жертвуют крутизной спада за плоскость.

  • 'cheby1' проектирует Чебышевский БИХ-фильтр типа I. Чебышевский тип , который я фильтрую, имеет частотную характеристику, которая является equiripple в полосе пропускания и максимально плоский в полосе задерживания. Их неравномерность в полосе пропускания увеличивается с увеличивающейся крутизной спада.

  • 'cheby2' проектирует Чебышевский БИХ-фильтр типа II. Чебышевские фильтры типа II имеют частотную характеристику, которая является максимально плоской в полосе пропускания и equiripple в полосе задерживания.

  • 'cls' проектирует КИХ-фильтр с помощью метода наименьших квадратов с ограничениями. Метод минимизирует несоответствие между заданной произвольной кусочной линейной функцией и ответом величины фильтра. В то же время это позволяет вам установить ограничения на неравномерность в полосе пропускания и затухание в полосе задерживания.

  • 'ellip' проектирует эллиптический БИХ-фильтр. Эллиптические фильтры имеют частотную характеристику, которая является equiripple и в полосе пропускания и в полосе задерживания.

  • 'equiripple' проектирует equiripple КИХ-фильтр с помощью алгоритма Парков-McClellan. Фильтры Equiripple имеют частотную характеристику, которая минимизирует максимальную величину пульсации по всем полосам.

  • 'freqsamp' проектирует КИХ-фильтр произвольного ответа величины путем выборки частотной характеристики однородно и взятия обратного преобразования Фурье.

  • 'kaiserwin' проектирует КИХ-фильтр с помощью метода окна Кайзера. Метод обрезает импульсную характеристику идеального фильтра и использует окно Кайзера, чтобы ослабить получившиеся колебания усечения.

  • 'ls' проектирует КИХ-фильтр с помощью наименьших квадратов. Метод минимизирует несоответствие между заданной произвольной кусочной линейной функцией и ответом величины фильтра.

  • 'maxflat' проектирует максимально плоский КИХ-фильтр. Эти фильтры имеют сглаженную монотонную частотную характеристику, которая является максимально плоской в полосе пропускания.

  • 'window' использует приближение наименьших квадратов, чтобы вычислить коэффициенты фильтра и затем сглаживает импульсную характеристику с 'Window'.

Типы данных: char | string

Опции метода разработки

свернуть все

Четность минимального порядка 'kaiserwin' спроектируйте в виде 'any' или 'even'. Когда вы устанавливаете 'MinOrder' к 'even', designfilt возвращает фильтр минимального порядка с даже порядком. Когда вы устанавливаете 'MinOrder' к 'any', возвращенный фильтр может иметь даже или нечетный порядок, какой бы ни меньше.

Типы данных: char | string

Окно в виде вектора из длины N + 1, где N является порядком фильтра. 'Window' может также быть соединен с именем окна или указателем на функцию, который указывает, что функция раньше генерировала окно. Любая такая функция должна взять N + 1, как сначала введено. Дополнительные входные параметры могут быть переданы путем определения массива ячеек. По умолчанию, 'Window' пустой вектор для 'freqsamp' метод разработки и @hamming для 'window' метод разработки.

Для списка доступных окон смотрите Windows.

Пример: 'Window',hann(N+1) и 'Window',(1-cos(2*pi*(0:N)'/N))/2 оба задают окно Hann, чтобы использовать с фильтром порядка N.

Пример: 'Window','hamming' задает Окно Хэмминга необходимого порядка.

Пример: 'Window',@mywindow позволяет вам задать свою собственную функцию окна.

Пример: 'Window',{@kaiser,0.5} задает окно Кайзера необходимого порядка параметром формы 0.5.

Типы данных: double | char | string | function_handle | cell

Полоса, чтобы соответствовать точно в виде 'stopband', 'passband', или 'both'. 'both' доступно только для эллиптического метода разработки, где это - значение по умолчанию. 'stopband' значение по умолчанию для 'butter' и 'cheby2' методы. 'passband' значение по умолчанию для 'cheby1'.

Типы данных: char | string

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

Пример: 'PassbandOffset',0 результаты в фильтре с модулем получают в полосе пропускания.

Пример: 'PassbandOffset',2 результаты в фильтре с усилением полосы пропускания 2 дБ или 1.259.

Типы данных: double

Масштабируйте полосу пропускания в виде логического скаляра. Когда вы устанавливаете 'ScalePassband' к true, полоса пропускания масштабируется после работы с окнами, так, чтобы фильтр имел модульное усиление на нулевой частоте.

Пример: 'Window',{@kaiser,0.1},'ScalePassband',true справка задает фильтр, ответ величины которого на нулевой частоте - точно 0 дБ. Дело обстоит не так, когда вы задаете 'ScalePassband',false. Чтобы проверить, визуализируйте фильтр с fvtool и увеличение.

Типы данных: логический

Нулевая фаза в виде логического скаляра. Когда вы устанавливаете 'ZeroPhase' к true, нулевой фазовый отклик получившегося фильтра всегда положителен. Это позволяет вам выполнить спектральную факторизацию на результате и получить фильтр минимальной фазы из него.

Типы данных: логический

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

'PassbandWeight1' вес оптимизации полосы пропускания нижней полосы для bandstop КИХ-проекта.

'PassbandWeight2' вес оптимизации полосы пропускания более высокой полосы для bandstop КИХ-проекта.

Типы данных: double

Вес оптимизации полосы задерживания в виде положительной скалярной величины.

'StopbandWeight1' вес оптимизации полосы задерживания нижней полосы для полосового КИХ-проекта.

'StopbandWeight2' вес оптимизации полосы задерживания более высокой полосы для полосового КИХ-проекта.

Типы данных: double

Веса оптимизации в виде положительной скалярной величины или вектора из той же длины как 'Amplitudes'.

Типы данных: double

Многополосные веса в виде наборов положительных скалярных величин или векторов. 'BandWeightsi', куда i запускается от 1 до 'NumBands', скаляр или вектор, содержащий веса оптимизации i th полоса многополосного проекта. Если задано как вектор, 'BandWeightsi' должен иметь ту же длину как 'BandAmplitudesi'.

Типы данных: double

Частота дискретизации

свернуть все

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

Типы данных: double

Выходные аргументы

свернуть все

Цифровой фильтр, возвращенный как digitalFilter объект.

Больше о

свернуть все

Ассистент создания фильтра

Если вы задаете неполный или противоречивый набор расчетных параметров, designfilt предложения открыть Ассистент Создания фильтра.

(В описании аргумента для resp существует полный список допустимых наборов спецификации для всех доступных типов ответа.)

Ассистент ведет себя по-другому, если вы вызываете designfilt в командной строке или в рамках скрипта или функции.

Ассистент создания фильтра в командной строке

Вам дают сигнал, произведенный на уровне 2 кГц. Вас просят спроектировать КИХ-фильтр lowpass, который подавляет частотные составляющие выше, чем 650 Гц. “Частота среза” походит на хорошего кандидата на параметр спецификации. Вы вводите этот код в командной строке MATLAB.

Fsamp = 2e3;
Fctff = 650;
dee = designfilt('lowpassfir','CutoffFrequency',Fctff, ...
    'SampleRate',Fsamp);

Что-то, кажется, неправильно, потому что это диалоговое окно появляется на вашем экране.

Filter Design Assistant dialog window

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

Filter Design Assistant dialog for lowpass FIR design

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

designfilt('lowpassfir','FilterOrder', 10, ...
    'CutoffFrequency',Fctff,'SampleRate',2000);

Введение имени фильтра повторяет информацию от диалогового окна.

dee
dee = 
 digitalFilter with properties:

    Coefficients: [-0.0036 0.0127 -0.0066 -0.0881 0.2595 ...
                   0.6521 0.2595 -0.0881 -0.0066 0.0127 -0.0036]
    Specifications:
    FrequencyResponse: 'lowpass'
      ImpulseResponse: 'fir'
           SampleRate: 2000
      CutoffFrequency: 650
          FilterOrder: 10
         DesignMethod: 'window'

 Use fvtool to visualize filter
 Use designfilt to edit filter
 Use filter to filter data

Вы вызываете FVTool и получаете график deeчастотная характеристика.

fvtool(dee)

Magnitude response plot using Filter Visualization Tool

Сокращение не выглядит особенно резким. Ответ выше 40 дБ для большинства частот. Вы помните, что у ассистента была опция, чтобы настроить “ограничение величины”, вызвал “затухание в полосе задерживания”. Откройте ассистент путем вызова designfilt с фильтром называют как вход.

designfilt(dee)

Нажмите Magnitude constraints выпадающее меню и выбирает Passband ripple and stopband attenuation. Вы видите, что метод разработки изменился от Window к FIR constrained least-squares. Значение по умолчанию для затухания составляет 60 дБ, который выше, чем 40. Нажмите OK и визуализируйте получившийся фильтр.

dee = designfilt('lowpassfir','FilterOrder',10, ...
    'CutoffFrequency',650,'PassbandRipple',1, ...
    'StopbandAttenuation',60,'SampleRate',2000);
fvtool(dee)

Magnitude response with passband ripple and stopband attenuation using Filter Visualization Tool

Сокращение все еще не выглядит резким. Затухание - действительно 60 дБ, но для частот выше 900 Гц.

Снова вызовите designfilt с вашим фильтром, как введено.

designfilt(dee)

Ассистент вновь появляется.

Filter Design Assistant dialog for modified lowpass FIR design

Чтобы сузить различие между принятыми и отклоненными частотами, увеличьте порядок фильтра или измените Frequency constraints от Cutoff (6dB) frequency к Passband and stopband frequencies. Если вы изменяете порядка фильтра от 10 до 50, вы получаете более резкий фильтр.

dee = designfilt('lowpassfir','FilterOrder',50, ...
    'CutoffFrequency',650,'PassbandRipple',1, ...
    'StopbandAttenuation',60,'SampleRate',2000);
fvtool(dee)

Magnitude response with increased filter order using Filter Visualization Tool

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

dee = designfilt('lowpassfir','PassbandFrequency',600, ...
    'StopbandFrequency',700,'PassbandRipple',1, ...
    'StopbandAttenuation',60,'SampleRate',2000);
fvtool(dee)

Magnitude response with modified passband and stopband frequencies using Filter Visualization Tool

Ассистент создания фильтра в скрипте или функции

Вам дают сигнал, произведенный на уровне 2 кГц. Вас просят спроектировать фильтр highpass, который останавливает частоты ниже 700 Гц. Вы не заботитесь о фазе сигнала, и необходимо работать с фильтром младшего разряда. Таким образом БИХ-фильтр кажется соответствующим. Вы не уверены, какой порядок фильтра является лучшим, таким образом, вы пишете функцию, которая принимает порядок как вход. Откройте редактор MATLAB и создайте файл.

function dataOut = hipassfilt(Order,dataIn)
hpFilter = designfilt('highpassiir','FilterOrder',N);
dataOut = filter(hpFilter,dataIn);
end

Чтобы протестировать вашу функцию, создайте сигнал, состоявший из двух синусоид с частотами 500 и 800 Гц, и сгенерируйте выборки в течение 0,1 с. Фильтр 5-го порядка кажется разумным как исходное предположение. Создайте скрипт под названием driveHPfilt.m.

% script driveHPfilt.m
Fsamp = 2e3;
Fsm = 500;
Fbg = 800;
t = 0:1/Fsamp:0.1;
sgin = sin(2*pi*Fsm*t)+sin(2*pi*Fbg*t);
N = 5;
sgout = hipassfilt(N,sgin);

Когда вы запускаете скрипт в командной строке, вы получаете сообщение об ошибке.

Сообщение об ошибке дает вам выбор открытия ассистента, чтобы откорректировать код MATLAB. Нажмите Click here получить Ассистент Создания фильтра на вашем экране.

Filter Design Assistant dialog for highpass IIR design

Вы видите проблему: Вы не задавали ограничение частоты. Вы также забыли устанавливать частоту дискретизации. После экспериментирования вы находите, что можно задать Frequency units как Hz, Passband frequency, равный 700 Гц и Input Fs, равняются 2 000 Гц. Design method изменяется от Butterworth к Chebyshev type I. Вы нажимаете OK и получаете это на командной строке.

hp = designfilt('highpassiir','FilterOrder',N, ...
    'PassbandFrequency',700,'PassbandRipple',1, ...
    'SampleRate',2000);

Новый digitalFilter объект hp сохранено в рабочую область. В зависимости от ваших конструктивных ограничений можно изменить набор спецификации.

Ассистент создания фильтра настройки

Можно установить designfilt никогда не предлагать Ассистенту Создания фильтра. Это действие устанавливает настройку MATLAB, которая может быть сброшена с setpref:

  • Используйте setpref('dontshowmeagain','filterDesignAssistant',false) предлагаться ассистент каждый раз. С этой командой можно получить ассистент, снова отключив его.

  • Используйте setpref('dontshowmeagain','filterDesignAssistant',true) отключить ассистент постоянно. Можно также нажать Do not show this message again в начальном диалоговом окне.

Можно установить designfilt всегда корректировать дефектные технические требования без выяснения. Это действие устанавливает настройку MATLAB, которая может быть сброшена при помощи setpref:

  • Используйте setpref('dontshowmeagain','filterDesignAssistantCodeCorrection',false) иметь designfilt откорректируйте свой код MATLAB, не прося подтверждение. Можно также нажать Always accept в поле диалогового окна подтверждения.

  • Используйте setpref('dontshowmeagain','filterDesignAssistantCodeCorrection',true) гарантировать тот designfilt корректирует ваш код MATLAB только, когда вы подтверждаете, что хотите изменения. С этой командой можно отменить эффект наличия, нажал Always accept в поле диалогового окна подтверждения.

Поиск и устранение проблем

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

  • Вам не предлагают ассистент, если вы используете оценку секции кода, или от Панели инструментов MATLAB или путем нажатия Ctrl+Enter. (См., Делят Ваш Файл на Разделы для получения дополнительной информации.)

  • Вам не предлагают ассистент, если ваш код имеет множественные вызовы designfilt, по крайней мере один из тех вызовов является неправильным, и

    • Вы вставляете код по командной строке и выполняете его путем нажатия Enter.

    • Вы выбираете код в Редакторе и выполняете его путем нажатия F9.

  • Вам не предлагают ассистент, если вы запускаете designfilt использование анонимной функции. (См. Анонимные функции для получения дополнительной информации.), Например, этот вход предлагает ассистенту.

    d = designfilt('lowpassfir','CutoffFrequency',0.6)
    Этот вход не делает.
    myFilterDesigner = @designfilt;
    d = myFilterDesigner('lowpassfir','CutoffFrequency',0.6)

  • Вам не предлагают ассистент, если вы запускаете designfilt использование eval. Например, этот вход предлагает ассистенту.

    d = designfilt('lowpassfir','CutoffFrequency',0.6)
    Этот вход не делает.
    myFilterDesigner = ...
        sprintf('designfilt(''%s'',''CutoffFrequency'',%f)', ...
        'lowpassfir',0.6);
    d = eval(myFilterDesigner)

Ассистент Создания фильтра требует Java® программное обеспечение и рабочий стол MATLAB, чтобы запуститься. Это не поддерживается, если вы запускаете MATLAB с -nojvm, -nodisplay, или -nodesktop опции.

Вопросы совместимости

развернуть все

Поведение изменяется в R2021b

Введенный в R2014a