基于python与matlab的TOA定位算法性能仿真
仿真要求
要求一:编写两个函数TOA_LLOP和TOA_CHAN得到位置的估计。
要求二:用RMSE实现两种算法的性能比较, 得到两种算法的RMSE曲线对比图,横坐标为噪声方差,纵坐标为RMSE。
仿真方案的设计
主函数
设计三个接收机的位置和移动台的位置
得到范围矩阵
初始化误差为0
多次循环
矩阵元素全部平方得到新矩阵
求均方根误差
函数toallop
取出矩阵的行数、列数
将矩阵元素平方在行求和得到新矩阵
行与对应行相减
利用最小二乘法求解
Toachan函数
取出矩阵的行数、列数
将矩阵元素平方在行求和得到新矩阵
乘以矩阵m*1的全一矩阵
得到toa协方差矩阵
在运用最大释然估计
matlab仿真代码
%TOA:
% %% the simulation of TOA localization algorithm
clear all;
clc;
%接收机的位置坐标,简单实验就可采用少量样本,精准实验必须采用大量样本数量
BS1=[0,0];
BS2=[500,0];
BS3=[500,500];
%BS4=[0,500];
%BS5=[800,800];
MS=[250,250]; %移动台MS的估计位置
std_var=[1e-2,1e-1,1,1e1,1e2]; %范围矩阵
%A=[BS1;BS2;BS3;BS4]; %矩阵A包含基站的坐标
A=[BS1;BS2;BS3];
%A=[BS1;BS2;BS3;BS4;BS5];
number=10000;
for j=1:length(std_var) %从1循环到std_var的长度
error1=0;%初始误差为0
error2=0; %初始误差为0
std_var1=std_var(j);
for i=1:number %多次循环
%r1=A-ones(4,1)*MS; %矩阵A减去4*1的全一矩阵乘以MS
r1=A-ones(3,1)*MS;
%r1=A-ones(5,1)*MS;
r2=sum(r1.^2,2); %矩阵r1每个元素分别平方,得到新矩阵,在行求和,最为矩阵r2
%r=r2.^(1/2)+std_var1*randn(4,1); %从移动到位置MS发射信号到达基站i的TOA测量值
r=r2.^(1/2)+std_var1*randn(3,1);
%r=r2.^(1/2)+std_var1*randn(5,1);
theta1=TOALLOP(A,r,1); % 调用TOALLOP函数
theta2=TOACHAN(A,r,std_var1^2); % 调用TOACHAN函数
error1=error1+norm(MS-theta1)^2; %norm是返回MS-theta1的最大奇异值,即max(svd(MS-theta1)),
error2=error2+norm(MS-theta2)^2; %移动台MS估计位置与计算的到的距离的平方
end
RMSE1(j)=(error1/number)^(1/2); %求TOALLOP均方根误差
RMSE2(j)=(error2/number)^(1/2