exponenta event banner

Конструкция фильтра формирования импульсов FIR Gaussian

В этом примере показано, как сконструировать фильтр FIR с формированием гауссовых импульсов и параметры, влияющие на эту конструкцию. Конструкция КИХ Гауссова фильтра формирования импульсов выполняется путем усечения дискретизированного варианта импульсной характеристики непрерывного времени Гауссова фильтра, который задается:

h (t) = securityae-security2t2a2

Параметр «a» связан с произведением 3-dB времени символа полосы пропускания (B * Ts) гауссова фильтра, как задано:

a = 1BTslog22

В этой конструкции есть две ошибки аппроксимации: ошибка усечения и ошибка дискретизации. Ошибка усечения обусловлена аппроксимацией конечного времени (FIR) теоретически бесконечной импульсной характеристики идеального гауссова фильтра. Ошибка дискретизации (сглаживание) обусловлена тем, что гауссова частотная характеристика в строгом смысле не ограничена полосой (т.е. энергия гауссова сигнала за пределами определенной частоты не является точно нулевой). Это можно отметить из передаточной функции гауссова фильтра непрерывного времени, которая приведена ниже:

H (f) = e-a2f2

С увеличением f частотная характеристика стремится к нулю, но никогда не является точно нулевой, что означает, что она не может быть дискретизирована без некоторого наложения.

Гауссов фильтр непрерывного времени

Для построения гауссова фильтра непрерывного времени давайте определим время символа (Ts) равным 1 микросекунде и число символов между началом импульсной характеристики и ее концом (диапазон фильтра) равным 6. Из вышеприведенных уравнений можно видеть, что импульсная характеристика и частотная характеристика гауссова фильтра зависят от параметра «a», который связан с временным произведением 3 дБ полосы пропускания и символа. Чтобы изучить влияние этого параметра на конструкцию гауссова фильтра FIR, мы определим различные значения «a» в терминах Ts и вычислим соответствующие полосы пропускания. Затем мы построим график импульсной характеристики для каждого «a» и амплитудной характеристики для каждой полосы пропускания.

Ts   = 1e-6; % Symbol time (sec)
span = 6;    % Filter span in symbols

a = Ts*[.5, .75, 1, 2];
B = sqrt(log(2)/2)./(a);

t = linspace(-span*Ts/2,span*Ts/2,1000)';
hg = zeros(length(t),length(a));
for k = 1:length(a)
  hg(:,k) = sqrt(pi)/a(k)*exp(-(pi*t/a(k)).^2);
end

plot(t/Ts,hg)
title({'Impulse response of a continuous-time Gaussian filter';...
  'for various bandwidths'});
xlabel('Normalized time (t/Ts)')
ylabel('Amplitude')
legend(sprintf('a = %g*Ts',a(1)/Ts),sprintf('a = %g*Ts',a(2)/Ts),...
  sprintf('a = %g*Ts',a(3)/Ts),sprintf('a = %g*Ts',a(4)/Ts))
grid on;

Figure contains an axes. The axes with title Impulse response of a continuous-time Gaussian filter for various bandwidths contains 4 objects of type line. These objects represent a = 0.5*Ts, a = 0.75*Ts, a = 1*Ts, a = 2*Ts.

Следует отметить, что импульсные характеристики нормализуются к времени символа.

Частотная характеристика гауссова фильтра непрерывного времени

Мы вычисляем и строим график частотной характеристики гауссовых фильтров непрерывного времени с различными полосами пропускания. На графике ниже отсечение 3-dB обозначается красными кругами ('o') на кривой амплитудной характеристики. Следует отметить, что 3-dB полоса пропускания находится между DC и B.

f = linspace(0,32e6,10000)';
Hideal = zeros(length(f),length(a));
for k = 1:length(a)
  Hideal(:,k) = exp(-a(k)^2*f.^2);
end

plot(f,20*log10(Hideal))
titleStr = {'Ideal magnitude response for a continuous-time ';...
  'Gaussian filter for various bandwidths'};
title(titleStr);
legend(sprintf('B = %g',B(1)),sprintf('B = %g',B(2)),...
  sprintf('B = %g',B(3)),sprintf('B = %g',B(4)))
hold on
for k = 1:length(a)
  plot(B,20*log10(exp(-a.^2.*B.^2)),'ro','HandleVisibility','off')
end

axis([0 5*max(B) -50 5])
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')
grid on;

Figure contains an axes. The axes with title Ideal magnitude response for a continuous-time Gaussian filter for various bandwidths contains 4 objects of type line. These objects represent B = 1.17741e+06, B = 784940, B = 588705, B = 294353.

ОКР аппроксимация гауссова фильтра

Мы разработаем фильтр FIR Gaussian, используя функцию gaussdesign. Исходные данные к этой функции - продукт времени символа пропускной способности на 3 дБ, количество периодов символа между началом и концом ответа импульса фильтра, т.е. фильтруют промежуток в символах и фактор сверхвыборки (т.е. количество образцов за символ).

Коэффициент избыточной дискретизации (OVSF) определяет частоту дискретизации и длину фильтра и, следовательно, играет значительную роль в конструкции гауссова КИХ-фильтра. Ошибки аппроксимации в конструкции могут быть уменьшены при соответствующем выборе коэффициента избыточной дискретизации. Мы иллюстрируем это сравнением гауссовых фильтров FIR, разработанных с двумя различными коэффициентами избыточной выборки.

Во-первых, мы рассмотрим коэффициент избыточной выборки 16 для проектирования дискретного гауссова фильтра.

ovsf = 16; % Oversampling factor (samples/symbol)
h = zeros(97,4);
iz = zeros(97,4);
for k = 1:length(a)
  BT = B(k)*Ts;
  h(:,k) = gaussdesign(BT,span,ovsf);
  [iz(:,k),t] = impz(h(:,k));
