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, к конечная импульсная характеристика. Выходы неизвестной системы являются желаемым сигналом, 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.

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

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.

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

Примечание.Если вы используете 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 Системный объект для создания адаптивного фильтра, который использует LMS-алгоритм filtered-x. Установите длину адаптивного фильтра равную 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/м). M - формат кадра (количество строк) входного сигнала, x. Если m не задан, длина mse равен этажу (M/B), где B - значение, заданное в BlockSize свойство объекта. Входным форматом кадра сигнала должен быть больше или равен значению, которое вы задаете в BlockSize свойство объекта. Коэффициент десятикратного уменьшения, если он задан, должен быть произведен как BlockSize свойство.

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

Введенный в R2012a