msesim

Предполагаемая среднеквадратическая ошибка для адаптивных фильтров

Описание

пример

mse = msesim(adaptFilt,x,d) оценивает среднеквадратическую ошибку адаптивного фильтра в каждый раз момент, учитывая вход и желаемые последовательности сигнала ответа в x и d.

пример

[mse,meanw,w,tracek] = msesim(adaptFilt,x,d) также вычисляет последовательности средних значений вектора коэффициентов, meanw, адаптивные коэффициенты фильтра, w, и общие содействующие ошибочные степени, tracek, соответствие симулированному поведению адаптивного фильтра.

пример

[___] = msesim(adaptFilt,x,m) задает дополнительный фактор децимации для вычисления mse, meanw, и tracek. Если m > 1, каждый mзначение th каждой из этих последовательностей сохранено. Если не использовано, значение m значения по умолчанию к 1.

Примеры

свернуть все

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

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj(x) становится step(obj,x).

Инициализация

Создайте dsp.FIRFilter Система object™, который представляет неизвестную систему. Передайте сигнал, x, к КИХ-фильтру. Выход неизвестной системы является желаемым сигналом, d, который является суммой выхода неизвестной системы (КИХ-фильтр) и аддитивный шумовой сигнал, n.

num = fir1(31,0.5);
fir = dsp.FIRFilter('Numerator',num);  
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
n = 0.1*randn(size(x));           
d = fir(x) + n; 

Фильтр LMS

Создайте dsp.LMSFilter Системный объект, чтобы создать фильтр, который адаптируется, чтобы вывести желаемый сигнал. Установите длину адаптивного фильтра к 32 касаниям, размера шага к 0,008, и фактор децимации для анализа и симуляции к 5. Переменная simmse представляет симулированный MSE между выходом неизвестной системы, d, и выход адаптивного фильтра. Переменная mse дает соответствующее ожидаемое значение.

l = 32;
mu = 0.008;
m  = 5;

lms = dsp.LMSFilter('Length',l,'StepSize',mu);
[mmse,emse,meanW,mse,traceK] = msepred(lms,x,d,m);
[simmse,meanWsim,Wsim,traceKsim] = msesim(lms,x,d,m);

Постройте результаты MSE

Сравните значения симулированного MSE, предсказал MSE, минимальный MSE и итоговый MSE. Итоговое значение MSE дано суммой минимального MSE и избыточного MSE.

nn = m:m:size(x,1);
semilogy(nn,simmse,[0 size(x,1)],[(emse+mmse)...
    (emse+mmse)],nn,mse,[0 size(x,1)],[mmse mmse])
title('Mean Squared Error Performance')
axis([0 size(x,1) 0.001 10])
legend('MSE (Sim.)','Final MSE','MSE','Min. MSE')
xlabel('Time Index')
ylabel('Squared Error Value')

Figure contains an axes. The axes with title Mean Squared Error Performance contains 4 objects of type line. These objects represent MSE (Sim.), Final MSE, MSE, Min. MSE.

Предсказанный MSE следует за той же траекторией как симулированный MSE. Обе этих траектории сходятся с установившимся (итоговым) MSE.

Постройте содействующие траектории

meanWsim среднее значение симулированных коэффициентов, данных msesim. meanW среднее значение предсказанных коэффициентов, данных msepred.

Сравните симулированные и предсказанные средние значения коэффициентов фильтра LMS 12,13,14, и 15.

plot(nn,meanWsim(:,12),'b',nn,meanW(:,12),'r',nn,...
meanWsim(:,13:15),'b',nn,meanW(:,13:15),'r')
PlotTitle ={'Average Coefficient Trajectories for';...
            'W(12), W(13), W(14), and W(15)'}
PlotTitle = 2x1 cell
    {'Average Coefficient Trajectories for'}
    {'W(12), W(13), W(14), and W(15)'      }

title(PlotTitle)
legend('Simulation','Theory')
xlabel('Time Index')
ylabel('Coefficient Value')

Figure contains an axes. The axes with title Average Coefficient Trajectories for W(12), W(13), W(14), and W(15) contains 8 objects of type line. These objects represent Simulation, Theory.

В устойчивом состоянии оба сходятся траектории.

Сумма содействующих ошибок в квадрате

