Спроектируйте ограниченный полосой дробный КИХ-фильтр задержки
проектирует дробный КИХ-фильтр задержки задержки h
= designFracDelayFIR(fd
,TBW
)fd
и объединенная полоса пропускания, по крайней мере, TBW
, где TBW
< 0.999 и задан в нормированных единицах частоты. Функция автоматически определяет соответствующую КИХ-длину N, для которого объединенной полосой пропускания является, по крайней мере
, TBW
.
Спроектируйте дробный КИХ-фильтр задержки с помощью 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);
Постройте ответ групповой задержки
Постройте ответ групповой задержки трех фильтров с помощью 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];
Спроектируйте дробный КИХ-фильтр задержки с помощью designFracDelayFIR
функция. Передайте задержку и объединенную полосу пропускания как входные параметры к функции.
Задайте задержку, чтобы быть 0.786, и цель объединила полосу пропускания, чтобы быть 0.8. Функция проектирует фильтр, который имеет длину 22 касаний, целочисленная задержка i0 10 выборок и объединенной полосы пропускания m
bw 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')
Постройте получившийся ответ величины и ответ групповой задержки с помощью 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
Спроектируйте дробный КИХ-фильтр задержки с помощью 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)
Сравните с переключенной функцией
Задайте последовательность 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';
Передайте произведенную последовательность 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')
Переключите вход sequnce горизонтально 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')
fd
— Дробная задержка фильтраДробная задержка фильтра в виде положительной скалярной величины в области значений [0,1]. Дробное значение задержки, которое вы задаете, определяет измеренную объединенную полосу пропускания MBW
из фильтра. Когда fd
установлен в 0
или 1
, спроектированный фильтр имеет полную полосу пропускания.
Типы данных: single
| double
N
— Длина КИХ-фильтраДлина дробного КИХ задержки фильтрует в виде целого числа, больше, чем 1. Для того, чтобы задать длину фильтра, необходимо задать второй входной параметр функции, чтобы быть целым числом, которое больше 1. Функция обрабатывает это значение как желаемую длину фильтра и возвращает фильтр, который является касаниями N долго.
Типы данных: single
| double
TBW
— Цель объединила полосу пропусканияЦель объединила полосу пропускания в виде положительной скалярной величины меньше чем 0,999. Это - значение объединенной полосы пропускания, которой должна удовлетворить функция. Объединенная полоса пропускания задана как минимум полосы пропускания усиления и полосы пропускания групповой задержки.
Для того, чтобы указать, что цель объединила полосу пропускания, необходимо задать второй входной параметр функции, чтобы быть действительным скаляром, который меньше 0.999
. Функция затем обрабатывает это значение, когда цель объединила полосу пропускания, определяет соответствующую длину фильтра и проектирует фильтр соответственно.
Укажите, что более высокая цель объединила полосу пропускания для более длинного фильтра. Например, TBW
установите к 0,9 выражениям фильтр длины 52. Для TBW
это установлено в 0,99, длина 724. Это значение больше чем в 10 раз более долго. Как TBW
стремится к 1, длина фильтра теоретически стремится к бесконечности.
Типы данных: single
| double
h
— Коэффициенты дробного КИХ-фильтра задержкиКоэффициенты дробного КИХ-фильтра задержки, возвращенного как N
с действительным знаком- вектор-строка длины. Когда дробная задержка является единственным входом к функции, функция проектирует фильтр длины 50. Полоса пропускания для этого фильтра по умолчанию - приблизительно 0,9. Когда второй входной параметр задан, функция проектирует фильтр согласно следующему:
Когда второй входной параметр к функции задан, чтобы быть значением, больше, чем 1, функция обрабатывает это значение как желаемую длину фильтра и возвращает фильтр, который является N
касания долго.
Когда второй входной параметр к функции задан, чтобы быть значением меньше, чем 0.999
, функция обрабатывает это значение как желаемую объединенную полосу пропускания TBW
, определяет соответствующую длину фильтра и проектирует фильтр соответственно.
Типы данных: single
| double
i0
— Целочисленная задержкаЦелочисленная задержка спроектированного КИХ-фильтра, возвращенного как целочисленное значение. Целочисленная задержка является самым маленьким целочисленным сдвигом, требуемым сделать симметричное окно Кайзера причинным. Это значение приблизительно равно половине длины фильтра, N/2. Для получения дополнительной информации смотрите Целочисленную задержку, i0.
Задержка именной группы фильтра дана i0
+fd
.
Типы данных: single
| double
MBW
— Измеренная объединенная полоса пропускания0.999
Измеренная объединенная полоса пропускания, возвращенная как действительная положительная скалярная величина, которая меньше 0.999
. Это - значение объединенной полосы пропускания спроектированного фильтра. Объединенная полоса пропускания задана как минимум полосы пропускания усиления и полосы пропускания групповой задержки.
Когда вы задаете второй входной параметр, и значение меньше 0.999
, функция обрабатывает это значение, когда цель объединила полосу пропускания TBW
. Функция проектирует фильтр, таким образом что измеренная объединенная полоса пропускания MBW
соответствует или превышает объединенную полосу пропускания цели TBW
. Длина фильтра определяется таким образом, что этому ограничению полосы пропускания соответствуют.
Когда вы задаете второй входной параметр, и значение является целым числом, больше, чем 1, функция обрабатывает это значение как желаемую длину N
из фильтра. Измеренная объединенная полоса пропускания в этом случае меняется в зависимости от длины, которую вы задаете. Больше значение N
, выше измеренная объединенная полоса пропускания MBW
. Смотрите, что график ниже этого показывает это изменение. Когда длина фильтра растет, объединенная полоса пропускания фильтра придвигается поближе к 1. Красная пунктирная вертикальная линия отмечает объединенную полосу пропускания для каждой длины. Дробное значение задержки для каждого из этих фильтров установлено к 0,3
Типы данных: single
| double
Дробный КИХ-фильтр задержки является КИХ-приближением идеала sinc фильтр сдвига с заданным дробным (нецелое число) значение задержки fd
в [0,1].
Идеальный фильтр сдвига моделирует ограниченный полосой интерполятор D/A, сопровождаемый переключенной универсальной выборкой A/D. Принимая универсальную частоту дискретизации и интерполяцию инварианта сдвига, получившаяся полная система может быть описана как фильтр свертки, аппроксимированный КИХ-фильтром. Другими словами, , который инкапсулирует интерполяцию D/A, сдвиг и A/D выборка цепи, как изображено на рисунке.
где,
Частотная характеристика идеального фильтра сдвига дана следующим уравнением:
Идеальный фильтр сдвига имеет плоский ответ усиления единицы и постоянную групповую задержку fd
, где fd
дробное значение задержки, которое вы задаете.
КИХ-приближение получено путем усечения идеального фильтра и взвешивания усеченного фильтра по окну Кайзера.
где, окно Кайзера длины N
и имеет параметр формы β. Окно Кайзера спроектировано, чтобы оптимизировать КИХ-частотную характеристику, максимизировав объединенные полосы пропускания и ответа усиления и ответа групповой задержки.
Сделать КИХ-приближение причинным, дополнительный сдвиг i0
введен, делая задержку именной группы фильтра равной i0
+fd
. Частотной характеристикой усеченного фильтра дают, .
Для получения дополнительной информации смотрите Целочисленную задержку, i0.
i0
Целочисленная задержка, i0
, самый маленький целочисленный сдвиг, который требуется, чтобы делать симметричное окно Кайзера причинным.
Идеал sinc
фильтр сдвига является фильтром allpass, который имеет бесконечную и непричинную импульсную характеристику. Чтобы аппроксимировать этот фильтр, функция использует конечное окно Кайзера индекса длины N
это симметрично вокруг источника и получает основной лепесток sinc
функция.
Из-за симметричной природы окна, половина окна (приблизительно равный N/2) находится на отрицательной стороне источника, делающего усеченный антипричинный фильтр. Чтобы сделать усеченный фильтр причинным, переключите антипричинное (отрицательные индексы) часть окна FIR целочисленной задержкой, i0
, это приблизительно равно N/2.
Полной задержкой причинного КИХ-фильтра является i0
+fd
, где fd
дробное значение задержки, которое вы задаете.
Для получения дополнительной информации о КИХ-приближении смотрите Причинные КИХ-Приближения Идеала sinc раздел Shift Filter в Проекте Дробных КИХ-Фильтров Задержки.
Учитывая КИХ-частотную характеристику H(ω), полоса пропускания усиления является самым большим интервалом [0 Ba], по которому ответ усиления |H(ω) | близко к 1 до данного значения допуска, tol.
Учитывая допуск tol и ответ групповой задержки G, полоса пропускания групповой задержки является самым большим интервалом [0 Bg] таким образом, что групповая задержка близко к номинальной стоимости, fd
.
Объединенная полоса пропускания задана как минимум между полосой пропускания усиления и полосой пропускания групповой задержки.
Объединенная полоса пропускания зависит от дробной задержки fd
и длина КИХ фильтрует N
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.