designFracDelayFIR

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

Описание

h = designFracDelayFIR(fd) проектирует дробную задержку конечной импульсной характеристики фильтр задержки fd, длина по умолчанию 50, приблизительная шумовая полоса 0,9.

пример

h = designFracDelayFIR(fd,N) проектирует дробную задержку конечной импульсной характеристики фильтр задержки fd и длина N > 1. Функция проектирует фильтр, чтобы получить указанную длину конечной импульсной характеристики.

пример

h = designFracDelayFIR(fd,TBW) проектирует дробную задержку конечной импульсной характеристики фильтр задержки fd и комбинированную полосу пропускания, по меньшей мере TBW, где TBW <0.999 и определяется в нормированных частотных модулях. Функция автоматически определяет соответствующую длину конечной импульсной характеристики N для которой комбинированная полоса пропускания, по крайней мере TBW.

[h,i0] = designFracDelayFIR(___) возвращает целочисленную задержку конечной импульсной характеристики. Это значение приблизительно N/2. Номинальная групповая задержка фильтра i0+ fd.

пример

[h,i0,MBW] = designFracDelayFIR(___) возвращает измеренную комбинированную полосу пропускания фильтра h.

Примеры

свернуть все

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

Изменение длины фильтра

Длина фильтра устанавливается равной 8

Задайте задержку 0,25 и длину фильтра 8 и разработайте фильтр конечной импульсной характеристики дробной задержки.

fd = 0.25;
len = [8 32 64];
[h1,i10,bw1] = designFracDelayFIR(fd,len(1))
h1 = 1×8

   -0.0086    0.0417   -0.1355    0.8793    0.2931   -0.0968    0.0341   -0.0074

i10 = 3
bw1 = 0.5810

Номинальная групповая задержка фильтра i10+fd равен 3,25 выборки. Измеренная комбинированная полоса пропускания фильтра составляет 0,5810 в нормированных частотных модулях.

Длина фильтра устанавливается равной 32

Повторите процесс с длиной фильтра 32 отвода.

[h2,i20,bw2] = designFracDelayFIR(fd,len(2))
h2 = 1×32

   -0.0001    0.0004   -0.0009    0.0017   -0.0029    0.0046   -0.0071    0.0104   -0.0148    0.0208   -0.0291    0.0410   -0.0594    0.0926   -0.1752    0.8983    0.2994   -0.1252    0.0758   -0.0515    0.0367   -0.0266    0.0193   -0.0139    0.0098   -0.0067    0.0044   -0.0028    0.0016   -0.0009    0.0004   -0.0001

i20 = 15
bw2 = 0.8571

Номинальная групповая задержка фильтра теперь равна 15,25 выборок. При увеличении длины фильтра целочисленная задержка i0 также увеличивается, что приводит к увеличению номинальной задержки группы. Объединенная полоса пропускания фильтра увеличилась до 0,8571 в нормализованных частотных модулях.

Длина фильтра установлена на 64

Увеличьте длину фильтра до 64 отводов. Групповая задержка увеличивается до 31,25 выборок, и целочисленная задержка составляет 31 выборку. Измеренная комбинированная полоса пропускания фильтра дополнительно увеличивается до 0,9219. Это - охват полосы пропускания 92,19% от общей полосы пропускания. Когда длина фильтра продолжает увеличиваться, объединенная полоса пропускания имеет тенденцию ближе к 1.

[h3,i30,bw3] = designFracDelayFIR(fd,len(3))
h3 = 1×64

   -0.0000    0.0001   -0.0001    0.0002   -0.0003    0.0004   -0.0006    0.0008   -0.0010    0.0013   -0.0017    0.0022   -0.0027    0.0034   -0.0042    0.0051   -0.0061    0.0074   -0.0088    0.0105   -0.0125    0.0149   -0.0177    0.0212   -0.0255    0.0311   -0.0386    0.0494   -0.0664    0.0979   -0.1787    0.8997    0.2999   -0.1277    0.0801   -0.0575    0.0442   -0.0352    0.0288   -0.0239    0.0200   -0.0168    0.0142   -0.0120    0.0101   -0.0085    0.0071   -0.0059    0.0049   -0.0040

i30 = 31
bw3 = 0.9219

Величина графика

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

