Произвольные Величины Создания фильтра

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

Конечная импульсная характеристика моделирование с помощью метода частотной выборки

Этот раздел иллюстрирует случай, когда амплитуда фильтра задана в полной области значений Найквиста (нет расслабленных или «не заботятся» областей). В следующем примере используется один (полный) тип спецификации полосы и алгоритм устойчивой частотной дискретизации для разработки фильтра, амплитуда которого задана в трех разделах: синусоидальном сечении, кусочно-линейном сечении и квадратичном сечении. Необходимо выбрать большой порядок фильтра, потому что форма фильтра довольно сложная:

N = 300;
B1 = 0:0.01:0.18;
B2 = [.2 .38 .4 .55 .562 .585 .6 .78];
B3 = 0.79:0.01:1;
A1 = .5+sin(2*pi*7.5*B1)/4;    % Sinusoidal section
A2 = [.5 2.3 1 1 -.2 -.2 1 1]; % Piecewise linear section
A3 = .2+18*(1-B3).^2;          % Quadratic section
F = [B1 B2 B3];
A = [A1 A2 A3];
d = fdesign.arbmag('N,F,A',N,F,A);
Hd = design(d,'freqsamp','SystemObject',true);
fvtool(Hd,'MagnitudeDisplay','Zero-phase','Color','White');

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

close(gcf)

В предыдущем примере нормированные частотные точки были распределены между 0 и pi рад/выборка (включена экстрема). Можно также задать отрицательные частоты и получить комплексные фильтры. В следующем примере моделируется комплексный RF полосно-пропускающий фильтр и использует окно Кайзера, чтобы уменьшить эффекты явления Гиббса, которое происходит из-за разрыва величины 70 дБ между частотами -pi и pi rad/sample:

load cfir.mat; % load a predefined set of frequency and amplitude vectors
N = 200;
d = fdesign.arbmag('N,F,A',N,F,A);
Hd = design(d,'freqsamp', 'window' ,{@kaiser,20},'SystemObject',true);
fvtool(Hd,'FrequencyRange','[-pi, pi)','Color','White');

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.

Моделирование сглаживающих функций с конечной импульсной характеристикой фильтром Equiripple

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

F = linspace(0,1,100);
A = exp(-2*pi*F); 
R = 0.045; % ripple
W = .1-20*log10(abs(A)); % weights
d = fdesign.arbmag('F,A,R',F,A,R);
Hd = design(d,'equiripple','weights',W,'SystemObject',true);
fvtool(Hd,'MagnitudeDisplay','Zero-phase', 'FrequencyRange','[0, pi)',...
    'Color','White');

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

Однополосный по сравнению с многополосным Equiripple конечная импульсная характеристика Проектов

В некоторых приложениях может быть интересно сформировать полосу стопора фильтра, чтобы, например, минимизировать интегрированные уровни боковых лепестков или улучшить робастность квантования. В следующем примере проектируется фильтр lowpass с полосой упора лестницы. Чтобы достичь проекта, он использует распределение весов, которые увеличивают ослабление каждого шага на 5 дБ в полосе остановки:

