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