hfv = fvtool(h1,1,h2,1,h3);
ax = findall(hfv,"type","axes");
hline = findobj(ax(2),'Type','line');
xline(bw1, "LineStyle",'--', "LineWidth",2,'Color',hline(3).Color)
xline(bw2, "LineStyle",'--', "LineWidth",2,'Color',hline(2).Color)
xline(bw3, "LineStyle",'--', "LineWidth",2,'Color',hline(1).Color)
title('Magnitude Responses in dB','FontSize',12)

legend('Gain Response (N = 8)','Gain Response (N = 32)','Gain Response (N = 64)',...
        'Measured Combined Bandwidth (N = 8)',...
       'Measured Combined Bandwidth (N = 32)',...
      'Measured Combined Bandwidth (N = 64)','Location','Southwest','FontSize',12);

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Responses in dB contains 6 objects of type line, constantline. These objects represent Gain Response (N = 8), Gain Response (N = 32), Gain Response (N = 64), Measured Combined Bandwidth (N = 8), Measured Combined Bandwidth (N = 32), Measured Combined Bandwidth (N = 64).

Постройте график отклика задержки группы

Постройте график групповой задержки трех фильтров с помощью fvtool. Отметьте номинальную групповую задержку i0 + fd из трех фильтров. Увеличивая длину фильтра, можно увидеть, что номинальная задержка группы увеличивается.

hfv = fvtool(h1,1,h2,1,h3,1,"Analysis","grpdelay");
ax = findall(hfv,"type","axes");
hline = findobj(ax(2),'Type','line');
    
yline(i10+fd, "LineStyle",'--', "LineWidth",2,'Color',hline(3).Color)
yline(i20+fd, "LineStyle",'--', "LineWidth",2,'Color',hline(2).Color)
yline(i30+fd, "LineStyle",'--', "LineWidth",2,'Color',hline(1).Color)

title('Group Delay Responses','FontSize',12)

legend('Group Delay Response (N = 8)','Group Delay Response (N = 32)','Group Delay Response (N = 64)',...
        'Nominal Group Delay (N = 8)',...
       'Nominal Group Delay (N = 32)',...
      'Nominal Group Delay (N = 64)','Location','west','FontSize',12);
ax(1).YLim = [-10,40];

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group Delay Responses contains 6 objects of type line, constantline. These objects represent Group Delay Response (N = 8), Group Delay Response (N = 32), Group Delay Response (N = 64), Nominal Group Delay (N = 8), Nominal Group Delay (N = 32), Nominal Group Delay (N = 64).

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

Задайте задержку 0,786 и целевую комбинированную полосу пропускания 0,8. Функция проектирует фильтр, который имеет длину 22 отвода, целочисленную задержку i0 из 10 выборок и комбинированную полосу пропускания mbw 0,8044 в нормированных частотных модулях. Это значение mbw делает совокупный охват полосы пропускания равным 80,44% от частотного диапазона и превышает заданную целевую комбинированную полосу пропускания. Номинальная групповая задержка фильтра i0+fd равен 10,786.

fd  = 0.786;
tbw = 0.8;
[h,i0,mbw] = designFracDelayFIR(fd, tbw)
h = 1×22

    0.0003   -0.0011    0.0026   -0.0052    0.0094   -0.0156    0.0248   -0.0386    0.0611   -0.1052    0.2512    0.9225   -0.1548    0.0769   -0.0455    0.0281   -0.0173    0.0102   -0.0057    0.0028   -0.0012    0.0003

i0 = 10
mbw = 0.8044

Постройте график импульсной характеристики конечной импульсной характеристики.

stem((0:length(h)-1),h); 
xlabel('h'); ylabel('h[n]');
title('Impulse Response of the Fractional Delay FIR')

Figure contains an axes. The axes with title Impulse Response of the Fractional Delay FIR contains an object of type stem.

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

hfv = fvtool(h,'Analysis','magnitude','OverlayedAnalysis','grpdelay');
ax  = findall(hfv,'type','axes');
xline(mbw, 'LineStyle',':',  'Color','b', 'LineWidth',2)
xline(tbw, 'LineStyle','--', 'Color','m', 'LineWidth',2)

yline(ax(1),i0+fd, 'LineStyle',':','Color','r','LineWidth',1)