N = 150;
F = [0 .25 .3 .4 .401 .5 .501 .6 .601 .7 .701 .8 .801 .9 .901 1]; 
A = [1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
W = 10.^([0 0 5 5 10 10 15 15 20 20 25 25 30 30 35 35]/20);
d = fdesign.arbmag('N,F,A',N,F,A);
Hd1 = design(d,'equiripple','weights',W,'SystemObject',true);

В следующем примере представлен альтернативный проект, основанная на использовании многодиапазонного подхода, который задает две полосы (полосу пропускания и полосу упора), разделенные областью «не заботится» (или полосой перехода):

B = 2;            % Number of bands
F1 = F(1:2);      % Passband
F2 = F(3:end);    % Stopband
% F(2:3)=[.25 .3] % Transition band
A1 = A(1:2);
A2 = A(3:end);
W1 = W(1:2);
W2 = W(3:end);
d = fdesign.arbmag('N,B,F,A',N,B,F1,A1,F2,A2);
Hd2 = design(d,'equiripple','B1Weights',W1,'B2Weights',W2,...
    'SystemObject',true);
hfvt = fvtool(Hd1,Hd2,'MagnitudeDisplay','Magnitude (dB)','Legend','On',...
    'Color','White');
legend(hfvt, 'Single-Band Design', 'Multi-Band Design');

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. These objects represent Single-Band Design, Multi-Band Design.

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

Проекты минимального порядка требуют спецификации одного значения пульсации на полосу. В данном примере установите пульсацию равной 0,0195 во всех полосах.

R = 0.0195;

% Single-band minimum order design
d = fdesign.arbmag('F,A,R',F,A,R);
Hd1 = design(d,'equiripple','Weights',W,'SystemObject',true);

% Multi-band minimum order design
d = fdesign.arbmag('B,F,A,R',B,F1,A1,R,F2,A2,R);
Hd2 = design(d,'equiripple','B1Weights',W1,'B2Weights',W2,...
    'SystemObject',true);

hfvt = fvtool(Hd1,Hd2,'Color','White');
legend(hfvt, 'Single-Band Minimum Order Design', ...
  'Multi-Band Minimum Order Design');

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. These objects represent Single-Band Minimum Order Design, Multi-Band Minimum Order Design.

Неравномерности в полосе пропускания и затухание в полосе задерживания обоих проектов совпадают. Однако однополосный проект имеет порядок 152, в то время как многополосный проект имеет порядок 72.

order(Hd)
ans = 32

Ограниченные Многополосные Проекты Equiripple

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

Проекты ограниченных полос

В следующем примере проектируется фильтр полосы пропускания 80-го порядка с ослаблением 60 дБ в первой полосе остановки и 40 дБ во второй полосе остановки. За счет ослабления второй стопорной полосы пульсация в полосе пропускания уменьшается при сохранении того же порядка фильтра.

N = 80; % filter order
B = 3;  % number of bands

d = fdesign.arbmag('N,B,F,A,C',N,B,[0 0.25],[0 0],true,...
  [0.3 0.6],[1 1],false,[0.65 1],[0 0],true)
d = 
  arbmag with properties:

               Response: 'Arbitrary Magnitude'
          Specification: 'N,B,F,A,C'
            Description: {4x1 cell}
    NormalizedFrequency: 1
            FilterOrder: 80
                 NBands: 3
          B1Frequencies: [0 0.2500]
           B1Amplitudes: [0 0]
          B1Constrained: 1
               B1Ripple: 0.2000
          B2Frequencies: [0.3000 0.6000]
           B2Amplitudes: [1 1]
          B2Constrained: 0
          B3Frequencies: [0.6500 1]
           B3Amplitudes: [0 0]
          B3Constrained: 1
               B3Ripple: 0.2000

The B1Constrained и B3Constrained свойства были установлены на true, чтобы указать, что первая и третья полосы являются ограниченными полосами. Задайте значение пульсации для i-го ограниченной полосы, используя BiRipple свойство:

d.B1Ripple = 10^(-60/20); % Attenuation for the first stopband
d.B3Ripple = 10^(-40/20); % Attenuation for the second stopband

Hd = design(d,'equiripple','SystemObject',true)
Hd = 
  dsp.FIRFilter with properties:

            Structure: 'Direct form'
      NumeratorSource: 'Property'
            Numerator: [1x81 double]
    InitialConditions: 0

  Show all properties

fvtool(Hd,'Legend','Off','Color','White');

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.

Одночастотные полосы

В следующем примере разработан фильтр равновесия минимального порядка с двумя надрезами в точности 0,25 * pi и 0,55 * pi rad/sample, и с пульсацией 0,15 в полосах пропускания.

B = 5; % number of bands
d = fdesign.arbmag('B,F,A,R',B);

d.B1Frequencies = [0 0.2];  
d.B1Amplitudes = [1 1];
d.B1Ripple = 0.15;
d.B2Frequencies = 0.25; % single-frequency band
d.B2Amplitudes = 0; 
d.B3Frequencies = [0.3 0.5]; 
d.B3Amplitudes = [1 1]; 
d.B3Ripple = 0.15;
d.B4Frequencies = 0.55; % single-frequency band
d.B4Amplitudes = 0; 
d.B5Frequencies = [0.6 1];  
d.B5Amplitudes = [1 1];
d.B5Ripple = 0.15;
Hd = design(d,'equiripple','SystemObject',true);
fvtool(Hd,'Color','White');

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.

Принудительные точки частоты

В следующем примере проектируется высокочастотный фильтр с ребром стопорной полосы со скоростью 100 Гц и ребром полосы пропускания со частотой 150 Гц. Предположим, что вы хотите отклонить сильную интерференцию 60 Гц, не добавляя дополнительный фильтр или не увеличивая порядок фильтра на большую величину. Сделать это можно, заставив величину ответ highpass-фильтра равняться 0 при 60 Гц:

B = 2;    % number of bands
N = 92;   % filter order
Fs = 2e3; % sampling frequency
d = fdesign.arbmag('N,B,F,A',N,B,[0 60 100],[0 0 0],[150 1000],[1 1],Fs);

Используйте B1ForcedFrequencyPoints опция проекта, чтобы заставить точку 60 Гц к заданному значению амплитуды.

Hd = design(d,'equiripple','B1ForcedFrequencyPoints',60,...
    'SystemObject',true);
hfvt = fvtool(Hd,'Fs', Fs,'Color','White');

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.

Масштабируйте диапазон остановок фильтра высокой частоты, чтобы заметить, что амплитуда равна нулю в заданной частотной точке 60 Гц:

hfvt.MagnitudeDisplay = 'Magnitude';
xlim([0 100])
ylim([0 0.015])

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

Однополосный и многополосный БИХ Проектов

Как и в случае конечной импульсной характеристики, проблемы, связанные с проектом БИХ, где переходная полоса не может быть легко идентифицирована, лучше всего решить с помощью подхода с одной (полной) полосой спецификаций. В качестве примера моделируйте оптическое поглощение газа (атомарного Rubidium87 пара):

Nb = 12; 
Na = 10;
F = linspace(0,1,100);
As = ones(1,100)-F*0.2;
Absorb = [ones(1,30),(1-0.6*bohmanwin(10))',...
    ones(1,5), (1-0.5*bohmanwin(8))',ones(1,47)];
A = As.*Absorb;
d = fdesign.arbmag('Nb,Na,F,A',Nb,Na,F,A);
W = [ones(1,30) ones(1,10)*.2 ones(1,60)];
Hd = design(d, 'iirlpnorm', 'Weights', W, 'Norm', 2, 'DensityFactor',30,...
    'SystemObject',true);
fvtool(Hd, 'MagnitudeDisplay','Magnitude (dB)', ...
    'NormalizedFrequency','On','Color','White');

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.

В других случаях, когда ограничения могут быть ослаблены в одной или нескольких полосах переходов, многодиапазонный подход обеспечивает те же преимущества, что и в случае конечной импульсной характеристики (а именно, лучшие характеристики полосы пропускания и полосы упора). Следующий пример иллюстрирует эти различия путем моделирования канала радиосвязи Релеевского замирания:

Nb = 4;
Na = 6;
F = [0:0.01:0.4 .45 1];
A = [1.0./(1-(F(1:end-2)./0.42).^2).^0.25 0 0];
d = fdesign.arbmag('Nb,Na,F,A',Nb,Na,F,A); % single-band design
Hd1 = design(d,'iirlpnorm','SystemObject',true);

B = 2;
F1 = F(1:end-2);          % Passband
F2 = F(end-1:end);        % Stopband
% F(end-2:end-1)=[.4 .45] % Transition band
A1 = A(1:end-2);  
A2 = A(end-1:end);
d = fdesign.arbmag('Nb,Na,B,F,A',Nb,Na,B,F1,A1,F2,A2); % multi-band design
Hd2 = design(d,'iirlpnorm','SystemObject',true);
hfvt = fvtool(Hd1,Hd2,'Color','White');
legend(hfvt, 'Single-Band Design', 'Multi-Band Design');

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. These objects represent Single-Band Design, Multi-Band Design.