Спроектируйте ограниченный полосой дробный КИХ-фильтр задержки
проектирует дробный КИХ-фильтр задержки задержки 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.