КИХ гауссов проект импульсного формирующий фильтра

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

h(t)=πae-π2t2a2

Параметр связанного с продуктом времени символа пропускной способности на 3 дБ (B*Ts) Гауссова фильтра, как дано:

a=1BTsжурнал22

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

H(f)=e-a2f2

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

Непрерывно-разовый гауссов фильтр

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

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;

Обратите внимание на то, что импульсные ответы нормированы ко времени символа.

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

Мы вычислим и построим частотную характеристику для непрерывно-разовых Гауссовых фильтров с различной пропускной способностью. В графике ниже, сокращение на 3 дБ обозначается красными кругами ('o') на кривой отклика значения. Обратите внимание на то, что пропускная способность на 3 дБ между 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;

КИХ-приближение Гауссова Фильтра

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

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

Во-первых, мы будем полагать, что фактор сверхдискретизации 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;

Частотная характеристика для КИХ Гауссов Фильтр (сверхдискретизировавший factor=16)

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

Fs = ovsf/Ts;
hfvt = fvtool(h(:,1),1,h(:,2),1,h(:,3),1,h(:,4),1,...
  'FrequencyRange', 'Specify freq. vector', ...
  'FrequencyVector',f,'Fs',Fs,'Color','white');
titleStr = {['Ideal mag. responses (dashed lines) and corresponding ', ...
  'FIR approximations (solid lines)'] ;' for various values of B, OVSF=16'};
title(titleStr)
legend(hfvt, sprintf('B = %g',B(1)),sprintf('B = %g',B(2)),...
  sprintf('B = %g',B(3)),sprintf('B = %g',B(4)), ...
  'Location','Best')
hold on;
plot(f*Ts,20*log10(Hideal),'--')
axis([0 32 -350 5])

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

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

Значение фактора сверхдискретизации

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

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

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;

Частотная характеристика для КИХ Гауссов Фильтр (сверхдискретизировавший factor=4)

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

Fs = ovsf/Ts;
hfvt = fvtool(h(:,1),1,h(:,2),1,h(:,3),1,h(:,4),1,...
  'FrequencyRange', 'Specify freq. vector', ...
  'FrequencyVector',f,'Fs',Fs,'Color','white');
titleStr = {['Ideal mag. responses (dashed lines) and corresponding ',...
  'FIR approximations (solid lines)'] ;' for various values of B, OVSF=4'};
title(titleStr)
legend(hfvt, sprintf('B = %g',B(1)),sprintf('B = %g',B(2)),...
  sprintf('B = %g',B(3)),sprintf('B = %g',B(4)), ...
  'Location','Best')
hold on;
plot(f*Ts,20*log10(Hideal),'--')
axis([0 32 -350 5])