yticks(ax(1),[i0, i0+fd,i0+1:i0+9]); yticklabels(ax(1),'auto')
legend('Gain Response','Measured Combined Bandwidth',...
        'Target Combined Bandwidth','Group Delay Response','Nominal Group Delay', ...
        'Location','west','FontSize',12)
grid off

Figure Filter Visualization Tool - Magnitude Response (dB) and Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Group delay contains 3 objects of type line, constantline. These objects represent Gain Response, Measured Combined Bandwidth, Target Combined Bandwidth.

Спроектируйте дробную задержку конечной импульсной характеристики фильтра с помощью designFracDelayFIR функция. Определите групповую задержку проектируемого фильтра. Создайте dsp.FIRFilter объект, который использует эти разработанные коэффициенты и, следовательно, имеет ту же групповую задержку. Альтернативно, создайте дискретизированную последовательность известной функции. Передайте дискретизированную последовательность в конечной импульсной характеристике фильтр. Сравните выход конечной импульсной характеристики со сдвинутыми выборками известной функции. Задайте этот сдвиг, чтобы равняться групповой задержке конечной импульсной характеристики фильтра. Проверьте соответствие двух последовательностей.

Задайте задержку фильтра конечной импульсной характеристики дробной задержки 1/3 и длину 6 отводов.

fd = 1/3;
len = 6;

Проектируйте фильтр с помощью designFracDelayFIR функционирует и определяет центральный индекс i0 и комбинированную полосу пропускания bw фильтра. Групповая задержка проектируемого фильтра i0 + fd или приблизительно 2.33 для полосы пропускания bw.

[h,i0,bw] = designFracDelayFIR(fd,len)
h = 1×6

    0.0293   -0.1360    0.7932    0.3966   -0.1088    0.0257

i0 = 2
bw = 0.5158

Создайте dsp.FIRFilter Объекту и установите его числитель в коэффициенты h фильтра. Этот фильтр теперь эффективно является дробной задержкой конечной импульсной характеристики фильтра. Проверьте, что групповая задержка этого фильтра составляет приблизительно 2,33 для длительности полосы пропускания bw.

fdf = dsp.FIRFilter(h);
grpdelay(fdf)

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.

Сравнение со сдвинутой функцией

Задайте последовательность x как выборки известной функции.

f = @(t) (0.1*t.^2+cos(0.9*t)).*exp(-0.1*(t-5).^2);
n = (0:19)'; t = linspace(0,19,512);
x = f(n); % Samples

Постройте график выборочных значений x относительно исходной известной функции f (t).

scatter(n,x,20,'k','filled');
hold on;
plot(t,f(t),'color',[0.5 0.5 0.5],'LineWidth',0.5)
hold off;
xlabel('Time')
legend(["Input Samples","f(t)"])
title('Input Sequence with Known Underlying Analog Signal')
ax = gca; ax.XGrid='on';

Figure contains an axes. The axes with title Input Sequence with Known Underlying Analog Signal contains 2 objects of type scatter, line. These objects represent Input Samples, f(t).

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

y = fdf(x);

subplot(2,1,1);
stem(x);
title('Input Sequence');
xlabel('n')
subplot(2,1,2)
stem(y);
title('FIR Output Sequence');
xlabel('n')

Figure contains 2 axes. Axes 1 with title Input Sequence contains an object of type stem. Axes 2 with title FIR Output Sequence contains an object of type stem.

Переместите вход последовательно по горизонтали i0 + fd, что равно групповой задержке конечной импульсной характеристики. Постройте график функции f (t-i0-FD). Проверьте, что входная и выходная последовательности падают примерно на сдвинутую функцию.

figure
scatter(n,y,20,'red','filled')
hold on;
scatter(n+i0+fd,x,20,'black','filled')
plot(t,f(t-i0-fd),'Color',[1,0.5,0.5],'LineWidth',0.1)
xlabel('Time')
legend(["Filter output","Shifted Input Samples","Shifted f(t-i0-fd)"])
hold off
grid on
title('Input and Output Sequences Aligned and Overlaid')

Figure contains an axes. The axes with title Input and Output Sequences Aligned and Overlaid contains 3 objects of type scatter, line. These objects represent Filter output, Shifted Input Samples, Shifted f(t-i0-fd).

Входные параметры

свернуть все

Дробная задержка фильтра, заданная как положительная скалярная величина в область значений [0,1]. Заданное значение дробной задержки определяет измеренную комбинированную полосу пропускания MBW фильтра. Когда fd установлено в 0 или 1, разработанный фильтр имеет полную пропускную способность.

