То В этом примере показано, как использовать несколько анализов фильтра, функционирует в окне одной фигуры при помощи Инструмента Визуализации Фильтра (FVTool), Графический интерфейс пользователя, доступный в Signal Processing Toolbox™.
FVTool также имеет Прикладной программный интерфейс (API), который позволяет вам взаимодействовать с графический интерфейсом пользователя из командной строки. Это позволяет вам интегрировать FVTool в другие приложения.
Мы хотим создать фильтр lowpass с частотой полосы пропускания 0.4π рад/выборка, частота полосы задерживания 0.6π рад/выборка, неравномерность в полосе пропускания 1 дБ и затухание в полосе задерживания 80 дБ. Мы будем проектировать фильтры с помощью некоторых инструментов создания фильтра Signal Processing Toolbox и затем анализировать результаты в FVTool.
Спроектируйте lowpass equiripple КИХ-фильтр
Df1 = designfilt('lowpassfir','PassbandFrequency',0.4,... 'StopbandFrequency',0.6,... 'PassbandRipple',1,... 'StopbandAttenuation',80,... 'DesignMethod','equiripple');
Спроектируйте lowpass эллиптический БИХ-фильтр
Df2 = designfilt('lowpassiir','PassbandFrequency',0.4,... 'StopbandFrequency',0.6,... 'PassbandRipple',1,... 'StopbandAttenuation',80,... 'DesignMethod','ellip');
Запустите FVTool с объектами фильтра и возвратите указатель на FVTool, который позволяет нам снова использовать ту же фигуру FVTool.
hfvt = fvtool(Df1, Df2);
Мы можем заметить, что оба фильтра соответствуют спецификациям проекта, но мы также хотим, чтобы видеть, как хорошо Чебышевский проект Типа II выполняет.
Можно добавить фильтр в FVTool использование функции ADDFILTER.
Df3 = designfilt('lowpassiir','PassbandFrequency',0.4,... 'StopbandFrequency',0.6,... 'PassbandRipple',1,... 'StopbandAttenuation',80,... 'DesignMethod','cheby2'); addfilter(hfvt, Df3);
Идентифицировать, какая линия на графике принадлежит, в который фильтр, можно добавить легенду с помощью функции ЛЕГЕНДЫ указателя FVTool.
legend(hfvt, 'Equiripple', 'Elliptic', 'Chebyshev Type II');
Можно удалить фильтр из FVTool использование функции DELETEFILTER и передача индекса фильтра (фильтров), который вы хотите демонтировать.
deletefilter(hfvt, [1 3]);
Указатель, который возвращает FVTool, содержит свойства, которые позволяют вам взаимодействовать и с фильтром и с текущим анализом.
Чтобы видеть все доступные свойства, можно использовать команду GET. Первые свойства являются теми из обычной фигуры MATLAB®. Последние четырнадцать свойств FVTool конкретный. Последние шесть из них (от FrequencyScale до MagnitudeDisplay) являются конкретным анализом.
s = get(hfvt);
% Keep the last 14 properties
c = struct2cell(s);
f = fieldnames(s);
s = cell2struct(c(end-14:end),f(end-14:end),1)
s = struct with fields:
Tag: 'filtervisualizationtool'
UIContextMenu: [0x0 GraphicsPlaceholder]
UserData: []
Visible: 'on'
NormalizeMagnitudeto1: 'off'
NormalizedFrequency: 'on'
ShowReference: 'on'
PolyphaseView: 'off'
FrequencyScale: 'Linear'
MagnitudeDisplay: 'Magnitude (dB)'
FrequencyRange: '[0, pi)'
Analysis: 'magnitude'
FrequencyVector: [1x256 double]
NumberofPoints: 8192
OverlayedAnalysis: ''
Все параметры, которые доступны от Аналитического диалогового окна Параметров FVTOOL, также доступны как свойства объекта FVTool. Команда НАБОРА только с двумя входными параметрами возвращает все возможные значения.
set(hfvt, 'MagnitudeDisplay')
ans = 1x4 cell array
Columns 1 through 3
{'Magnitude'} {'Magnitude (dB)'} {'Magnitude squared'}
Column 4
{'Zero-phase'}
Повернитесь отображение к 'Величине Придало квадратную форму'
hfvt.MagnitudeDisplay = 'Magnitude Squared';
Получите все возможные значения для свойства 'Analysis'
set(hfvt, 'Analysis')
ans = 1x12 cell array
Columns 1 through 5
{'magnitude'} {'phase'} {'freq'} {'grpdelay'} {'phasedelay'}
Columns 6 through 10
{'impulse'} {'step'} {'polezero'} {'coefficients'} {'info'}
Columns 11 through 12
{'magestimate'} {'noisepower'}
Давайте теперь изменим анализ, чтобы посмотреть на Ответ Групповой задержки фильтра.
hfvt.Analysis = 'grpdelay';
Команда GET возвратит новые Аналитические Параметры для нового анализа.
GroupDelayUnits = hfvt.GroupDelayUnits;
Мы также хотели бы, чтобы видеть, как Групповая задержка и ответ величины накладываются в частотном диапазоне.
Можно наложить любые два исследования в FVTool, которые совместно используют общую ось X (время или частота) путем установки свойства 'OverlayedAnalysis'.
set(hfvt, 'OverlayedAnalysis', 'magnitude', 'Legend', 'On')
Чтобы выключить overlayed анализ просто устанавливает свойство 'OverlayedAnalysis' на ''.
hfvt.OverlayedAnalysis = '';
Окно FVTool может также быть аннотировано как нормальное окно рисунка.
Фигура FVTool ведет себя как нормальное окно рисунка. Это позволяет вам использовать сетку MATLAB и функции оси.
grid on
axis([.3 .45 5 25]);
Ось также доступна из командной строки. Это позволяет вам изменять заголовок и метки.
title('Group Delay of an Elliptic filter'); xlabel('Frequency (normalized to 1)'); ylabel('Group Delay in samples'); htext = text(.35, 23, 'Maximum Group Delay');
FVTool автоматически не удалит дополнительные аннотации из вашего анализа, можно сделать это путем удаления самого указателя. Можно закрыть фигуру FVTool путем вызывания близкой функции на указателе FVTool.
delete(htext); close(hfvt)