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 object. The axes object 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 object. The axes object 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 object. The axes object 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)')
% Plot the learning curve for filtered-x LMS filter 
% used in system identification
title('Learning curve')

Figure contains an axes object. The axes object with title Learning curve contains an object of type line.

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

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

ha = fir1(31,0.5);
% FIR system to be identified 
fir = dsp.FIRFilter('Numerator',ha); 
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
% Observation noise signal 
n = 0.1*randn(size(x)); 
 % Desired signal 
d = fir(x)+n;
% Filter length 
l = 32;
% Decimation factor for analysis
% and simulation results 
m  = 5;                             
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)');
% Plot the learning curve used for 
% adaptive lattice filter used in system identification
title('Learning curve')

Figure contains an axes object. The axes object with title Learning curve contains an object of type line.

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

fir = fir1(31,0.5);
% FIR system to be identified 
firFilter = dsp.FIRFilter('Numerator',fir); 
iirFilter = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iirFilter(sign(randn(2000,25))); 
% Observation noise signal 
n = 0.1*randn(size(x)); 
% Desired signal 
d = firFilter(x)+n; 
% Filter length 
l = 32;       
% Block LMS Step size
mu = 0.008;  
% Decimation factor for analysis
% and simulation results 
m  = 32;                            
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)');
% Plot the learning curve for 
% block LMS filter used in system identification
title('Learning curve')

Figure contains an axes object. The axes object with title Learning curve contains an object of type line.

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

ha = fir1(31,0.5);
% FIR system to be identified 
fir = dsp.FIRFilter('Numerator',ha); 
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
% Observation noise signal 
n = 0.1*randn(size(x));         
% Desired signal 
d = fir(x)+n;  
% Filter length 
l = 32;  
% Affine Projection filter Step size. 
mu = 0.008;
% Decimation factor for analysis
% and simulation results 
m  = 5;                             
                                    
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)');
% Plot the learning curve for affine projection filter 
% used in system identification
title('Learning curve')

Figure contains an axes object. The axes object with title Learning curve 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
Для просмотра документации необходимо авторизоваться на сайте