最小二乘协作定位算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clear all
close all
clc
n=5; %Connect with 1,3,4
T=10; %simulation times
Niter=15; %interation times
dim = 2; % Dimension
sigma=0.2;
node1=[20,80]';
node2=[20,70]';
node3=[30,70]';
node4=[20,60]';
node5=[30,50]';
%node2=[15,75]';
%node4=[20,60]';
%node = [20,90;rand(1,2);30,70;rand(1,2);30,50]; % 1,3,5 coordinate N=50 %node = [20,80;40,80;30,70;20,60]; % vague 4
%z = zeros(dim,T,Niter,1);
%z1 = zeros(dim,T,Niter,1);
dieta_d = zeros(T,Niter); %contour z
%d = zeros(dim,T,n);
delat_2 = -0.25; %default delta==1
%input node's coordinate
%node = [20,80;1,1;30,70;1,1;30,50];
z=zeros(dim,1);
z1=zeros(dim,1);
d12=norm((node1-node2),2);
d32=norm((node3-node2),2);
d42=norm((node4-node2),2);
d34=norm((node3-node4),2);
d54=norm((node5-node4),2);
d24=norm((node2-node4),2);
for test=1:100
randn('state',sum(clock)*randn(1));
z2(1)=d12+sigma*randn(1,1);
randn('state',sum(clock)*randn(1));
z2(3)=d32+sigma*randn(1,1);
randn('state',sum(clock)*randn(1));
z2(4)=d42+sigma*randn(1,1);
randn('state',sum(clock)*randn(1));
z4(3)=d34+sigma*randn(1,1);
randn('state',sum(clock)*randn(1));
z4(5)=d54+sigma*randn(1,1);
randn('state',sum(clock)*randn(1));
z4(2)=d24+sigma*randn(1,1);
x1(:,1)=rand(2,1);
x2(:,1)=rand(2,1);
x1_temp=x1(:,1);
x2_temp=x2(:,1);
i=2;
n=4;
for t=2:T
% xn(:,t,1,i)=xn(:,t-1,Niter-1,i);
%xn(:,t,1,n)=xn(:,t-1,Niter-1,n);%xt(:,t-1,n);% besides Initialization, used the former product to improve the accuracy
for l=1:Niter
%for j=1:5
%i = 2;
%if (j~=5)&&(i~=j)
%e(t,l-1,j)=x(:,t,l-1,i)/norm((x(:,t,l-1,i)-x(:,t,l-1,j)),2)
% Direction vector
de1=norm((x1_temp - node1),2);
de2=norm((x1_temp - node3),2);
de3=norm((x1_temp - x2_temp),2);
%e(:,t,l-1,j) =
(xn(:,t,l-1,i)-xn(:,t,l-1,j))/norm((xn(:,t,l-1,i)-xn(:,t,l-1,j)),2);
if(de1==0)
e1=0;
else
e1 = (z2(1) - de1)*(-2)*(x1_temp - node1)/de1;
end
if(de2==0)
e2=0;
else
e2 = (z2(3) - de2)*(-2)*(x1_temp - node3)/de2;
end
if(de3==0)
e3=0;
else
e3 = (z2(4) - de3)*(-2)*(x1_temp - x2_temp)/de3;
end
%accumulate
e=e1+e2+e3;
%if (j~=1)&&(n~=j)
%e(t,l-1,j)=x(:,t,l-1,i)/norm((x(:,t,l-1,i)-x(:,t,l-1,j)),2)
% Direction vector
% de=norm((x2_temp' - node(j,:)),2);
%e(:,t,l-1,j) =
(xn(:,t,l-1,i)-xn(:,t,l-1,j))/norm((xn(:,t,l-1,i)-xn(:,t,l-1,j)),2); % if(de==0)
% e=0;
%else
% e = -2*(x2_temp(k) - node(j,k))/de;
%end
% end
%accumulate
%z1=z1+e'*(z4(j) - de);
de4=norm((x2_temp - node3),2);
de5=norm((x2_temp - node5),2);
de6=norm((x2_temp - x1_temp),2);
%e(:,t,l-1,j) =
(xn(:,t,l-1,i)-xn(:,t,l-1,j))/norm((xn(:,t,l-1,i)-xn(:,t,l-1,j)),2); if(de4==0)
e4=0;
else
e4 = (z4(3) - de4)*(-2)*(x2_temp - node3)/de4;
end
if(de5==0)
e5=0;
else
e5 = (z4(5) - de5)*(-2)*(x2_temp - node5)/de5;
end
if(de6==0)
e6=0;
else
e6 = (z4(2) - de6)*(-2)*(x2_temp - x1_temp)/de6;
end
%accumulate
e0=e4+e5+e6;