end
figure('Color','white')
t = (t-t(end)/2)/Ts;
stem(t,iz)
title({'Impulse response of the Gaussian FIR filter for ';...
  'various bandwidths, OVSF = 16'});
xlabel('Normalized time (t/Ts)')
ylabel('Amplitude')
legend(sprintf('a = %g*Ts',a(1)/Ts),sprintf('a = %g*Ts',a(2)/Ts),...
  sprintf('a = %g*Ts',a(3)/Ts),sprintf('a = %g*Ts',a(4)/Ts))
grid on;

Figure contains an axes. The axes with title Impulse response of the Gaussian FIR filter for various bandwidths, OVSF = 16 contains 4 objects of type stem. These objects represent a = 0.5*Ts, a = 0.75*Ts, a = 1*Ts, a = 2*Ts.

Частотная характеристика для КИХ Гауссова фильтра (коэффициент избыточной выборки = 16

)

Вычислим частотную характеристику гауссова КИХ фильтра с коэффициентом избыточной дискретизации 16 и сравним ее с идеальной частотной характеристикой (т.е. частотной характеристикой гауссова фильтра непрерывного времени).

Fs = ovsf/Ts;
fvtool(h(:,1),1,h(:,2),1,h(:,3),1,h(:,4),1,...
  'FrequencyRange', 'Specify freq. vector', ...
  'FrequencyVector',f,'Fs',Fs,'Color','white');
title('Ideal magnitude responses and FIR approximations, OVSF = 16')
hold on
plot(f*Ts,20*log10(Hideal),'--')
hold off
axis([0 32 -350 5])
legend(append(["B = " "Ideal, B = "],string(num2str(B','%g'))), ...
   'NumColumns',2,'Location','best')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Ideal magnitude responses and FIR approximations, OVSF = 16 contains 8 objects of type line. These objects represent B = 1.17741e+06, B = 784940, B = 588705, B = 294353, Ideal, B = 1.17741e+06, Ideal, B = 784940, Ideal, B = 588705, Ideal, B = 294353.

Обратите внимание, что первые два фильтра FIR имеют ошибки наложения, а последние два фильтра FIR - ошибки усечения. Сглаживание происходит, когда частота дискретизации не превышает частоту Найквиста. В случае первых двух фильтров ширина полосы достаточно велика, чтобы коэффициент избыточной дискретизации не разделял спектральные реплики достаточно, чтобы избежать наложения. Однако величина сглаживания не очень значительна.

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

Значение коэффициента избыточной выборки

Ошибки наложения и усечения изменяются в зависимости от коэффициента избыточной дискретизации. Если коэффициент избыточной дискретизации уменьшен, эти ошибки будут более серьезными, поскольку это уменьшает частоту дискретизации (тем самым перемещая реплики ближе), а также уменьшает длины фильтра (увеличивая ошибку в приближении FIR).

Например, если мы выберем коэффициент избыточной дискретизации 4, мы увидим, что все фильтры FIR обнаруживают ошибки наложения, поскольку частота дискретизации недостаточно велика, чтобы избежать перекрытия спектральных реплик.

ovsf = 4; % Oversampling factor (samples/symbol)
h = zeros(25,4);
iz = zeros(25,4);
for k = 1:length(a)
  BT = B(k)*Ts;
  h(:,k) = gaussdesign(BT,span,ovsf);
  [iz(:,k),t] = impz(h(:,k));
end
figure('Color','white')
t = (t-t(end)/2)/Ts;
stem(t,iz)
title({'Impulse response of the Gaussian FIR filter'; 'for various bandwidths, OVSF = 4'});
xlabel('Normalized time (t/Ts)')
ylabel('Amplitude')
legend(sprintf('a = %g*Ts',a(1)/Ts),sprintf('a = %g*Ts',a(2)/Ts),...
  sprintf('a = %g*Ts',a(3)/Ts),sprintf('a = %g*Ts',a(4)/Ts))
grid on;

Figure contains an axes. The axes with title Impulse response of the Gaussian FIR filter for various bandwidths, OVSF = 4 contains 4 objects of type stem. These objects represent a = 0.5*Ts, a = 0.75*Ts, a = 1*Ts, a = 2*Ts.

Частотная характеристика для КИХ Гауссова фильтра (коэффициент избыточной выборки =

4)

Мы построим график и изучим частотную характеристику гауссова фильтра FIR, разработанного с коэффициентом избыточной выборки 4. Меньший коэффициент избыточной дискретизации означает меньшую частоту дискретизации. В результате эта частота дискретизации недостаточна для того, чтобы избежать спектрального перекрытия, и все фильтры аппроксимации КИХ проявляют сглаживание.

Fs = ovsf/Ts;
fvtool(h(:,1),1,h(:,2),1,h(:,3),1,h(:,4),1,...
  'FrequencyRange', 'Specify freq. vector', ...
  'FrequencyVector',f,'Fs',Fs,'Color','white');
title('Ideal magnitude responses and FIR approximations, OVSF = 4')
hold on
plot(f*Ts,20*log10(Hideal),'--')
hold off
axis([0 32 -350 5])
legend(append(["B = " "Ideal, B = "],string(num2str(B','%g'))), ...
   'NumColumns',2,'Location','southeast')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Ideal magnitude responses and FIR approximations, OVSF = 4 contains 8 objects of type line. These objects represent B = 1.17741e+06, B = 784940, B = 588705, B = 294353, Ideal, B = 1.17741e+06, Ideal, B = 784940, Ideal, B = 588705, Ideal, B = 294353.

См. также

|