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