课程:
- 1、利用matlab分别对三边测量定位算法和改进算法进行仿真和验证 急求源程序
- 2、三站平面时差定位的MATLAB仿真和GDOP图
- 3、matlab怎么实现管道定位仿真
- 4、跪求GPS定位用户位置解算Matlab仿真程序,哪位仁兄靓姐帮帮忙?急急急!!!
- 5、用matlab 做车辆在相交道路上行驶的仿真
- 6、室内定位在matlab的什么库里进行仿真
利用matlab分别对三边测量定位算法和改进算法进行仿真和验证 急求源程序
%% 清空环境变量
clc
clear
load data
%% 数据累加作为网络输入
[n,m]=size(X);
for i=1:n
y(i,1)=sum(X(1:i,1));
y(i,2)=sum(X(1:i,2));
y(i,3)=sum(X(1:i,3));
y(i,4)=sum(X(1:i,4));
y(i,5)=sum(X(1:i,5));
y(i,6)=sum(X(1:i,6));
end
%% 网络参数初始化
a=0.3+rand(1)/4;
b1=0.3+rand(1)/4;
b2=0.3+rand(1)/4;
b3=0.3+rand(1)/4;
b4=0.3+rand(1)/4;
b5=0.3+rand(1)/4;
%% 学习速率初始化
u1=0.0015;
u2=0.0015;
u3=0.0015;
u4=0.0015;
u5=0.0015;
%% 权值阀值初始化
t=1;
w11=a;
w21=-y(1,1);
w22=2*b1/a;
w23=2*b2/a;
w24=2*b3/a;
w25=2*b4/a;
w26=2*b5/a;
w31=1+exp(-a*t);
w32=1+exp(-a*t);
w33=1+exp(-a*t);
w34=1+exp(-a*t);
w35=1+exp(-a*t);
w36=1+exp(-a*t);
theta=(1+exp(-a*t))*(b1*y(1,2)/a+b2*y(1,3)/a+b3*y(1,4)/a+b4*y(1,5)/a+b5*y(1,6)/a-y(1,1));
kk=1;
%% 循环迭代
for j=1:10
%循环迭代
E(j)=0;
for i=1:30
%% 网络输出计算
t=i;
LB_b=1/(1+exp(-w11*t)); %LB层输出
LC_c1=LB_b*w21; %LC层输出
LC_c2=y(i,2)*LB_b*w22; %LC层输出
LC_c3=y(i,3)*LB_b*w23; %LC层输出
LC_c4=y(i,4)*LB_b*w24; %LC层输出
LC_c5=y(i,5)*LB_b*w25; %LC层输出
LC_c6=y(i,6)*LB_b*w26; %LC层输出
LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6; %LD层输出
theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1)); %阀值
ym=LD_d-theta; %网络输出值
yc(i)=ym;
%% 权值修正
error=ym-y(i,1); %计算误差
E(j)=E(j)+abs(error); %误差求和
error1=error*(1+exp(-w11*t)); %计算误差
error2=error*(1+exp(-w11*t)); %计算误差
error3=error*(1+exp(-w11*t));
error4=error*(1+exp(-w11*t));
error5=error*(1+exp(-w11*t));
error6=error*(1+exp(-w11*t));
error7=(1/(1+exp(-w11*t)))*(1-1/(1+exp(-w11*t)))*(w21*error1+w22*error2+w23*error3+w24*error4+w25*error5+w26*error6);
%修改权值
w22=w22-u1*error2*LB_b;
w23=w23-u2*error3*LB_b;
w24=w24-u3*error4*LB_b;
w25=w25-u4*error5*LB_b;
w26=w26-u5*error6*LB_b;
w11=w11+a*t*error7;
end
end
%画误差随进化次数变化趋势
figure(1)
plot(E)
title('训练误差','fontsize',12);
xlabel('进化次数','fontsize',12);
ylabel('误差','fontsize',12);
%print -dtiff -r600 28-3
%根据训出的灰色神经网络进行预测
for i=31:36
t=i;
LB_b=1/(1+exp(-w11*t)); %LB层输出
LC_c1=LB_b*w21; %LC层输出
LC_c2=y(i,2)*LB_b*w22; %LC层输出
LC_c3=y(i,3)*LB_b*w23; %LC层输出
LC_c4=y(i,4)*LB_b*w24; %LC层输出
LC_c5=y(i,5)*LB_b*w25;
LC_c6=y(i,6)*LB_b*w26;
LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6; %LD层输出
theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1)); %阀值
ym=LD_d-theta; %网络输出值
yc(i)=ym;
end
yc=yc*100000;
y(:,1)=y(:,1)*10000;
%计算预测的每月需求量
for j=36:-1:2
ys(j)=(yc(j)-yc(j-1))/10;
end
figure(2)
plot(ys(31:36),'-*');
hold on
plot(X(31:36,1)*10000,'r:o');
三站平面时差定位的MATLAB仿真和GDOP图
clc;
clear;
x2=-12.99; x3=12.99; xt=0; x1=0;%%%星型d=15km
y2=7.5; y3=7.5; yt=-15; y1=0;
z2=0.01; z3=0; zt=0.01; z1=0.01;
%
% x1=-25.98; x2=25.98; x3=0; xt=0;%%%星型d=30km
% y1=15; y2=15; y3=-30; yt=0;
% z1=0.2; z2=0.2; z3=0.2; zt=0.25;
% xt=-12.99; x2=12.99; x3=0; x1=0;%%%菱形型d=15km
% yt=7.5; y2=7.5; y3=15; y1=0;
% zt=0; z2=0; z3=0; z1=0.1;
% x1=-25.98; x2=25.98; x3=0; xt=0;%%%菱形型d=30km
% y1=15; y2=15; y3=30; yt=0;
% z1=0; z2=0; z3=0; zt=0.1;
% x1=-10.6; x2=10.6; x3=21.2; xt=0;%%%平行角型形型d=15km
% y1=10.6; y2=10.6; y3=0; yt=0;
% z1=0; z2=0; z3=0; zt=0.1;
% x1=-21.2; x2=21.2; x3=42.4; xt=0;%%%平行型形型d=30km
% y1=21.2; y2=21.2; y3=0; yt=0;
% z1=0; z2=0; z3=0; zt=0.1;
%
% x1=-30; x2=0; x3=30; xt=0;%%%倒三形型d=30km
% y1=30; y2=30; y3=30; yt=0;
% z1=0; z2=0; z3=0; zt=0.1;
z=15;
y=-200:1:200;x=-200:1:200;
%
for i=1:401
for j=1:401
% for i=-70:70
% for j=-70:70
m=x(i);
n=y(j);
r1=((m-x1).^2+(n-y1).^2+(z-z1).^2).^(1/2);
r2=((m-x2).^2+(n-y2).^2+(z-z2).^2).^(1/2);
r3=((m-x3).^2+(n-y3).^2+(z-z3).^2).^(1/2);
%r4=((m-x4).^2+(n-y4).^2+(z-z4).^2).^(1/2);
rt=((m-xt).^2+(n-yt).^2+(z-zt).^2).^(1/2);
c11=(m-x1)/r1;c21=(m-x2)/r2;c31=(m-x3)/r3;ct1=(m-xt)/rt;
c12=(n-y1)/r1;c22=(n-y2)/r2;c32=(n-y3)/r3;ct2=(n-yt)/rt;
c13=(z-z1)/r1;c23=(z-z2)/r2;c33=(z-z3)/r3;ct3=(z-zt)/rt;
c=[(-ct1+c11) (-ct2+c12) (-ct3+c13);(-ct1+c21) (-ct2+c22) (-ct3+c23);(-ct1+c31) (-ct2+c32) (-ct3+c33)];
b=inv(c'*c)*(c');
b11=b(1);
b12=b(4);
b13=b(7);
b21=b(2);
b22=b(5);
b23=b(8);
b31=b(3);
b32=b(6);
b33=b(9);
% b14=b(10);
% b24=b(11);
% b34=b(12);
sigmap=0.5;%测量误差的标准差
sigmas=0.0075;%测时误差
eta=0.35;%Ri站距离和测量之间的相关系数
sigma11=sigmap.^2+sigmas.^2*2;
sigma22=sigmap.^2+sigmas.^2*2;
sigma33=sigmap.^2+sigmas.^2*2;
sigma44=sigmap.^2+sigmas.^2*2;
sigma12=eta*sigmap.^2+sigmas.^2;
sigma13=eta*sigmap.^2+sigmas.^2;
sigma14=eta*sigmap.^2+sigmas.^2;
sigma21=eta*sigmap.^2+sigmas.^2;
sigma23=eta*sigmap.^2+sigmas.^2;
sigma24=eta*sigmap.^2+sigmas.^2;
sigma31=eta*sigmap.^2+sigmas.^2;
sigma32=eta*sigmap.^2+sigmas.^2;
sigma34=eta*sigmap.^2+sigmas.^2;
sigma41=eta*sigmap.^2+sigmas.^2;
sigma42=eta*sigmap.^2+sigmas.^2;
sigma43=eta*sigmap.^2+sigmas.^2;
sigmax2=b11*b11*sigma11+b11*b12*sigma12+b11*b13*sigma13+b12*b11*sigma21+b12*b12*sigma22+b12*b13*sigma23+b13*b11*sigma31+b13*b12*sigma32+b13*b13*sigma33;
sigmay2=b21*b21*sigma11+b21*b22*sigma12+b21*b23*sigma13+b22*b21*sigma21+b22*b22*sigma22+b22*b23*sigma23+b23*b21*sigma31+b23*b22*sigma32+b23*b23*sigma33;
sigmaz2=b31*b31*sigma11+b31*b32*sigma12+b31*b33*sigma13+b32*b31*sigma21+b32*b32*sigma22+b32*b33*sigma23+b33*b31*sigma31+b33*b32*sigma32+b33*b33*sigma33;
gdop(j,i)=(sigmax2+sigmay2+sigmaz2).^(1/2);
end
end
figure(1);
[c,handle]=contour(x,y,gdop,25);%[c,handle]=contour(gdop,25);
clabel(c,handle);
% hold on;
% plot(0,0,0.1,'rpentagram','linewidth',2);
% text(0,0,1,'T');
% plot(-30,0,0,'rpentagram','linewidth',2);
% text(-31,0,0,'R1');
% plot(30,0,0,'rpentagram','linewidth',2);
% text(31,0,0,'R2');
% plot(0,-5,0,'rpentagram','linewidth',2);
% text(0,-6,0,'R3');
% plot(0,5,0,'rpentagram','linewidth',2);
% text(0,6,1,'R4');
% hold off;
xlabel('x方向(单位:km)');
ylabel('y方向(单位:km)');
% title('GDOP图');
matlab怎么实现管道定位仿真
MATLAB实现
trilateration_position.m
% ----------------采用三边定位法对未知节点定位-------------------------------
%{
clc命令是用来清除命令窗口的内容。不管开启多少个应用程序,命令窗口只有一个,
所以clc无论是在脚本m文件或者函数m文件调用时,clc命令都会清除命令窗口的内容。
clear命令可以用来清除工作空间的内容。MATLAB有个基本的工作空间,用base标识,
此外,当打开一个函数m文件时,可能会产生很多工作空间。每一个函数对应一个工作空间。
%}
clear;
maxx = 1000;%参考节点分布的最大横坐标
maxy = 1000;%参考节点分布的最大纵坐标
%----------------------随机初始化三个已知的参考点[cx,cy]-----------------
%{
rand()产生0和1之间均匀分布的随机数
rand(m)产生一个m*m的矩阵,当然矩阵的值是0和1之间均匀分布的随机数
rand(m,n)或者rand([m,n])产生一个m*n的矩阵
randn()产生均值为0, 方差为1的正态分布的随机数。用法和rand类似。
%}
cx = maxx*rand(1,3);
cy = maxy*rand(1,3);
plot(cx,cy,'k^');%参考节点图
%--------随机初始化一个未知节点(mx,my)-----------
mx = maxx*rand();
my = maxy*rand();
hold on;
% 盲节点图
plot(mx,my,'go');
da = sqrt((mx-cx(1))^2+(my-cy(1))^2);
db = sqrt((mx-cx(2))^2+(my-cy(2))^2);
dc = sqrt((mx-cx(3))^2+(my-cy(3))^2);
% 计算定位坐标
[locx,locy] = triposition(cx(1),cy(1),da,cx(2),cy(2),db,cx(3),cy(3),dc);
plot(locx,locy,'r*');
legend('参考节点','盲节点','定位节点','Location','SouthEast');
title('三边测量法的定位');
derror = sqrt((locx-mx)^2 + (locy-my)^2);
disp(derror);
跪求GPS定位用户位置解算Matlab仿真程序,哪位仁兄靓姐帮帮忙?急急急!!!
[r,c] = find(R == max(R(:))); 检索R中最大元素所在的位置(行标r和列标c)
thetap = theta(c(1)); theta()是自定义函数
用matlab 做车辆在相交道路上行驶的仿真
clear all
clc
a=[0, 0];
b=[-100 ,100];
c=[-100,100];
d=[0 ,0];
figure(1)
plot(a,b,'k','LineWidth',10)
hold on
plot(c,d,'k','LineWidth',10)
hold on
x1=[-100,0];
x2=[0 -80];
v=1;
aa=[];
ba=[];
for i=1:180;
aa(i)=-100+v.*i;
drawnow;
h1=plot(aa(i),0,'-or','LineWidth',5);
pause(0.01) ;
bb(i)=-80+v.*i;
drawnow;
h2=plot(0,bb(i),'-ob','LineWidth',5);
pause(0.01) ;
delete(h1);
delete(h2);
end
室内定位在matlab的什么库里进行仿真
基于历史数据库的室内定位算法,通过matlab对nnss算法进行仿真
云盘链接已私信发送给你了,你看一下是不是你需要的
如果还有哪位朋友想要,请点“赞”此条回答以后,在下面的评论里留下您的联系方式
学无止境,希望回答能给你带来帮助,如果满意请采纳,不满意的话请继续追问。