Matlab中空间直角坐标系中三维速度Vxyz转Ven平面速度

news/2024/11/28 22:55:24/

关于空间直角坐标系中三维速度Vxyz转Ven平面速度,需要完成连个步骤的工作:①空间直角坐标XYZ转为大地坐标BLH;②
三维速度Vxyz转Ven平面速度;
一、空间直角坐标XYZ转为大地坐标BLH
在这里插入图片描述
二、三维速度Vxyz转Ven平面速度
在这里插入图片描述
三、正式Matlab代码
(1)工程文件下设置的文件目录,data下存放输入文件,result下存生成结果文件:
在这里插入图片描述
(2)data文件夹下存放的输入文件:
在这里插入图片描述
(3)输入文件的格式,第一列为站点名,第二列至第四列为对应XYZ坐标,第五列至第六列为对应Vx,Vy,Vz速度值:
在这里插入图片描述
(4)编写Matlab代码:
1、main_Vxyz2Ven.m

clc,clear%///读入文件数据
file_address = ['data/','raw_end.txt'];                                    %加载文件路径
%[data_name,X,Y,Z,Vx,Vy,Vz]=textread(file_address,'%s%f%f%f%f%f%f');       %第二种打开文件方式fid = fopen(file_address, 'r');                                            %以只读的方式打开文件
if (fid  == -1 )disp('Error opening file');
elsec = textscan(fid, '%s %f %f %f %f %f %f');                             % 读取文件fclose(fid);data_name=c{1};      %第一列为站点X=c{2};              %第二列为坐标XY=c{3};              %第三列为坐标YZ=c{4};              %第二列为坐标ZVx=c{5};             %第三列为速度VxVy=c{6};             %第二列为速度VyVz=c{7};             %第三列为速度VzN1=0;N1=length(X);%///调用函数将原XYZ坐标转为BL大地坐标[B,L] = XYZtoBLH(X,Y,Z);%///XYZ方向速度转为NE平面速度速度[Venu] = VXYZ2NEU(Vx,Vy,Vz,B,L,N1);%///转为度B_END=B*180/pi;L_END=L*180/pi;%///结果写入文件cd Result_datafid2=fopen('endresult.txt','w');for i=1:N1data_NAME = data_name(i);data_NAME = cell2mat(data_NAME);fprintf(fid2,' %5s',data_NAME(1:4));fprintf(fid2,' %8.3f',L_END(i));             %经度fprintf(fid2,' %8.3f',B_END(i));             %纬度fprintf(fid2,' %8.6f',Venu(i,2));            %Vnfprintf(fid2,' %8.6f',Venu(i,1));            %Veif i ~= N1fprintf(fid2,'\n');endendfclose(fid2);cd ..disp('*******转换程序运行结束*******');
end

2、XYZ2BLH.m

function [B,L] = XYZ2BLH(X,Y,Z)
%///WGS84坐标转换到大地经纬度
v=6378137;
e2=(1.0 / 298.257223563) * (2 - (1.0 / 298.257223563));L = atan2(Y, X);
B0 = atan(Z ./sqrt(X .* X + Y .* Y));
while 1N = v ./ sqrt(1 - e2 .* sin(B0) .* sin(B0));H = Z ./ sin(B0) - N .* (1 - e2);B = atan(Z .* (N+H) ./ (sqrt(X .* X + Y .* Y) .* (N .* (1-e2)+H)));if abs(B - B0) < 1e-6break;endB0 = B;N = v ./ sqrt(1 - e2 .* sin(B) .* sin(B));
endend

3、VXYZ2VNEU.m

function [Venu] = VXYZ2NEU(Vx,Vy,Vz,B_end,L_end,N1)
%B_end纬度,L_end经度
for num=1:N1B = B_end(num);L = L_end(num);V = [Vx(num);Vy(num);Vz(num)];T = [-sin(L) cos(L) 0;-sin(B)*cos(L) -sin(B)*sin(L) cos(B);cos(B)*cos(L) cos(B)*sin(L) sin(B)];Venu(num,:)=T*V;
end
end

http://www.ppmy.cn/news/786710.html

相关文章

rviz

rbx1 下载安装 一.安装 (1).克隆gmapping和amcl git clone https://github.com/ros-perception/slam_gmapping.git git clone https://github.com/ros-planning/navigation.git(2).rbx1 package 的下载 cd ~/catkin_ws/src git clone https://github.com/pirobot/rbx1.git cd…

Linux基础 | nc 网络命令,通过TCP和UDP在两台主机间建立连接传递消息、文件

nc&#xff0c;全名叫 netcat&#xff0c;它可以用来完成很多的网络功能&#xff0c;譬如端口扫描、建立TCP/UDP连接&#xff0c;数据传输、网络调试等等&#xff0c;因此&#xff0c;它也常被称为网络工具的 瑞士军刀 。 使用方式 我们可以这样来使用它&#xff1a; nc [-46…

计算机图形学基础:实验5 OpenGL二维几何变换

1&#xff0e;实验目的&#xff1a; 理解并掌握OpenGL二维平移、旋转、缩放变换的方法。 2&#xff0e;实验内容&#xff1a; 阅读实验原理&#xff0c;掌握OpenGL程序平移、旋转、缩放变换的方法。根据示范代码&#xff0c;完成实验作业。 3&#xff0e;实验原理&#xff1…

稳压二极管

一、 定义 稳压二极管&#xff0c;英文名称Zener diode&#xff0c;又叫齐纳二极管。利用PN结的反向击穿状态&#xff0c;其电流可在很大范围内变化而电压基本不变的现象&#xff0c;制成的起稳压作用的二极管。 此二极管是一种直到临界反向击穿电压前都具有很高电阻的半导体器…

[MATLAB调试笔记]时变循环诊断——[Vx(x)],[Vx(t),Vy(t),Vz(t)],[Ex(x)],[波];[Eng(t)],[Ex(k)],[Ex(x,t)],[logEx(x.t)]

静电诊断结果 电磁诊断结果 function kempo1main%*************伪随机数************%rng(default);rng(1);global flag_exitflag_exit0%*************读取参数************%prm Parameters%********renormalization*********%[prm,ren] renorm(prm);%-- initialization --[h…

【剑指offer】9. 旋转数组的最小数字(java)

文章目录 旋转数组的最小数字描述示例1示例2思路完整代码 旋转数组的最小数字 描述 有一个长度为 n 的非降序数组&#xff0c;比如[1,2,3,4,5]&#xff0c;将它进行旋转&#xff0c;即把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;变成一个旋转数组&#xff0c;比…

RabbitMQ系列(29)--RabbitMQ搭建Shovel

前言&#xff1a; Federation具备的数据转发功能类似&#xff0c;Shovel能够可靠、持续地从一个Broker中的队列(作为源端&#xff0c;即source)拉取数据并转发至另一个Broker中的交换器(作为目的端&#xff0c;即destination)。作为源端的队列和作为目的端的交换器可以同时位于…

AUTOSAR从入门到精通-【应用篇】基于 AUTOSAR 的四轮驱动客车整车控制器应用层软件开发研究

目录 前言 国内研究现状 国外研究现状 基于 AUTOSAR 的整车控制器应用层软件设计