exponenta event banner

fdesign.octave

Спецификация октавного фильтра

Синтаксис

d = fdesign.octave(l)
d = fdesign.octave(l, MASK)
d = fdesign.octave(l, MASK, spec)
d = fdesign.octave(..., Fs)

Описание

d = fdesign.octave(l) создает объект спецификации октавного фильтра d, с l полосы на октаву. Значение по умолчанию для l это один.

Примечание

Фильтры, созданные fdesign.octave соответствуют стандартам ANSI ® S1.11-2004 и IEC 61260:1995.

d = fdesign.octave(l, MASK) создает объект спецификации октавного фильтра d с l полосы на октаву и MASK спецификация для FVTool. Доступные значения маски:

  • 'class 0'

  • 'class 1'

  • 'class 2'

d = fdesign.octave(l, MASK, spec) создает объект спецификации октавного фильтра d с l полосы на октаву, MASK спецификации для FVTool и spec спецификационный символьный вектор. Доступны следующие спецификации:

  • 'N, F0'

(не с учетом регистра), где:

  • N - порядок фильтрации

  • F0 - центральная частота. Центральная частота задается в нормированных частотных единицах, предполагающих частоту дискретизации 48 кГц, если в спецификацию не включена частота дискретизации в Гц: d = fdesign.octave(..., Fs). Если указана недопустимая центральная частота, выдается предупреждение, и центральная частота округляется до ближайшего допустимого значения. Можно определить допустимые центральные частоты для проекта с помощью validfrequencies с объектом спецификации октавного фильтра. Например:

    d = fdesign.octave(1,'Class 1','N,F0',6,1000,44.1e3);
    validcenterfreq = validfrequencies(d);
    Допустимые центральные частоты:

    • Если указана частота дискретизации, она должна быть больше 20 Гц и меньше 20 кГц. Диапазон от 20 Гц до 20 кГц является стандартным диапазоном слуха человека.

    • Рассчитываются по следующему алгоритму, если количество полос на октаву, L, является четным:

      G = 10^(3/10);
      x = -1000:1350;
      validcenterfreq = 1000*(G.^((2*x-59)/(2*L)));
      validcenterfreq = validcenterfreq(validcenterfreq>20 & validcenterfreq<2e4);

    • Рассчитываются по следующему алгоритму, если количество полос на октаву, L, является нечетным:

      G = 10^(3/10);
      x = -1000:1350;
      validcenterfreq = 1000*(G.^((x-30)/L));
      validcenterfreq = validcenterfreq(validcenterfreq>20 & validcenterfreq<2e4);

      Сохраняются только центральные частоты больше 20 и меньше 20000. Центральные частоты и соответствующие частоты верхней полосы должны быть меньше частоты Найквиста, что составляет половину частоты дискретизации (samplingfreq). Вектор частот верхней полосы (upperbandfreq), соответствующих центральным частотам (validcenterfreq) вычисляется по следующему алгоритму:

      upperbandfreq = validcenterfreq.*(G^(1/(2*L)));
      Алгоритм удаляет центральные частоты, соответствующие частоты верхней полосы которых не подчиняются правилу Найквиста.
      validcenterfreq = validcenterfreq(upperbandfreq < samplingfreq/2);
      Если частота выборки не указана, fdesign.octave предполагает, что samplingfreq 48 кГц. Для получения допустимых нормированных центральных частот оставшиеся центральные частоты делятся на 24000.
      validcenterfreq = validcenterfreq/24000;

Примеры

свернуть все

Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Проектируйте фильтр класса 0 шестого порядка с частотой центра 1000 Гц и частотой дискретизации 44,1 кГц.

d = fdesign.octave(1,'Class 0','N,F0',6,1000,44100)
d = 
  octave with properties:

               Response: 'Octave and Fractional Octave'
         BandsPerOctave: 1
                   Mask: 'Class 0'
          Specification: 'N,F0'
            Description: {2x1 cell}
    NormalizedFrequency: 0
                     Fs: 44100
            FilterOrder: 6
                     F0: 1000

biquad = design(d,'SystemObject',true)
biquad = 
  dsp.BiquadFilter with properties:

                   Structure: 'Direct form II'
             SOSMatrixSource: 'Property'
                   SOSMatrix: [3x6 double]
                 ScaleValues: [4x1 double]
           InitialConditions: 0
    OptimizeUnityScaleValues: true

  Show all properties

Постройте график амплитудной характеристики фильтра с помощью fvtool. Логарифмическая шкала для частоты устанавливается автоматически fvtool для октавных фильтров.

fvtool(biquad)

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,3 кГц, а другой на 3 кГц. Инициализируйте анализатор спектра для просмотра отфильтрованного спектра выходной мощности.

Fs = 2500;
Sineobject1 = dsp.SineWave('SamplesPerFrame',1024,...
    'SampleRate',Fs,'Frequency',100);
Sineobject2 = dsp.SineWave('SamplesPerFrame',1024,...
    'SampleRate',Fs,'Frequency',1000);

sa = dsp.SpectrumAnalyzer('SampleRate',Fs,'NumInputPorts',2,...
    'PlotAsTwoSidedSpectrum',false,'YLimits',[-250,50],...
    'ChannelNames',{'Input','FilteredOutput'},'ShowLegend',true);

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

for Iter = 1:3000
    Sinewave1 = Sineobject1();
    Sinewave2 = Sineobject2();
    Input = Sinewave1 + Sinewave2;
    filteredOutput = biquad(Input);
    sa(Input,filteredOutput);
end

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. These objects represent Input, FilteredOutput.

См. также

Представлен в R2011a