Типы данных: single | double

Длина дробной задержки конечной импульсной характеристики фильтре, заданная как целое число, больше 1. В порядок, чтобы задать длину фильтра, необходимо задать второй входной параметр функции, которая будет целым числом, больше 1. Функция обрабатывает это значение как желаемую длину фильтра и возвращает фильтр, который N тапы длинные.

Типы данных: single | double

Целевая комбинированная полоса пропускания, заданная как положительная скалярная величина менее 0,999. Это значение комбинированной полосы пропускания, которую должна удовлетворять функция. Комбинированная полоса пропускания определяется как минимум полосы усиления и полосы задержки группы.

В порядок, чтобы задать целевую комбинированную полосу пропускания, необходимо задать второй входной параметр функции, чтобы она была действительным скаляром, который меньше 0.999. Затем функция обрабатывает это значение как целевую комбинированную полосу пропускания, определяет соответствующую длину фильтра и проектирует фильтр соответственно.

Задайте более высокую целевую комбинированную полосу для более длинного фильтра. Для примера TBW значение 0,9 приводит к выражению фильтра длиной 52. Для TBW заданное значение 0,99, длина 724. Это значение более чем в 10 раз длиннее. Как TBW имеет тенденцию к 1, длина фильтра теоретически имеет тенденцию к бесконечности.

Типы данных: single | double

Выходные аргументы

свернуть все

Коэффициенты дробной задержки конечной импульсной характеристики фильтра, возвращенные как действительное N- вектор-строка длин. Когда дробная задержка является единственным входом в функцию, функция проектирует фильтр длины 50. Шумовая полоса для этого фильтра по умолчанию составляет приблизительно 0,9. Когда задан второй входной параметр, функция проектирует фильтр согласно следующему:

  • Когда второй входной параметр функции задан как значение, больше 1, функция обрабатывает это значение как необходимую длину фильтра и возвращает фильтр, который N taps long.

  • Когда второй входной параметр функции задан как значение меньше 0.999функция рассматривает это значение как желаемую комбинированную полосу пропускания TBW, определяет соответствующую длину фильтра и проектирует фильтр соответственно.

Типы данных: single | double

Целочисленная задержка разработанного конечная импульсная характеристика, возвращенная в виде целого значения. Целочисленная задержка является наименьшим целым сдвигом, необходимым для того, чтобы сделать симметричное окно Кайзера причинным. Это значение приблизительно равно половине длины фильтра, N/2. Для получения дополнительной информации см. Раздел Целочисленная задержка, i0.

Номинальная групповая задержка фильтра определяется i0+ fd.

Типы данных: single | double

Измеренная комбинированная полоса пропускания, возвращенная как реальная положительная скалярная величина, который меньше 0.999. Это значение комбинированной полосы пропускания проектируемого фильтра. Комбинированная полоса пропускания определяется как минимум полосы усиления и полосы задержки группы.

Когда вы задаете второй входной параметр, и значение меньше 0.999функция рассматривает это значение как целевую комбинированную полосу пропускания TBW. Функция проектирует фильтр таким образом, чтобы измеренная комбинированная полоса MBW удовлетворяет или превышает целевую комбинированную полосу пропускания TBW. Длина фильтра определяется таким образом, чтобы это ограничение полосы пропускания было выполнено.

Когда вы задаете второй входной параметр, и значение является целым числом, больше 1, функция обрабатывает это значение как необходимую длину N фильтра. Измеренная комбинированная полоса пропускания в этом случае изменяется с заданной длиной. Больше значение N, выше измеренная комбинированная полоса пропускания MBW. Смотрите график ниже, который показывает это изменение. Когда длина фильтра увеличивается, объединенная полоса пропускания фильтра перемещается ближе к 1. Красная штриховая вертикальная линия помечает комбинированную полосу для каждой длины. Значение дробной задержки для каждого из этих фильтров установлено равным 0,3

Three lengths: N = 8, N= 32, and N=64. First row of subplots show the impulse response of the filters. Second row of subplots show the magnitude response of the filters. Third row of subplots show the group delay response of the filters.

Типы данных: single | double

Подробнее о

свернуть все

Дробная задержка конечной импульсной характеристики

