
- •Введение.
- •Унифицированный интерактивный язык и среда программирования
- •Упрощение кода за счет векторизации
- •Интуитивный язык
- •Инструменты проектирования
- •Глава 1. Основы работы с системой Matlab.
- •Глава 2. Задачи восстановления сигналов
- •2.1. Обратные некорректные задачи
- •2.2. Некорректность задачи восстановления сигналов
- •2.3. Методы решения задачи восстановления сигналов
- •2.4. Метод регуляризации а.Н.Тихонова
- •Глава 3. Обработка экспериментальных данных методом опорных векторов с составным шагом.
- •Глава 4. Интерполяция и аппроксимация данных.
- •Глава 5. Определение параметров составляющих сложного сигнала.
- •Литература
- •Содержание
Глава 5. Определение параметров составляющих сложного сигнала.
Рассмотрим алгоритм разделения сложного сигнала на составляющие, имеющие лоренцевскую форму при помощи некоторых преобразований, сводящих нелинейную задачу минимизации к решению линейных уравнений [13], Необходимая априорная информация – количество элементарных составляющих.
Пусть наблюдаемый сигнал можно представить в виде:
|
(5.1) |
Здесь
,
,
– параметры элементарных составляющих
сложного сигнала, подлежащие определению,
m
– количество исходных составляющих.
Умножив обе части на множитель:
|
(5.2) |
получим
|
(5.3)
|
Здесь и далее штрих у знака произведения в правой части означает, что из произведения исключен множитель с i=j. Выражение (5.3) можно записать в виде:
|
(5.4)
|
Корни
,
, входящие в (5.4), определяются из
уравнения
|
(5.5) |
Введем новые
переменные
,
(i=1,2,….,2m),
(k=1,2,…,2m-1),
которые определяются равенствами.
|
(5.6)
|
(5.7)
С учетом равенств (5.6) и (5.7) выражение (5.1) может быть записано в виде:
|
(5.8) |
Выражение (5.8) представляет собой систему линейных уравнений с 4m-1 неизвестными: 2m неизвестных xj и 2m-1 неизвестных zk.
Система может быть решена по известным значениям i в 4m-1 точках. Если xi определены, то равенства (25) определяют полином порядка 2m относительно переменных , (j=1,2…,m)
|
(5.9) |
и связанных с ними параметров
|
(5.10) |
Переменные , после определения неизвестных и могут быть найдены из системы линейных уравнений
|
(5.11) |
где матрица Lij определяется выражением
|
(5.12) |
Корни полинома (5.9) могут быть определены с помощью метода Берстоу [14], позволяющего определить комплексные корни многочлена.
Для устранения шумов в данном случае могут быть реализованы две возможности: либо предварительное сглаживание экспериментального спектра на основе метода статистической регуляризации, либо решение системы уравнений (5.8) с использованием метода регуляризации (алгоритмы описаны выше).
Для анализа
эффективности работы алгоритма проведем
численные эксперименты. Основой
модельного сигнала выбираем сложный
сигнал, в первом случае состоящий из
двух составляющих, во втором случае
состоящий из трех составляющих. В обоих
случаях составляющие сигнала будут
иметь лоренцевскую форму, характерную
для прикладной спектроскопии, параметр
– амплитуда модельной функции,
– положение центра,
– полуширина,
,
,
– естественно векторы, элементами
которых являются соответствующие
составляющие. С помощью генератора
псевдослучайных чисел к модельному
сигналу добавлялись «ошибки измерений»
заданного уровня. Полученный
«экспериментальный сигнал» подвергался
дальнейшей обработке.
Файл-сценарий для получения параметров составляющих сложного сигнала:
%Определение параметров составляющих сложного сигнала
%a,b,c - параметры лоренцианов:a-амплитуда,b-положение центра,c-полуширина
%w1,w2-границы интервала измерений,err-уровень ошибок
clear
a=[1 2];b=[1 2];c=[3 9];
m=2; n=2;
% a=[1 2 1];b=[1 1 1];c=[3 8 12]; %для трех лоренцианов
% m=3; n=3;
w1=0; w2=13;
err=0.05; epse=0.000001;
[ft,fe,w,dw]=testf(a,b,c,m,n,w1,w2,err); %формирование тестовых функции,
%ft-точная функция,
%fe-экспериментальная,dw-шаг,
%w-ось абсцисс(для графика)
%m-количество составляющих(точное)
%n-количество составляющих(априорно задаваемое)
[matr1,fi1,x01]=vspom(n,w,fe);
[y1]=algorithm2(matr1,fi1,x01,epse);
[a1,b1,c1]=consists(y1,n,w,fe,epse)
s1=sigma(ft,a1,b1,c1,n,w1,w2)
k=eye(4*n-1);
[dif,omega,ww,v,h]=matrixs(4*n-1,err,dw); %матрицы:dif-дифференцирования(2 порядка)
%omega-стабилизатор,
%ww-информационная матрица,
%v-ковариационная матрица ошибок,
alf=alfa(fe,v,k,omega); %параметр регуляризации(одношаговая оценка)
ff=inv(k'*ww*k+alf*omega)*k'*ww*fe';
[matr2,fi2,x02]=vspom(n,w,ff);
[y2]=algorithm2(matr2,fi2,x01,epse);
[a2,b2,c2]=consists(y2,n,w,ff,epse)
s2=sigma(ft,a2,b2,c2,n,w1,w2)
Отметим, что для отыскания величин y,y1,y2 мы применили алгоритм 2, а не алгоритм 4, дающий неотрицательное решение, так как при неотрицательном значении y,y1,y2 мы бы получили некоторые отрицательные значения составляющих b и c.
Файл-функция для формирования модельной функции и «экспериментальных данных»:
function [ft,fe,w,dw]=testf(a,b,c,m,n,w1,w2,err)
t=4*n-1;
%t=100;
dw=(w2-w1)/t;
ft=zeros(1,t);
for i=1:t
w(i)=w1+dw*i;
end
for i=1:t
for j=1:m
ft(i)=ft(i)+a(j)/((w(i)-c(j))^2+b(j)^2);
end
end
fe=ft+(randn(t,1)*err)';
Файл-функция (вспомогательная):
function [matr,fi,x]=vspom(n,w,f)
for i=1:(4*n-1)
for j=1:2*n
matr(i,j)=f(i)*(w(i)^(2*n-j));
end
for j=(2*n+1):(4*n-1)
matr(i,j)=-w(i)^(4*n-1-j);
end
end
for i=1:(4*n-1)
fi(i)=-f(i)*(w(i)^(2*n));
end
fi=fi';
x=zeros(1,4*n-1);
Файл-функция для определения составляющих:
function[a,b,c]=consists(y,n,w,f,epse)
for i=1:2*n
x(i)=y(i);
end
for i=(2*n+1):(4*n-1)
z(i-2*n)=y(i);
end
p=[1 x];
r=roots(p);
r=sort(r);
for i=1:n
Wi1(i)=r(2*i);
Wi2(i)=r(2*i-1);
end
c=real(Wi1);
b=imag(Wi1);
for i=1:n
for j=1:n
l(i,j)=1/((w(j)-Wi1(i))*(w(j)-Wi2(i)));
end
end
l=l';
x0=zeros(1,n);
for i=1:n
ff(i)=f(i);
end
ff=ff';
a=algorithm2(l,ff,x0,epse);
a=a';
Величина
среднеквадратичного отклонения
модельного сигнала от восстановленного
по вновь найденным параметрам определяется
в виде:
,
где
– истинный суммарный контур,
– вычисленный по наблюденным параметрам
суммарный контур.
Файл-функция для определения величины среднеквадратичного отклонения:
function [s]=sigma(f,a,b,c,n,w1,w2)
dw=(w2-w1)/n;
for i=1:n
w(i)=w1+dw*i;
end
ff=zeros(1,n);
for i=1:n
for j=1:n
ff(i)=ff(i)+a(j)/((w(i)-c(j))^2+b(j)^2);
end
end
s=0;
for i=1:n
s=s+(f(i)-ff(i))^2;
end
s=(1/n)*s;
При
=8%
решение становится бессмысленным:
a1=0,58
(при заданном равном 1), a2=2,98(2),
b1=0(1),
b2=2,46(2),
c1=1,5(3),
c2=9,99(9).
В то время как после применения метода
статистической регуляризации параметры
вычисляются уже намного лучше, так
становятся a1=0,86,
a2=2,47,
b1=0,77,
b2=2,2,
c1=3,1,
c2=9,27(значения
параметров задаются в единицах полуширины
первого контура). Итак, получаем, что
использование методов статистической
регуляризации позволяет значительно
увеличить точность решения.
Рис. 8. Зависимость среднеквадратичной ошибки от относительной погрешности при разделении двух лоренцианов (кривые 1 – без регуляризации и 2 – с регуляризацией при искомых значений параметров a1=1, b1=1, c1=3, a2=2, b2=2, c2=9) и трех лоренцианов (кривые 3 – без регуляризации и 4 – с регуляризацией, a1=1, b1=1, c1=3, a2=2, b2=1, c2=8, a3=1, b3=1, c3=12).
Следует отметить, что с увеличением числа составляющих m несколько возрастает среднеквадратичная ошибка восстановления параметров (рис. 1 – кривые 3 и 4 для m=3). Однако и в этом случае использование методов регуляризации значительно повышает точность решения.
Данный метод очень чувствителен к задаваемому априорно количеству составляющих и если n задано неверно, то решение может стать бессмысленным. Для иллюстрации этого факта мы построили таблицу, содержащую значения восстановленных параметров для сложного сигнала из трех лоренциан в зависимости от количества априорно задаваемых кривых:
n |
a1 |
a2 |
a3 |
b1 |
b2 |
b3 |
c1 |
c2 |
c3 |
3 |
1.0060 |
2.0372 |
0.8562 |
1.0039 |
0.9980 |
0.9980 |
3.0006 |
7.9977 |
12.0039 |
4 |
1.0039 |
1.7583 |
-7.4967 |
1.0045 |
1.9767 |
0.9991 |
2.9992 |
5.0310 |
8.0021 |
5 |
0.9922 |
-0.3279 |
17.5710 |
0.9981 |
0 |
1.0041 |
2.9994 |
7.0101 |
8.0012 |
Таб. 3. Значения восстановленных параметров для сложного сигнала из трех лоренциан в зависимости от количества априорно задаваемых кривых. Ошибка составляла 0,05% от максимального значения интенсивности контура. Истинные значения параметров.
Решение также становится бессмысленным при вариации формы элементарных кривых (т.е. если элементарная кривая, задаваемая в ходе математического эксперимента, несколько отличается от лоренцовской, что объясняется плохой обусловленностью системы). Некоторые результаты приведены в таблице 4.
|
без регуляризации |
с регуляризацией |
||||
параметр a |
4.0501 |
-0.0001 |
-0.0025 |
4.1371 |
0.0112 |
0.0572 |
параметр b |
0 |
0 |
0 |
0 |
0 |
0 |
параметр c |
-2.1213 |
6.0776 |
15.0793 |
-1.9789 |
6.1066 |
15.2836 |
Таб. 4. Значения
восстановленных параметров для сложного
сигнала из трех составляющих. Ошибка
составляла 0,01% от максимального значения
интенсивности контура. Форма элементарных
составляющих задавалась в виде
.
Как видим, даже
небольшая вариация формы кривой (в
знаменателе вместо
мы поставили
)
дает неудовлетворительные результаты
даже при таком небольшом уровне ошибок.
Следует заметить, что с увеличением числа составляющих m несколько возрастает среднеквадратичная ошибка восстановления параметров (рис. 8, кривые 3 и 4 для m=3). Однако и в этом случае использование методов регуляризации значительно повышает точность решения.
Была проанализирована точность определения параметров элементарных составляющих в зависимости от расстояний между их максимумами. Некоторые результаты представлены в таблице 5.
расстояния между центрами |
a1 |
a2 |
b1 |
b2 |
c1 |
c2 |
6 |
1,0009 |
2,0007 |
1,0000 |
2,0001 |
3,0003 |
9,0000 |
4 |
1,0005 |
2,0018 |
1,0001 |
2,0003 |
4,9924 |
9,0007 |
2 |
1,0021 |
2,0051 |
1,0611 |
1,9924 |
6,9101 |
9,0232 |
1.75 |
0,9722 |
2,3716 |
1,0119 |
2,0339 |
7,2525 |
8,9228 |
1.25 |
0,9338 |
2,3754 |
1,0125 |
1,9818 |
7,6311 |
9,1237 |
1 |
0,9325 |
2,5716 |
1,1610 |
1,9827 |
7,8123 |
9,1042 |
0.75 |
1,2349 |
1,2427 |
0,7324 |
2,0107 |
8,4241 |
8,8111 |
Таб. 5. Восстановление параметров при разных расстояниях между максимумами составляющих. Набрасываемая ошибка составляет 0,5% от максимального значения.
Видно, что предлагаемый метод позволяет получить достаточно точные значения параметров даже для близко сдвинутых элементарных кривых.