资源简介
仿真程序注释齐全,仿真结果在三维坐标中,可视化高。1000个节点随机分布在三维坐标中,随机选取两个节点进行定位,随机节点以点表示,估计节点以圈圈表示!
代码片段和文件信息
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
- 下一篇:粒子群系统辨识
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论