Сравните сумму содействующих ошибок в квадрате, данных msepred и msesim. Эти значения даны трассировкой содействующей ковариационной матрицы.

semilogy(nn,traceKsim,nn,traceK,'r')
title('Sum-of-Squared Coefficient Errors')
axis([0 size(x,1) 0.0001 1])
legend('Simulation','Theory')
xlabel('Time Index')
ylabel('Squared Error Value')

Figure contains an axes. The axes with title Sum-of-Squared Coefficient Errors contains 2 objects of type line. These objects represent Simulation, Theory.

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

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj(x) становится step(obj,x).

Инициализация

Создайте dsp.FIRFilter Системный объект, который представляет систему, которая будет идентифицирована. Передайте сигнал, x, к КИХ-фильтру. Выход неизвестной системы является желаемым сигналом, d, который является суммой выхода неизвестной системы (КИХ-фильтр) и аддитивный шумовой сигнал, n.

num = fir1(31,0.5);
fir = dsp.FIRFilter('Numerator',num);  
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
n = 0.1*randn(size(x));           
d = fir(x) + n;                   

Адаптивный фильтр

Создайте dsp.FilteredXLMSFilter Системный объект, чтобы создать адаптивный фильтр, который использует отфильтрованный-x LMS-алгоритм. Установите длину адаптивного фильтра к 32 касаниям, размера шага к 0,008, и фактор децимации для анализа и симуляции к 5. Переменная simmse представляет ошибку между выходом неизвестной системы, d, и выход адаптивного фильтра.

l = 32;                         
mu = 0.008;                     
m  = 5;                         
fxlms = dsp.FilteredXLMSFilter(l,'StepSize',mu); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(fxlms,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse))
xlabel('Iteration')
ylabel('MSE (dB)')
title('Learning curve for Filtered-x LMS filter used in system identification')

Figure contains an axes. The axes with title Learning curve for Filtered-x LMS filter used in system identification contains an object of type line.

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

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

ha = fir1(31,0.5);
fir = dsp.FIRFilter('Numerator',ha); % FIR system to be identified 
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
n = 0.1*randn(size(x));             % Observation noise signal 
d = fir(x)+n;                   % Desired signal 
l = 32;                             % Filter length 
m  = 5;                             % Decimation factor for analysis
                                    % and simulation results 
ha = dsp.AdaptiveLatticeFilter(l); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(ha,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse));
xlabel('Iteration'); ylabel('MSE (dB)');
title('Learning curve for Adaptive Lattice filter used in system identification')

Figure contains an axes. The axes with title Learning curve for Adaptive Lattice filter used in system identification contains an object of type line.

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

fir = fir1(31,0.5);
firFilter = dsp.FIRFilter('Numerator',fir); % FIR system to be identified 
iirFilter = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iirFilter(sign(randn(2000,25))); 
n = 0.1*randn(size(x));             % Observation noise signal 
d = firFilter(x)+n;                   % Desired signal 
l = 32;                             % Filter length 
mu = 0.008;                         % Block LMS Step size. 
m  = 32;                            % Decimation factor for analysis
                                    % and simulation results 
fir = dsp.BlockLMSFilter(l,'StepSize',mu); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(fir,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse));
xlabel('Iteration'); ylabel('MSE (dB)');
title('Learning curve for block LMS filter used in system identification')

Figure contains an axes. The axes with title Learning curve for block LMS filter used in system identification contains an object of type line.

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

ha = fir1(31,0.5);
fir = dsp.FIRFilter('Numerator',ha); % FIR system to be identified 
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
n = 0.1*randn(size(x));             % Observation noise signal 
d = fir(x)+n;                   % Desired signal 
l = 32;                             % Filter length 
mu = 0.008;                         % Affine Projection filter Step size. 
m  = 5;                             % Decimation factor for analysis
                                    % and simulation results 
apf = dsp.AffineProjectionFilter(l,'StepSize',mu); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(apf,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse));
xlabel('Iteration'); ylabel('MSE (dB)');
title('Learning curve for Affine Projection filter used in system identification')

Figure contains an axes. The axes with title Learning curve for Affine Projection filter used in system identification contains an object of type line.

Входные параметры

свернуть все

Адаптивный фильтр в виде одного из следующих Системных объектов:

Входной сигнал в виде скаляра, вектор-столбца или матрицы. Столбцы матричного x содержите отдельные последовательности входного сигнала. Вход, x, и желаемый сигнал, d, должен иметь тот же размер и тип данных.

