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 и меньше чем 20 000 сохраняются. Центральные частоты и соответствующие частоты верхней полосы должны быть меньше частоты Найквиста, которая является половиной частоты дискретизации (samplingfreq). Вектор из частот верхней полосы (upperbandfreq) соответствие центральным частотам (validcenterfreq) вычисляется с помощью следующего алгоритма:

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

Примеры

свернуть все

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

Спроектируйте шестой порядок, фильтр класса 0 полосы октавы с центральной частотой 1 000 Гц и, частота дискретизации 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)

Отфильтруйте синусоидальный сигнал с помощью вышеупомянутого спроектированного фильтра. Вход является суммой двух тонов - один на уровне 0,3 кГц и другого на уровне 3 кГц. Initiatize спектр анализатор, чтобы просмотреть отфильтрованный спектр выходной мощности.

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

Смотрите также

Введенный в R2011a