В этом примере показано, как спроектировать совершенную реконструкцию двухканальные наборы фильтров, также известные как банки Квадратурного фильтра зеркала (QMF). Банки QMF используют степень дополнительные фильтры.
Существует несколько приложений цифровой обработки сигналов, в которых сигналы сначала разделены в низкую частоту и высокочастотные поддиапазоны, и позже эти поддиапазоны объединены, чтобы восстановить исходный сигнал. Одно такое приложение является поддиапазоном, кодирующим (SBC).
Сначала симулируйте совершенный процесс реконструкции путем фильтрации сигнала, составленного из масштабированных, и время переключило импульсы. Затем постройте вход, выведите, и сигналы ошибки наряду со спектром величины передаточной функции полной системы. Эффективность совершенной реконструкции показывают через набор фильтров, описанный в этом примере.
Система, как говорят, достигает совершенной реконструкции, когда выход системы равен входному сигналу или задержанной версии того же самого. Ниже блок-схема совершенного процесса реконструкции, который использует идеальные фильтры, чтобы разделить сигнал на его низкую частоту и высокочастотные компоненты, и восстановить сигнал полностью. Совершенный процесс реконструкции требует четырех фильтров, двух фильтров lowpass (и ) и два фильтра highpass (и ). Кроме того, процесс требует downsampler и upsampler между двумя lowpass и двумя фильтрами highpass. Поскольку аналитические фильтры имеют модульное усиление, фильтры синтеза компенсируют предыдущий upsamplers при наличии усиления 2.
DSP System Toolbox™ обеспечивает специализированную функцию под названием firpr2chfb
спроектировать четыре фильтра, требуемые реализовывать КИХ совершенная реконструкция двухканальный набор фильтров. firpr2chfb
функционируйте проектирует четыре КИХ-фильтра для анализа (и ) и синтез (и ) разделы двухканального совершенного набора фильтров реконструкции. Проект соответствует ортогональным наборам фильтров, известным как симметричные степенью наборы фильтров, которые требуются для того, чтобы достигнуть совершенной реконструкции.
Спроектируйте набор фильтров с фильтрами порядка 99, ребрами полосы пропускания lowpass и фильтров highpass в 0,45 и 0.55, соответственно:
N = 99; [LPAnalysis, HPAnalysis, LPSynthsis, HPSynthesis] = firpr2chfb(N, 0.45);
Ответ величины этих фильтров построен ниже:
fvt = fvtool(LPAnalysis,1, HPAnalysis,1, LPSynthsis,1, HPSynthesis,1); fvt.Color = [1,1,1]; legend(fvt,'Hlp Lowpass Decimator','Hhp Highpass Decimator',... 'Glp Lowpass Interpolator','Ghp Highpass Interpolator');
Обратите внимание на то, что аналитический путь состоит из фильтра, сопровождаемого downsampler, который является decimator, и путь к синтезу состоит из upsampler, сопровождаемого фильтром, который является интерполятором. DSP System Toolbox обеспечивает dsp.SubbandAnalysisFilter
r и dsp.SubbandSynthesisFilter
объекты реализовать аналитический фрагмент и фрагмент синтеза набора фильтров, соответственно.
% Analysis section analysisFilter = dsp.SubbandAnalysisFilter(LPAnalysis, HPAnalysis); % Synthesis section synthFilter = dsp.SubbandSynthesisFilter(LPSynthsis, HPSynthesis);
Ради примера позвольте p [n], обозначают сигнал
и позвольте сигналу x [n] быть заданным
Примечание: Поскольку MATLAB® использует индексацию на основе одну, дельта [n] = 1 когда n = 1.
x = zeros(50,1); x(1:3) = 1; x(8:10) = 2; x(16:18) = 3; x(24:26) = 4; x(32:34) = 3; x(40:42) = 2; x(48:50) = 1; sigsource = dsp.SignalSource('SignalEndAction', 'Cyclic repetition',... 'SamplesPerFrame', 50); sigsource.Signal = x;
Чтобы просмотреть результаты симуляции, нам нужны четыре осциллографа:
Сравнить входной сигнал с восстановленным выходом.
Измерять ошибку между входным сигналом и восстановленным выходом
Построить ответ величины полной системы.
Построить фазовый отклик полной системы.
% Scope to compare input signal with reconstructed output sigcompare = dsp.ArrayPlot('NumInputPorts', 2, 'ShowLegend', true,... 'Title', 'Input and reconstructed signals',... 'ChannelNames',{'Input signal','Reconstructed signal'}); % Scope to plot the RMS error between the input and reconstructed signals errorPlot = timescope('Title', 'RMS Error', 'SampleRate', 1, ... 'TimeUnits', 'seconds', 'YLimits', [-0.5 2],... 'TimeSpanSource', 'property','TimeSpan',100,... 'TimeSpanOverrunAction','scroll'); % To calculate the transfer function of the cascade of Analysis and % Synthesis subband filters tfestimate = dsp.TransferFunctionEstimator('FrequencyRange','centered',... 'SpectralAverages', 50); % Scope to plot the magnitude response of the estimated transfer function magplot = dsp.ArrayPlot('PlotType','Line', ... 'YLabel', 'Magnitude Response (dB)',... 'Title','Magnitude response of the estimated transfer function',... 'XOffset',-25, 'XLabel','Frequency (Hz)',... 'YLimits',[-5 5]); % Scope to plot the phase response of the estimated transfer function phaseplot = dsp.ArrayPlot('PlotType','Line', ... 'YLabel', 'Phase Response (degrees)',... 'Title','Phase response of the estimated transfer function',... 'XOffset',-25, 'XLabel','Frequency (Hz)',... 'YLimits',[-180 180]);
Передайте входной сигнал через фильтры поддиапазона и восстановите выход. Постройте результаты на осциллографах.
for i = 1:100 % Use the same signal as input in each iteration. input = sigsource(); % Analysis [hi, lo] = analysisFilter(input); % Synthesis reconstructed = synthFilter(hi, lo); % Compensate for the delay caused by the filters and compare the % signals. Since input signal is periodic, compare the current % frames of input and output signals. sigcompare(input(2:end), reconstructed(1:end-1)); % Plot error between signals err = rms(input(2:end) - reconstructed(1:end-1)); errorPlot(err); % Estimate transfer function of cascade Txy = tfestimate(input(2:end), reconstructed(1:end-1)); magplot(20*log10(abs(Txy))); phaseplot(angle(Txy)*180/pi); end
release(errorPlot);
release(magplot);
release(phaseplot);
Первые два графика показывают, что двухканальный набор фильтров отлично восстанавливает исходный сигнал x [n]. Начальная ошибка во втором графике должна задержаться в фильтрах. Третье и четвертые графики показывают, что полная система имеет magniude ответ 0 дБ и фазовый отклик 0 °, таким образом, сохраняя характеристики частоты сигнала.