Дробный фильтр конечной импульсной характеристики задержки является конечной импульсной характеристикой приближения идеального фильтра сдвига синуса с заданным значением дробной (нецелочисленной) задержки fd в пределах [0,1].

Идеальный фильтр сдвига моделирует полосно-ограниченный D/A интерполятор, за которым следует сдвинутая A/D равномерная выборка. Принимая равномерную частоту дискретизации и инвариантную интерполяцию сдвига, полученная общая система может быть выражена как фильтр свертки, аппроксимированный конечная импульсная характеристика. Другими словами, y[n]=hfd[n]x[n], который инкапсулирует D/A интерполяцию, сдвиг и A/D выборку цепи как изображено в рисунок.

Block diagram of fractional delay FIR filter. Contains Interpolation block followed by Delay block and Sampling block.

где,

hfd[n]=sinc(nfd),x^(t)=kx[k]sinc(tk)x^(t+fd)=kx[k]sinc(t+fdk)

Частотная характеристика идеального фильтра сдвига задается следующим уравнением:

Hfd(ω)=ejωfd

Идеальный фильтр сдвига имеет плоскую характеристику усиления единства и постоянную групповую задержку fd, где fd - заданное значение дробной задержки.

Конечная импульсная характеристика приближения получается путем усечения идеального фильтра и взвешивания усеченного фильтра окном Кайзера.

x^(n+fd)y[n]=(hx)[n],whereh[m]=sinc(m+fd)·KN,β[m]

где, KN,β[m] - окно Кайзера длины N и имеет параметр формы β. Окно Кайзера спроектировано, чтобы оптимизировать конечную импульсную характеристику частотную характеристику, максимизируя объединенные полосы как отклика усиления, так и отклика групповой задержки.

Чтобы сделать конечную импульсную характеристику приближения причинно-следственным, дополнительный сдвиг i0 введено, делающее номинальную групповую задержку фильтра равной i0+ fd. Частотная характеристика усеченного фильтра задается, H(ω)=ejω(fd+i0).

Для получения дополнительной информации см. Раздел Целочисленная задержка, i0.

Целочисленная задержка, i0

Целочисленная задержка, i0, является наименьшим целочисленным сдвигом, который требуется для того, чтобы сделать симметричное окно Кайзера причинным.

Идеал sinc Фильтр сдвига является фильтром allpass, который имеет бесконечную и некаузальную импульсную характеристику. Чтобы аппроксимировать этот фильтр, функция использует конечное индексное Окно Кайзера длины N который симметричен вокруг источника и захватывает главную лепестку sinc функция.

Overlay of ideal filter, truncated FIR filter, with non-causal symmetric window.

Из-за симметричного характера окна половина окна (приблизительно равная N/2) находится на отрицательной стороне источника, делая усечённый фильтр антикаузальным. Чтобы сделать усеченный фильтр причинным, сдвиньте антикаузальную (отрицательные индексы) часть конечной импульсной характеристики окна на целочисленную задержку, i0, что приблизительно равно N/2.

Overlay of ideal filter, truncated FIR filter, with shifted causal window.

Общая задержка причинной конечной импульсной характеристики i0+ fd, где fd - заданное значение дробной задержки.

Для получения дополнительной информации об конечной импульсной характеристике приближения, смотрите Приближения Causal конечной импульсной характеристики Идеального Фильтра Сдвига Синка в Проект Fractional Delay конечной импульсной характеристики Filters.

Усиление полосы пропускания

Учитывая конечную импульсную характеристику H(ω) частотной характеристики, ширина полосы усиления является самым большим интервалом [0 Ba], над которым |<reservedrangesplaceholder1>| характеристики усиления близка к 1 до заданного значения допуска, tol.

Ba=maxω{||H(ν)|1|<tol0νω}

Групповая задержка полосы пропускания

Учитывая tol допуска и G групповой задержки, шумовая полоса групповой задержки является самым большим интервалом [0 Bg], так что групповая задержка близка к номинальному значению, fd.

Bg=maxω{|G(ν)fdi0|<tol0νω}

Комбинированная полоса пропускания

Комбинированная пропускная способность определяется как минимум между пропускной способностью усиления и пропускной способностью групповой задержки.

Bc=min(Ba,Bg)

Комбинированная шумовая полоса зависит от дробной задержки fd и длину конечной импульсной характеристики N.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2021a