资源简介
仿真程序注释齐全,仿真结果在三维坐标中,可视化高。1000个节点随机分布在三维坐标中,随机选取两个节点进行定位,随机节点以点表示,估计节点以圈圈表示!
![](http://www.nz998.com/pic/55947.jpg)
代码片段和文件信息
clc
clear
%xyz = zeros(21);
% 设定基站的值,四个固定节点
A=[000];
B=[010000];
C=[100000];
D=[001000];
data=rand(10003)*10; %产生一个1000行3列的(0-1)之间的数,再乘以10(1-10)之间的数
data(:1) = rand(10001)*1000; %第一列随机产生1000个数乘以1000,就是0-1000之间的数 带上一位小数
data(:2) = rand(10001)*1000;
data(:3) = rand(10001)*1000;
length(data); %返回1000
rtlength =zeros(length(data)4); %rtlength为1000行4列的0矩阵
for t=1:length(data) %循环1000次
rtlength(t1) =sqrt((data(t1)-A(1))^2+(data(t2)-A(2))^2+(data(t3)-A(3))^2)+(rand(1)-0.5)*1; %第i个点与A的距离
rtlength(t2) =sqrt((data(t1)-B(1))^2+(data(t2)-B(2))^2+(data(t3)-B(3))^2)+(rand(1)-0.5)*1; %第i个点与B的距离
rtlength(t3) =sqrt((data(t1)-C(1))^2+(data(t2)-C(2))^2+(data(t3)-C(3))^2)+(rand(1)-0.5)*1; %第i个点与C的距离
rtlength(t4) =sqrt((data(t1)-D(1))^2+(data(t2)-D(2))^2+(data(t3)-D(3))^2)+(rand(1)-0.5)*1; %第i个点与D的距离
end
% rtlength 每一行为随机点到4个基站的距离
%plot3(data(:1)data(:2)data(:3)‘.‘);
plot3(data(21)data(22)data(23)‘.‘);
hold on
plot3(data(31)data(32)data(33)‘.‘);
hold on
plot3(A(1)A(2)A(3)‘*r‘);
plot3(B(1)B(2)B(3)‘*r‘);
plot3(C(1)C(2)C(3)‘*r‘);
plot3(D(1)D(2)D(3)‘*r‘);
%axis ([0 6 0 8 0 3])
axis ([0 1000 0 1000 0 1000])
grid on;
xyz=zeros(3length(rtlength)); %xyz为3行1000列的矩阵
for h=1:length(rtlength)
AP =[000
010000
100000
001000] ;
num_ap = length(AP); %length(AP)为4
if num_ap>=4
Q =zeros(1num_ap);
for j=1:num_ap
Q(1j) =0.5;
end
Q = diag(Q); %Q为1行4列的向量,从赋值到左边Q为4行4列的矩阵,对角线元素为Q
for i=1:num_ap
Node(i)=AP(i1)^2+AP(i2)^2+AP(i3)^2; %固定参数便于位置估计 为1行四列的数
end
A=[];b=[]; %空矩阵A,b
L =rtlength(h:); %TOA测距,将每一列分别提取出来给L从1到1000
for i=1:num_ap %三边定位公式逐一作差化成矩阵:A*x=b
% A=[A;2*(AP(i1)-AP(11))2*(AP(i2)-AP(12))2*(AP(i3)-AP(13))];
A=[A;2*AP(i1)2*AP(i2)2*AP(i3)]; %系数矩阵A
b=[b;L(1)^2-L(i)^2+Node(i)-Node(1)]; %增广矩阵b
end
x=inv(A‘*inv(Q)*A)*(A‘*inv(Q)*b) %利用最小二乘法求解目的点坐标位置
% x=inv(A‘*A)*(A‘*b) %利用最小二乘法求解目的点坐标位置
xyz(:h)=x; %将x求解所得每列的数,存放到1-1000行中
% sprintf(‘%2.2f%%‘ (line/bg)*100) %%2.2f是保留2位小数了,也可以直接写%f
end
end
xyzzz = zeros(length(data)3);
xyzzz = xyz‘; %将3行1000列的数,转化为1000行3列的矩阵
plot3(xyzzz(21)xyzzz(22)xyzzz(23)‘go‘);
plot3(xyzzz(31)xyzzz(32)xyzzz(33)‘go‘);
answerx = 0;
answery = 0;
for i=1:length(xyzzz) %1-1000循环
answerx = answerx+
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3475 2019-01-29 21:23 LMS.m
- 上一篇:路径规划A*算法matlab
- 下一篇:粒子群系统辨识
相关资源
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
评论
共有 条评论