【MATLAB函数】三点法定位+权重

三点法

通过测距,使用最小二乘法定位,用于UWB、WIFI、zigbee的定位等。

函数作用

输入与知点(锚点)的距离、锚点坐标、权重,输出待定位点的坐标。

程序源码

matlab 复制代码
function [p_out] = triposition_weight(R_calcu,baseP,varargin)
% p = [5,5;10,9;15,12;20,22;25,3]; %real location
if size(varargin,1) == 0
    W = 0.5*eye(3);
else
    W = cell2mat(varargin);
end
[baseX_,baseY_,baseZ_] = deal(baseP(:,1),baseP(:,2),baseP(:,3));
% baseY_ = baseP(:,2);
% baseZ_ = baseP(:,3);
H = [
    baseX_(2)-baseX_(1),baseY_(2)-baseY_(1);
    baseX_(3)-baseX_(1),baseY_(3)-baseY_(1);
    baseX_(4)-baseX_(1),baseY_(4)-baseY_(1)];
for i=1
    % HX=a
    a = 0.5*[
        baseX_(2).^2+baseY_(2).^2-R_calcu(i,2).^2-baseX_(1).^2-baseY_(1).^2+R_calcu(i,1).^2;
        baseX_(3).^2+baseY_(3).^2-R_calcu(i,3).^2-baseX_(1).^2-baseY_(1).^2+R_calcu(i,1).^2;
        baseX_(4).^2+baseY_(4).^2-R_calcu(i,4).^2-baseX_(1).^2-baseY_(1).^2+R_calcu(i,1).^2];
    %     p_out(i,:) = (pinv(H)*a)'; %伪逆求法
%         (H'*H)^(-1)*H'*a;
        X(:,i) = (H'*W*H)^(-1)*H'*W*a; %左逆求法

end
p_out = X';
end

待完成

没有对输入的维度(锚点数量)做自适应,后续做了自适应以后上传新程序的链接

相关推荐
XH华3 小时前
C语言第十一章内存在数据中的存储
c语言·开发语言
AndrewHZ5 小时前
【python与生活】如何用Python写一个简单的自动整理文件的脚本?
开发语言·python·生活·脚本·文件整理
拉法豆粉5 小时前
在压力测试中如何确定合适的并发用户数?
java·开发语言
枯萎穿心攻击5 小时前
Unity VS UE 性能工具与内存管理
开发语言·游戏·unity·ue5·游戏引擎·虚幻·虚幻引擎
老赵的博客6 小时前
c++ 常用接口设计
开发语言·c++
binbinaijishu886 小时前
Python爬虫入门指南:从零开始的网络数据获取之旅
开发语言·爬虫·python·其他
chenglin0166 小时前
Logstash_Input插件
java·开发语言
3壹6 小时前
单链表:数据结构中的高效指针艺术
c语言·开发语言·数据结构
不过普通话一乙不改名7 小时前
第四章:并发编程的基石与高级模式之Select语句与多路复用
开发语言·golang
JCBP_8 小时前
QT(1)
开发语言·汇编·c++·qt