В этом примере показов, как использовать несколько функций анализа фильтров в одну фигуру окне с помощью Инструмента визуализации фильтров (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);
Можно заметить, что оба фильтра соответствуют проектным спецификациям, но мы также хотим увидеть, насколько хорошо работает проект Chebyshev Type II.
Добавить фильтр к FVTool можно с помощью функции ADDFILTER.
Df3 = designfilt('lowpassiir','PassbandFrequency',0.4,... 'StopbandFrequency',0.6,... 'PassbandRipple',1,... 'StopbandAttenuation',80,... 'DesignMethod','cheby2'); addfilter(hfvt, Df3);
Чтобы определить, какая линия на графике принадлежит какому фильтру, можно добавить легенду с помощью функции LEGEND указателя 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:
SelectionHighlight: on
Tag: 'filtervisualizationtool'
UserData: []
Visible: on
PolyphaseView: 'off'
Analysis: 'magnitude'
MagnitudeDisplay: 'Magnitude (dB)'
OverlayedAnalysis: ''
NormalizedFrequency: 'on'
ShowReference: 'on'
FrequencyRange: '[0, pi)'
FrequencyScale: 'Linear'
FrequencyVector: [1x256 double]
NumberofPoints: 8192
NormalizeMagnitudeto1: 'off'
Все параметры, доступные из диалогового окна параметров анализа FVTool, также доступны как свойства объекта FVTool. Команда SET только с двумя входными параметрами возвращает все возможные значения.
set(hfvt, 'MagnitudeDisplay')
ans = 1x4 cell
Columns 1 through 3
{'Magnitude'} {'Magnitude (dB)'} {'Magnitude squared'}
Column 4
{'Zero-phase'}
Поверните отображение на 'Magnitude Squarid'
hfvt.MagnitudeDisplay = 'Magnitude Squared';
Получите все возможные значения свойства 'Analysis'
set(hfvt, 'Analysis')
ans = 1x12 cell
Columns 1 through 5
{'magnitude'} {'phase'} {'freq'} {'grpdelay'} {'phasedelay'}
Columns 6 through 10
{'impulse'} {'step'} {'polezero'} {'coefficients'} {'info'}
Columns 11 through 12
{'magestimate'} {'noisepower'}
Теперь давайте изменим анализ, чтобы просмотреть Group Delay Response фильтра.
hfvt.Analysis = 'grpdelay';
Команда GET вернет новые параметры анализа для нового анализа.
GroupDelayUnits = hfvt.GroupDelayUnits;
Мы также хотели бы увидеть, как задержка Группы и величины реакция перекрываются в частотный диапазон.
Можно наложить любые два анализа в FVTool, которые имеют общую ось x (время или частота), задав свойство 'OverlayedAnalysis'.
set(hfvt, 'OverlayedAnalysis', 'magnitude', 'Legend', 'On')
Чтобы выключить наложенный анализ, просто задайте значение свойства '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, вызвав функцию close на указателе FVTool.
delete(htext); close(hfvt)