В этом примере показано, как спроектировать Гауссов формирующий импульс КИХ-фильтр и параметры, влияющие на этот проект. Гауссов проект импульсного формирующий фильтра КИХ сделан путем усечения произведенной версии импульсной характеристики непрерывного времени Гауссова фильтра, которым дают:
Параметр связанного с продуктом времени символа полосы пропускания на 3 дБ (B*Ts) Гауссова фильтра, как дано:
В этом проекте существует две ошибки приближения: ошибка усечения и ошибка выборки. Ошибка усечения происходит из-за конечного промежутка времени (КИХ) приближение теоретически бесконечной импульсной характеристики идеального Гауссова фильтра. Ошибка выборки (искажение) состоит в том вследствие того, что Гауссова частотная характеристика действительно не ограничивается полосой в строгом смысле (i.e. энергия Гауссова сигнала вне определенной частоты не ниже нуля). Это может быть отмечено от передаточной функции непрерывного времени Гауссов фильтр, который дан как указано ниже:
Как 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;
Мы вычислим частотную характеристику для Гауссова КИХ-фильтра с фактором сверхдискретизации 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;
Мы построим и изучим частотную характеристику для Гауссова КИХ-фильтра, спроектированного со сверхдискретизацией фактора 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')