Построение аппроксимирующего эллипса

[х, y]=deal (NN (1: end-1,2), NN(2: end,2)); cv=convhull (x, y);

x=x (cv); y=y (cv);

xm=mean (x);ym=mean (y);

xn -x-xm; yn -y-ym;

VECTOR= [xn. л2, xn. *yn, yn. л2, xn, yn];

A=sum (VECTOR)/(VECTOR’*VECTOR);

a=A (1); b=A (2); c=A (3); d=A (4); e=A (5);

phi=0.5*atan (b/(c-a));

cos_phi=cos (phi);

sin_phi=sin (phi);

[a, b, c, d, e]=deal (a*cos_phV2— b*cos_phi*sin_phi...

+ c*sin_phV2,0, a*sin_phF2 + b*cos_phi*sin_phi...

+ c*cos_phV2, d*cos_phi — e*sin_phi, d*sin_phi...

+ e*cos_phi);

[xm,ym]=deal (cos_phi*xm — sin_phi*ym, sin_phi*xm...

+ cos_phi*ym);

X0=xm - d/2/а; Y0=ym - е/2/с;

F= 1 + (d*2)/(4*a) + (e^2)/(44);

[a, b]= deal (sqrt (abs (F/a)), sqrt (abs (F/c)));

L = 2*max (a, b); w = 2*min (a, b);

R= [cos_phisin_phi; -sin_phicos_phi];

t=0:0.01:2*pi;

ellipse_x_r = X0 + a*cos (t); ellipse_y_r =Y0 + b*sin (t);

rotated ellipse = R * [ellipse_x__r; ellipse_y_r];

[el_x, el_y]=deal (rotated_ellipse (1,:),...

rotated ellipse (2,:));

plot (el_x, el_y, Y);

title ((strcat (‘скаттерограмма; L=>,...

num2str (round (L)),’; yv=f, num2str (round (w)))));

Приложение 8

Вычисление размерности Хаусдорфа

NN=NN/1000; %переход к секундам

NN (:,2)= NN (:,2)-abs (min (NN (:,2)));

NN (:,2)= NN (:,2)/max (abs (NN (:,2)));

%перенормировка исходного ряда значений

NN (:, 1)= NN (:, 1) +0.001;

%сдвиг исходного ряда аргументов

NN (:, 1)= NN (:, 1)/1000;

%перенормировка исходного ряда аргументов тахХ=тах (NN); minX=min (NN);

boxsize=linspace (0.01,0.20,20); %векторразмеров ячеек boxsize =boxsize ’;

counter=zeros (length (boxsize),!);

for i=l: length (boxsize)

counter (i)=0;

box_num (i,:)=ceil ((abs (maxX)+abs (minX))/boxsize (i)); доопределение полного количества ячеек для анализа box_left=zeros (box_num (i,l), box_num (і, 2));

box_right=zeros (box_num (i,l), box_num (і,2));

box_top=zeros (box_num (i,l), box_num (i,2));

box_bottom=zeros (box_num (i,l), box_num (i,2));

n=zeros (box_num (i,l), box_num (i,2));

for 1=1: box num (i,2)

forh=l: box num (i,l)

box left (h, l)= (h-1)*boxsize (i);

box right (h, I) =h*boxsize (i);

box top (h, l)= (I)*boxsize (i);

boxjbottom (h, l)= (l-l)*boxsize (і);

if not (isempty (NN(NN(:,2)>box_bottom (h, I)...

& NN (:,2)<=box_top (h, l)& NN (:,l)>box_left (h, I)...

& NN(:,l)<=box_right (h, I),2)))

counter (i)=counter (i)+l;

%количество ячеек, необходимое для перекрытия ВР end;

ifbox_num (i,2)——0

counter=box_num (i,l);

end;

end;

end;

end;

C=polyfit (log (1./boxsize), log (counter), 1); dO=C (1);

Приложение 9

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >