exponenta event banner

Фильтрация анализа с использованием FVTool

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

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

Запуск FVTool

Мы хотим создать фильтр нижних частот с частотой полосы пропускания 0 .4δ рад/выборка, частотой полосы останова 0 .6δ рад/выборка, пульсацией полосы пропускания 1 дБ и затуханием полосы останова 80 дБ. Мы разработаем фильтры с помощью некоторых инструментов разработки фильтров панели инструментов обработки сигналов, а затем проанализируем результаты в FVTool.

Проектирование низкопроходного равнопроходного КИХ-фильтра

Df1 = designfilt('lowpassfir','PassbandFrequency',0.4,...
                              'StopbandFrequency',0.6,...
                              'PassbandRipple',1,...
                              'StopbandAttenuation',80,...
                              'DesignMethod','equiripple');

Проектирование низкочастотного эллиптического БИХ-фильтра

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.

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

Мы можем наблюдать, что оба фильтра соответствуют проектным спецификациям, но мы также хотим увидеть, насколько хорошо работает конструкция типа 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 до FrequencyDisplay) специфичны для анализа.

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'}

Переведите дисплей в положение «Квадрат величины»

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.

Получить все возможные значения для свойства «Анализ»

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'}

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

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 (время или частоту), задав свойство OverlowerAnalysis.

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.

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

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, вызвав функцию закрытия в дескрипторе FVTool.

delete(htext);
close(hfvt)

См. также

|