Если adaptFilt dsp.BlockLMSFilter объект, формат кадра входного сигнала должен быть больше или быть равен значению, которое вы задаете в BlockSize свойство объекта.

Типы данных: single | double

Желаемый сигнал ответа в виде скаляра, вектор-столбца или матрицы. Столбцы матричного d содержите желаемые последовательности индивидуума сигнала. Вход, x, и желаемый сигнал, d, должен иметь тот же размер и тип данных.

Если adaptFilt dsp.BlockLMSFilter Системный объект, желаемый формат кадра сигнала должен быть больше или быть равен значению, которое вы задаете в BlockSize свойство объекта.

Типы данных: single | double

Фактор децимации в виде положительной скалярной величины. Каждый mзначение th предполагаемых последовательностей сохранено в соответствующие выходные аргументы, mse, meanwW, и tracek. Если m равняется 1, каждое значение этих последовательностей сохранено.

Если adaptFilt dsp.BlockLMSFilter Системный объект, фактор децимации должен быть кратным значению, которое вы задаете в BlockSize свойство объекта.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Выходные аргументы

свернуть все

Оценки среднеквадратической ошибки адаптивного фильтра в каждый раз момент, возвращенный как вектор-столбец.

Если адаптивным фильтром является dsp.BlockLMSFilter и фактор децимации m задан, длина mse равняется полу (M/m). M является форматом кадра (количество строк) входного сигнала, x. Если m не задан, длина mse равняется полу (M/B), где B является значением, вы задаете в BlockSize свойство объекта. Формат кадра входного сигнала должен быть больше или быть равен значению, которое вы задаете в BlockSize свойство объекта. Фактор децимации, если задано, должен быть кратным BlockSize свойство.

Для других адаптивных фильтров, если фактор децимации, m = 1, длина mse равняется формату кадра входного сигнала. Если m > 1, длина mse равняется полу (M/m).

Типы данных: double

Последовательность средних значений вектора коэффициентов адаптивного фильтра в каждый раз момент, оцененный как матрица. Столбцы этой матрицы содержат оценки средних значений адаптивных коэффициентов фильтра в каждый раз момент.

Если адаптивным фильтром является dsp.BlockLMSFilter и фактор децимации m задан, размерности meanw пол (M/m)-by-N. M является форматом кадра (количество строк) входного сигнала, x. N является длиной вектора весов фильтра, заданного Length свойство адаптивного фильтра. Если m не задан, размерности meanw пол (M/B)-by-N, где B является значением, вы задаете в BlockSize свойство объекта. Формат кадра входного сигнала должен быть больше или быть равен значению, которое вы задаете в BlockSize свойство объекта. Фактор децимации, если задано, должен быть кратным BlockSize свойство.

Для других адаптивных фильтров, Если фактор децимации, m = 1, размерности meanw M-by-N. Если m > 1, размерности meanw пол (M/m)-by-N.

Типы данных: double

Окончательные значения адаптивных коэффициентов фильтра для алгоритма, соответствующего adaptFilt, возвращенный как вектор-строка. Длина вектора-строки равняется значению, которое вы задаете в Length свойство объекта.

Типы данных: single | double

Последовательность общих содействующих ошибочных степеней, оцененных как вектор-столбец. Этот вектор-столбец содержит оценки общей содействующей ошибочной степени адаптивного фильтра в каждый раз момент.

Если адаптивным фильтром является dsp.BlockLMSFilter и фактор децимации m задан, длина tracek равняется полу (M/m). M является форматом кадра (количество строк) входного сигнала, x. Если m не задан, длина tracek равняется полу (M/B), где B является значением, вы задаете в BlockSize свойство объекта. Формат кадра входного сигнала должен быть больше или быть равен значению, которое вы задаете в BlockSize свойство объекта. Фактор децимации, если задано, должен быть кратным BlockSize свойство.

Для других адаптивных фильтров, если фактор децимации, m = 1, длина tracek равняется формату кадра входного сигнала. Если m > 1, длина tracek равняется полу (M/m).

Типы данных: double

Ссылки

[1] Hayes, M.H. Статистическая цифровая обработка сигналов и моделирование. Нью-Йорк: John Wiley & Sons, 1996.

Представленный в R2012a