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

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

h(t)=πae-π2t2a2

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

a=1BTslog22

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

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 дБ, количеством периодов символа между началом и концом импульсной характеристики фильтра, i.e. отфильтруйте промежуток в символах и фактор сверхдискретизации (i.e. количество выборок на символ).

Фактор сверхдискретизации (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, и мы сравним его с идеальной частотной характеристикой (i.e. частотная характеристика непрерывного времени Гауссов фильтр).

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')

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

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

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

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

Например, если мы выберем фактор сверхдискретизации 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;
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')

Смотрите также

|

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