Анализ фильтра с использованием FVTool

В этом примере показов, как использовать несколько функций анализа фильтров в одну фигуру окне с помощью Инструмента визуализации фильтров (FVTool), графического интерфейса пользователя, доступного в Signal Processing Toolbox™.

FVTool также имеет Интерфейс Прикладной Программы (API), который позволяет взаимодействовать с графический интерфейс пользователя из командной строки. Это позволяет вам интегрировать FVTool в другие приложения.

Запуск 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);

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

Добавление и удаление фильтров

Можно заметить, что оба фильтра соответствуют проектным спецификациям, но мы также хотим увидеть, насколько хорошо работает проект Chebyshev Type II.

Добавить фильтр к FVTool можно с помощью функции ADDFILTER.

Df3 = designfilt('lowpassiir','PassbandFrequency',0.4,...
                              'StopbandFrequency',0.6,...
                              'PassbandRipple',1,...
                              'StopbandAttenuation',80,...
                              'DesignMethod','cheby2');
addfilter(hfvt, Df3);

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

Чтобы определить, какая линия на графике принадлежит какому фильтру, можно добавить легенду с помощью функции LEGEND указателя FVTool.

legend(hfvt, 'Equiripple', 'Elliptic', 'Chebyshev Type II');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line. These objects represent Equiripple, Elliptic, Chebyshev Type II.

Можно удалить фильтр из FVTool с помощью функции DELETEFILTER и передать индекс фильтров, которые необходимо удалить .

deletefilter(hfvt, [1 3]);

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

Изменение параметров анализа

Указатель, который возвращает FVTool, содержит свойства, которые позволяют взаимодействовать как с фильтром, так и с текущим анализом.

Для просмотра всех доступных свойств можно использовать команду GET. Первыми свойствами являются свойства обычного рисунка MATLAB ®. Последние четырнадцать свойств специфичны для FVTool. Последние шесть из них (от FrequencyScale до MagnitudeDisplay) являются специфичными для анализа.

s = get(hfvt);

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

% 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';

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

Получите все возможные значения свойства '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';

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line. This object represents Elliptic.

Команда GET вернет новые параметры анализа для нового анализа.

GroupDelayUnits = hfvt.GroupDelayUnits;

Наложение двух анализов

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

Можно наложить любые два анализа в FVTool, которые имеют общую ось x (время или частота), задав свойство 'OverlayedAnalysis'.

set(hfvt, 'OverlayedAnalysis', 'magnitude', 'Legend', 'On')

Figure Filter Visualization Tool - Group delay and Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay and Magnitude Response (dB) contains an object of type line. This object represents Elliptic: Group delay.

Чтобы выключить наложенный анализ, просто задайте значение свойства 'OverlayedAnalysis'.

hfvt.OverlayedAnalysis = '';

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line. This object represents Elliptic.

Взаимодействие с FVTool как с окном фигуры

Окно FVTool также может быть аннотировано как обычное окно рисунка.

FVTool рисунка ведет себя как нормальное окно рисунка. Это позволяет использовать функции сетки и оси MATLAB.

grid on
axis([.3 .45 5 25]);

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line. This object represents Elliptic.

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

title('Group Delay of an Elliptic filter');
xlabel('Frequency (normalized to 1)');
ylabel('Group Delay in samples');

htext = text(.35, 23, 'Maximum Group Delay');

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group Delay of an Elliptic filter contains 2 objects of type line, text. This object represents Elliptic.

FVTool не будет автоматически удалять дополнительные аннотации из анализа, вы можете сделать это, удалив сам указатель. Можно закрыть рисунок FVTool, вызвав функцию close на указателе FVTool.

delete(htext);
close(hfvt)

См. также

|