【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

待完成

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

相关推荐
SomeOtherTime9 小时前
Rust所有权(AI回答)
开发语言·后端·rust
Easyhood9 小时前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose
白杨尚青10 小时前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
饮水桶_T14 小时前
JAVA IO流笔记
开发语言·数据结构·算法
星夜离尘5615 小时前
MATLAB 离散数据分箱:半开区间、末端点与计数、加权和、平均
算法·matlab
Felven16 小时前
C. Brr Brrr Patapim
c语言·开发语言
路溪非溪18 小时前
python标准库使用总结
开发语言·python
SomeOtherTime19 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
zh_xuan19 小时前
kotlin常见面试题
开发语言·kotlin·面试题
草莓熊Lotso21 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试