exponenta event banner

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Сохраняют третье значение каждой из этих последовательностей. Если опущено, значение m по умолчанию - 1.

Примеры

свернуть все

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

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

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

Создать dsp.FIRFilterСистемный object™, представляющий неизвестную систему. Передайте сигнал, x, к фильтру FIR. Выход неизвестной системы является требуемым сигналом, d, которая является суммой выходного сигнала неизвестной системы (FIR-фильтр) и аддитивного шумового сигнала, 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.

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

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

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

Создать dsp.FIRFilter Системный объект, представляющий идентифицируемую систему. Передайте сигнал, x, к фильтру FIR. Выход неизвестной системы является требуемым сигналом, d, которая является суммой выходного сигнала неизвестной системы (FIR-фильтр) и аддитивного шумового сигнала, 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 Системный объект для создания адаптивного фильтра, использующего алгоритм filtered-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третье значение оцененных последовательностей сохраняется в соответствующих выходных аргументах, mse, meanw, w, и tracek. Если m равно 1, каждое значение этих последовательностей сохраняется.

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

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