Оцененная среднеквадратичная ошибка для адаптивных фильтров
Среднеквадратичная ошибка (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')

Прогнозируемый 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')

В установившемся состоянии обе траектории сходятся.
Сумма ошибок квадратного коэффициента
Сравните сумму квадратичных ошибок коэффициентов, заданных 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')

Определите неизвестную систему, выполнив активное управление шумом с использованием алгоритма 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')

При каждой итерации адаптации значение 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')

Примечание.При использовании 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')

Примечание.При использовании 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')

adaptFilt - Адаптивная система фильтров object™Адаптивный фильтр, указанный как один из следующих системных объектов:
x - Входной сигналВходной сигнал, заданный как скаляр, вектор столбца или матрица. Столбцы матрицы x содержат отдельные последовательности входных сигналов. Вход, xи требуемый сигнал, d, должен иметь одинаковый размер и тип данных.
Если adaptFilt является dsp.BlockLMSFilter размер кадра входного сигнала должен быть больше или равен значению, указанному в BlockSize свойства объекта.
Типы данных: single | double
d - Требуемый сигналТребуемый ответный сигнал, заданный как скаляр, вектор столбца или матрица. Столбцы матрицы d содержат индивидуальные желаемые сигнальные последовательности. Вход, xи требуемый сигнал, d, должен иметь одинаковый размер и тип данных.
Если adaptFilt является dsp.BlockLMSFilter Системный объект, требуемый размер кадра сигнала должен быть больше или равен значению, указанному в BlockSize свойства объекта.
Типы данных: single | double
m - Коэффициент прореживания1 (по умолчанию) | положительный скалярКоэффициент прореживания, заданный как положительный скаляр. Каждый mтретье значение оцененных последовательностей сохраняется в соответствующих выходных аргументах, mse, meanw, w, и tracek. Если m равно 1, каждое значение этих последовательностей сохраняется.
Если adaptFilt является dsp.BlockLMSFilter Системный объект, коэффициент прореживания должен быть кратным значению, указанному в BlockSize свойства объекта.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
mse - Последовательность среднеквадратичных ошибокОценки среднеквадратичной ошибки адаптивного фильтра в каждый момент времени, возвращаемые в виде вектора столбца.
Если адаптивный фильтр dsp.BlockLMSFilter и коэффициент прореживания m указано, длина mse равно полу (М/м). M - размер кадра (количество строк) входного сигнала ,x. Если m не указан, длина mse равно полу (M/B), где B - значение, указанное в BlockSize свойства объекта. Размер кадра входного сигнала должен быть больше или равен значению, указанному в BlockSize свойства объекта. Коэффициент прореживания, если он указан, должен быть кратным BlockSize собственность.
Для других адаптивных фильтров, если коэффициент прореживания, m = 1, длина mse равен размеру кадра входного сигнала. Если m > 1, длина mse равно полу (М/м).
Типы данных: double
meanw - Последовательность векторных средств коэффициентовПоследовательность векторных средств коэффициентов адаптивного фильтра в каждый момент времени, оцененная как матрица. Столбцы этой матрицы содержат оценки средних значений коэффициентов адаптивного фильтра в каждый момент времени.
Если адаптивный фильтр 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
w - Конечные значения коэффициентов адаптивного фильтраКонечные значения коэффициентов адаптивного фильтра для алгоритма, соответствующего adaptFilt, возвращенный как вектор строки. Длина вектора строки равна значению, указанному в Length свойства объекта.
Типы данных: single | double
tracek - Последовательность значений суммарной погрешности коэффициентаПоследовательность суммарных коэффициентов мощности ошибки, оцененных как вектор столбца. Этот вектор столбца содержит оценки суммарной мощности ошибки коэффициента адаптивного фильтра в каждый момент времени.
Если адаптивный фильтр 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.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.