exponenta event banner

Конструкция фильтра произвольной величины

В этом примере показано, как проектировать фильтры с произвольной амплитудной характеристикой. Семейство объектов конструкции фильтра (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 рад/выборка (включены экстремальные значения). Можно также задать отрицательные частоты и получить сложные фильтры. В следующем примере моделируется сложный полосовой РЧ-фильтр и используется окно Кайзера для смягчения эффектов явления Гиббса, возникающего из-за зазора величин 70 дБ между частотами -pi и pi рад/выборка:

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 хорошо подходит для моделирования гладких функций, как показано в следующем примере, который моделирует экспоненциальный с фильтром FIR минимального порядка. Пример задает небольшое значение пульсации на всех частотах и определяет веса, которые увеличиваются пропорционально требуемой амплитуде для улучшения рабочих характеристик на высоких частотах:

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.

Однополосные и многополосные эквириптные конструкции FIR

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

Ограниченная многополосная равнодействующая конструкция

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

Проекты зависимых областей данных

В следующем примере разработан фильтр полосы пропускания 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

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

Однополосные и многополосные конструкции IIR

Как и в случае FIR, проблемы проектирования IIR, когда переходный диапазон не может быть легко идентифицирован, лучше всего решаются с помощью одного (полного) подхода к спецификации диапазона. В качестве примера смоделировать оптическое поглощение газа (атомарного 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.

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

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.