坐标转换程序设计(matlab)

坐标转换程序设计(matlab)
坐标转换程序设计(matlab)

基于MATLAB的七参数坐标系统转换问题分析(精)

基于 MATLAB 的七参数法坐标系统转换问题分析 1 张鲜妮 21, ,王磊 21, 1、中国矿业大学环境与测绘学院,江苏徐州 (221008 2、江苏省资源环境信息工程重点实验室,江苏徐州 (221008 E-mail: 摘要:GPS 测量的坐标是基于 WGS-84坐标系下的,而我国实用的测量成果大多都是基于北京 54坐标系下的。随着 GPS 测量技术的广泛使用,由 WGS-84坐标向北京 54坐标系下坐标的转换问题一直是一个可探讨的问题, 坐标系统转换的现有模型很多, 但常用的还是经典的七参数转换模型。随着不断的实践研究, 发现七参数在进行坐标系统转换时有一定的局限性。本文采用 MATLAB 语言编写了七参数法坐标系统转换程序,并对七参数坐标系统转换的若干问题进行了分析讨论。分析结果表明, 小区域范围内用正常高代替大地高对坐标转换精度影响很小; 公共点分布情况对坐标转换精度影响显著; 合适的公共点密度有利于提高坐标转换精度。 关键词:七参数法;坐标系统; MATLAB ;转换问题 1. 引言 随着 GPS 空间定位技术的发展, GPS 技术以其快速、精确、全天候在测量中的应用变的越来越广泛, GPS 成为建立基础控制网的首选手段 ]1[,由于 GPS 系统采用的是 WGS-84坐标系, 是一种地心坐标系, 而我国目前常用的两个坐标系 1954年北京坐标系 (以下称 BJ54 和 1980年国家大地坐标系,是一种参心坐标系,采用克拉所夫斯基椭球为参考椭球,并采用高斯克吕格投影方式进行投影, 我国的国土测量成果和在进行工程施工时大都是基于这两个坐标系下的。所以在利用 GPS 技术进行测量过程中必然存在由 WGS-84坐标向北京 54坐标系下的转换问题。现有的转换模型已经成熟,归纳起来主要有布尔莎 -沃尔夫模型(七参数法、莫洛登斯基 -巴代卡

MATLAB中的abc dq相坐标变换

坐标变换总结 姓名: 日期:2011.11.4

坐标变换的总结 一.由三项坐标系变换到两相旋转坐标系 1.三相到两相静止坐标系的变换首先,确定三相电压的相序: cos() 2cos()34cos()3A m B m c m u U wt u U wt u U wt ππ==- =- 在坐标图上表示三相到两相静止坐标系上的变换,如图所示: 图13-2s 变换 由上图,我们可以将A u 、B u 、c u 转化到两相静止坐标系上,具体等式如下: 211()3222()322A B C B C u u u u u αβ?=--????=-?? 插入系数2、 3是为了保证两相坐标系中合成矢量的模与各相电压的模相同。后面会推导为什么可以保证模不变。 整理成状态方程的形式,如下: 1112223022A B C u u u u u αβ????-- ???????=?????????-??????2.两相静止坐标系到两相旋转坐标系的变换 我们知道,在两相静止坐标系中,合成矢量是旋转的,我们令旋转坐标系的d 轴与旋转矢量重合,则可将其转换到旋转坐标系中。坐标变换如图所示:

图22s-2r 变换 此时,我们可以得到,两相静止坐标系到两相旋转坐标系的公式,其中θ一般取为A 相的相角。 cos sin sin cos d q u u u u αβθθθθ??????=??????-???? ??二.反向变换 1.若需要将旋转坐标系转化到静止坐标系上,只需相应的将d-q 向αβ-投影即 可,根据图二,我们可以得到: cos sin sin cos d q u u u u αβθθθθ????-??=???????????? 2.同理,根据图1,我们可以将αβ-分别投影到A 、B 、C 上,获得其逆变换: 102133221322A B C u u u u u αβ??????????????=-???????????????--???? 三.关于乘以2/3保持模不变的问题首先,我们已经能够确定了电压相序 cos() 2cos()34cos()3A m B m c m u U wt u U wt u U wt ππ==- =-经过变换后: 211()322 A B c u u u u α=--

基于matlab的坐标正反算

测量程序设计实验报告 实验名称:坐标正反算

实验三坐标正反算 一、实验目的 编写坐标正反算程序,并对格式化文件数据进行计算,验证程序。 二、实验内容 1、编写坐标正算程序 1)建立以xy_direct命名的函数,函数输入输出格式为 [x2,y2] = xy_direct(x1,y1,distance, azimuth) 度转度分秒: >> function dms= degree2dms(jiaodu) >>degree = fix(jiaodu); >>mimute = fix((jiaodu-degree)*60); >>second = ((jiaodu-degree)*60-mimute)*60; >>dms = degree+mimute/100+second/10000; 度分秒转度: >> function degree = dms2degree(jiaodu) >>degree = fix(jiaodu); >> mimute = fix((jiaodu-degree)*100); >>second = (jiaodu-degree-mimute/100)*10000; >>degree = degree+mimute/60+second/3600; 弧度转度: >> function dms=rad2dms(rad) >> rad=abs(rad); >>jiaodu=rad*180.0/pi; >> % l=fix(a) >> % b=(a-l)*60.0 >> % m=fix(b) >> % a=l+m/100.0+(b-m)*0.006

Matlab_Simulink中Clark变换和Park变换的深度总结

Matlab_Simulink 中Clark 变换和Park 变换的深度总结 最近搞三相并网逆变系统,对这个坐标变换产生了很多疑惑。调模型,排错,最后发现坐标变换这个地方出来的波形总是和我设想的不一样。以前认为坐标变换都是死的,带公式即可,经过这几天的研究,发现这里面真的有些方法。基于MATLAB/Simulink 中的模块,我也发现了Simulink 中和一些书上不一样的地方。而且现在这个坐标变换每本书上的表示方法都不一样,甚至字母都有好多种。下面我想基于MATLAB/Simulink 深刻的总结一下三相交流控制系统常用的两个变换Clark (3-2)变换和Park (2-2)变换。 首先来搞清楚为什么要用这两个变换,在三相交流系统中,常用的控制器还是经典的PI 调节器。PI 调节器可以对直流量进行无净差的调节,而交流量就不行,所以需要将三相交流分量转化为两项直流分量加以控制。 接下来看看Clark 变换(3-2)原理。由于三相分量幅值相等,相位相差120,角速度相等,因此三相分量存在信息冗余,这时,可以去掉一项将其化为两相,这就是Clark 变换的作用。由于两项分量所在的坐标轴是静止的,所以我们把此坐标轴称为两相静止坐标系。也就是说平面上的原来基于三相静止坐标系的矢量,可以切换到两相静止坐标系表示。变换的原则是投影原则+等幅值等效原则(DPC 时用功率等效原则)。 令A 与alfa 轴重合,按照变换原则,计算投影ABC 分量在alfa 、beta 上的投影,按照 等复制变换原则导出变换矩阵方程如下。 11122230A B C αβ????-- ????? =???? ???? ??? Simulink 中的3/2变换也是基于此变换进行的。但是,在电气工程中为大家熟知的三相正序的相序是,A 为0,B 为-120,C 为120(也可以是-240).如果按照图中所标注的方向进行坐标变换,那一定要将相序变为负序,也就是说A 为0,B 为120,C 为-120. 如果坚持用传统正序,那么再按上式变换之后的坐标进行变换的话,beta 轴就反向了。也就是说,采用A 为0,B 为-120,C 为120的相序,利用上面的变换方程进行变换的结果是,beta 滞后alfa 90°.

基于matlab的大地坐标与直角坐标间的转换精编版

测量程序设计 实验报告 实验名称:大地坐标与空间直角坐标的 换算

实验四 大地坐标与空间直角坐标的换算 一、实验目的 编写大地坐标与空间直角坐标相互转换的程序,并对格式化文件数据进 行计算,验证程序。 二、实验内容: 1、大地坐标向空间直角坐标换算 转换公式: B h e N z L B h N y L B h N x sin ])1([sin cos )(cos cos )(2+-=+=+= (1) 其中:L 为经度,B 为纬度,h 为大地高,B e a N 22sin 1-=为卯酉圈曲率半径, a b a e 2 2-=为第一偏心率,a 为旋转椭球长半轴,b 为短半轴。 WGS84椭球参数:长半轴 a = 6378137 扁率 f = 1/298.257223563 根据上式创建以geo 2xyz 命名的函数,函数输入输出格式为 [x, y, z] = geo 2xyz (L, B, h) 2、空间直角坐标向大地坐标换算 根据式(1)推导大地坐标向空间直角坐标转换公式: N B y x h y x B Ne z B x y L -+=++==cos )sin arctan() /arctan(2 2222 注意计算纬度时需要用到迭代,可用)arctan(22y x b az B +=作为初始值。 创建以xyz2geo 命名的函数,函数输入输出格式为 [L, B, h] = xyz 2geo (x, y, z)

三、实验步骤 1、大地坐标向空间直角坐标换算 主程序: %%大地坐标向空间直角坐标换算 %函数的输入输出格式为[x,y,z]=geo2xyz(L,B,h) [filename,pathname] = uigetfile('*.txt','请选择打开的数据文件'); file = [pathname, filename]; data = importdata(file); L=data.data(:,1); B=data.data(:,2); h=data.data(:,3); [x,y,z]=geo2xyz(L,B,h); A=[x,y,z]; A=A'; [filename_out,pathname_out] = uiputfile('*.txt','请选择要输出数据文件'); fileout = [pathname_out, filename_out]; fid = fopen(fileout,'wt'); fprintf(fid,' x y z\n'); fprintf(fid,'%15.7f %15.7f %15.7f\n',A); close('all'); 函数: function [x,y,z]=geo2xyz(L,B,h) %大地坐标经纬度转换成空间直角坐标 B=dms2rad(B); L=dms2rad(L); a=6378137; %a是长半轴 f=1/298.257223563; %f是扁率 b=a-a*f; e=sqrt(a^2-b^2)/a; N=a./(sqrt(1-e^2.*(sin(B)).^2)); %N为卯酉圈半径率,e为第一偏心率 x=(N+h).*cos(B).*cos(L); y=(N+h).*cos(B).*sin(L); z=(N*(1-e^2)+h).*sin(B); end function rad=dms2rad(jiaodu) %度分秒->弧度(rad) degree = fix(jiaodu); mimute = fix((jiaodu-degree)*100);

MATLAB程序北京54转换为WGS84坐标(GPS)

%北京54转换为WGS84坐标(GPS) %X=3459174.0300 Y=36503163.4500 X=3459181.0255; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%输入X值 Y=36503206.2860; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%输入X值 x=X; y=Y-fix(Y/1000000)*1000000-500000; b=x*3600*180/pi/6367558.4969; T=(cos(b*pi/180/3600))^2; Bf=b+(50221746+(293622+(2350+22*T)*T)*T)*sin(b*pi/180/3600)*cos(b*pi/180/3600)*3600* 180/pi/10^10; Q=(cos(Bf*pi/180/3600))^2; Nf=6399698.902-[21562.267-(108.973-0.612*Q)*Q]*Q; Z=y/(Nf*cos(Bf*pi/180/3600)); b2=(0.5+0.003369*Q)*sin(Bf*pi/180/3600)*cos(Bf*pi/180/3600); b3=0.333333-(0.166667-0.001123*Q)*Q; b4=0.25+(0.16161+0.00562*Q)*Q; b5=0.2-(0.1667-0.0088*Q)*Q; B=Bf-[1-(b4-0.12*Z^2)*Z^2]*Z^2*b2*180*3600/pi; L=[1-(b3-b5*Z^2)*Z^2]*Z*180*3600/pi; B1=fix(B/3600); B2=fix((B-B1*3600)/60); B3=B-B1*3600-B2*60; L1=fix(L/3600); L2=fix((L-L1*3600)/60); L3=L-L1*3600-L2*60; L4=fix(Y/1000000)*3+L1; fprintf('\n\n') fprintf('p点的WGS84坐标:%f\t%f\t%f\t\n',B1,B2,B3) fprintf('p点的WGS84坐标:%f\t%f\t%f\t\n',L4,L2,L3)

空间直角坐标XYZ换算为经纬度BL的matlab编程

空间直角坐标XYZ换算为经纬度BL程序 (matlab编程) 度分秒转弧度函数代码: function hd=dzh(a) hh=sign(a); a=abs(a); hd=hh*(fix(a)+fix((a-fix(a))*100)/60+((a-fix(a))*100-... fix((a-fix(a))*100))*100/3600)*pi/180;%度分秒转化为弧度 end 弧度转度分秒函数代码: function jd=hzd(x) jd=fix(x*206264.8062470964/3600)+fix((x*206264.8062470964/3600-... fix(x*206264.8062470964/3600))*60)/100+((x*206264.8062470964/3600-... fix(x*206264.8062470964/3600))*60-fix((x*206264.8062470964/3600-... fix(x*206264.8062470964/3600))*60))*60/10000;%弧度转化为度分秒 end 主程序代码: fprintf('-----克拉索夫斯基椭球体请输入1;1975年国际椭球体请输入2;WGS 84椭球请输入3-----') kk=input('请输入:'); if kk==1 a=6378245;%长半轴克拉索夫斯基椭球体 b=6356863.019;%短半轴 elseif kk==2 a=6378140; %长半轴 1975年国际椭球体 b=6356755.288; %短半轴 else a=6378137;%长半轴 1975年国际椭球体 b=6356752.314; %短半轴 end e1=sqrt(a^2-b^2)/a; %第一偏心率 c=a^2/b; X=input('请输入X:'); Y=input('请输入Y:');

基于matlab的坐标轮换法程序

function y=ff(x1,x2) %y=10*(x1+x2-5)^2+(x1-x2)^2; y=x1^2+x2^2-x1*x2-10*x1-4*x2+60; function alpha=goldmethod2(x01,x02,d,h0) % 输入分割比gama gama=0.618; % 确定搜索区间[a,b] [a,b]=search2(x01,x02,d,h0); %计算a1,a2和函数值y1,y2, 确定最优步长alpha a1=b-gama*(b-a);y1=ff(x01+d(1)*a1,x02+d(2)*a1); a2=a+gama*(b-a);y2=ff(x01+d(1)*a2,x02+d(2)*a2); for n=1:100 if y1>=y2 x1(n)=a1;x2(n)=a2;yp1(n)=y1;yp2(n)=y2; a=a1;a1=a2;y1=y2; a2=a+gama*(b-a);y2=ff(x01+d(1)*a2,x02+d(2)*a2); else x1(n)=a1;x2(n)=a2;yp1(n)=y1;yp2(n)=y2; b=a2;a2=a1;y2=y1; a1=b-gama*(b-a);y1=ff(x01+d(1)*a1,x02+d(2)*a1); end aa(n)=(a+b)/2; %输出极值点 y(n)=ff(x01+d(1)*aa(n),x02+d(2)*aa(n)); %输出极值点函数值e(n)=abs(b-a); alpha=(a+b)/2; if abs(b-a)<1e-5 break; end end

clear; h0=0.1; x0=[0,0]; e=[1,0;0,1]; xp=[0,0]; for k=1:20 k for i=1:2 i x01=x0(1);x02=x0(2);d=e(i,:); alpha=goldmethod2(x01,x02,d,h0); % 确定最优步长alpha alpha x1=x0+alpha*d; x0=x1; xp end xn=x1; if abs(xn-xp)<1e-1 break; end xp=xn; end clear; % 给定初始值 h0=0.1; x0=[0,0]; e=[1,0;0,1]; n=2; for k=1:20 k % k 代表第轮计算 % 111111111111111111 第1 到n 次搜索计算111111111111111111 for i=1:1 % 第1次搜索

Matlab-Simulink中Clark变换和Park变换的深度总结

Matlab_Simulink中Clark变换和Park变换的深度总结 最近搞三相并网逆变系统,对这个坐标变换产生了很多疑惑。调模型,排错,最后发现坐标变换这个地方出来的波形总是和我设想的不一样。以前认为坐标变换都是死的,带公式即可,经过这几天的研究,发现这里面真的有些方法。基于MATLAB/Simulink中的模块,我也发现了Simulink中和一些书上不一样的地方。而且现在这个坐标变换每本书上的表示方法都不一样,甚至字母都有好多种。下面我想基于MATLAB/Simulink深刻的总结一下三相交流控制系统常用的两个变换Clark(3-2)变换和Park(2-2)变换。 首先来搞清楚为什么要用这两个变换,在三相交流系统中,常用的控制器还是经典的PI 调节器。PI调节器可以对直流量进行无净差的调节,而交流量就不行,所以需要将三相交流分量转化为两项直流分量加以控制。 接下来看看Clark变换(3-2)原理。由于三相分量幅值相等,相位相差120,角速度相等,因此三相分量存在信息冗余,这时,可以去掉一项将其化为两相,这就是Clark变换的作用。由于两项分量所在的坐标轴是静止的,所以我们把此坐标轴称为两相静止坐标系。也就是说平面上的原来基于三相静止坐标系的矢量,可以切换到两相静止坐标系表示。变换的原则是投影原则+等幅值等效原则(DPC时用功率等效原则)。 令A与alfa轴重合,按照变换原则,计算投影ABC分量在alfa、beta上的投影,按照等复制变换原则导出变换矩阵方程如下。

11122230A B C αβ????-- ????? =???? ???? ??? Simulink 中的3/2变换也是基于此变换进行的。但是,在电气工程中为大家熟知的三相正序的相序是,A 为0,B 为-120,C 为120(也可以是-240).如果按照图中所标注的方向进行坐标变换,那一定要将相序变为负序,也就是说A 为0,B 为120,C 为-120. 如果坚持用传统正序,那么再按上式变换之后的坐标进行变换的话,beta 轴就反向了。也就是说,采用A 为0,B 为-120,C 为120的相序,利用上面的变换方程进行变换的结果是,beta 滞后alfa 90°. 下面再看Simulink 中的波形图。 这是传统的正序的三相正弦交流电。(A 为0,B 为120,C 为-120)下面用 Simulink 自带的坐标变换模块进行3/2变换。波形如下。

基于MATLAB的坐标转换程序设计毕业设计论文

对人体一条鱼 本科生 毕业设计(论文)中文题目:基于MATLAB的坐标转换程序设计 English Title:Based on the MATLAB coordinate conversion program design

摘要 本文主要阐述了基于MATLAB的坐标转换程序设计与实现的问题。论述以MATLAB为开发平台和编程语言,设计出解决工程测量中常见的坐标转换问题的程序。坐标转换一直是专业性强且不易解决的问题,针对目前坐标转换软件功能单一、操作不方便等问题,采用窗口、菜单、控件的操作方式,实现了所见即所得的人性化界面设计。程序的设计主要从两个方面进行,其一保证程序有较高的转换精度,其二是友好的界面设计。程序的运行能满足工程测量人员对坐标转换运算和坐标数据分析的需要,程序实现了不同参考椭球情况下七参数和四参数的计算过程、不同坐标系统的坐标转换和换带计算程序化。论文还诠释了测量坐标转换的含义和内容,针对坐标转换基本模型的选用、转换参数的解算、转换计算的方法、转换计算中值得注意的问题加以研究和探讨,以便实现在测量实践和理论中各类不同坐标之间的转换计算。 关键词:坐标转换,换带,参考椭球,MATLAB,图形用户界面

Abstract This article expatiates the design and implementation of a computing program for coordinate conversion, operation of MATLAB. With programmed language, the article designs the program of solving the common coordinate conversion problems in the engineering survey, which regards MATLAB as an exploitation basis. coordinate conversion is a professional problem which is difficult to solve, to solve the existed problems , the operating modes of windows, menus and widgets are adopted. Moreover, the WYSWYG humanized program designs are realized. The program designs come from two aspects. Firstly, the powerful operation function of the program is guaranteed. Secondly, the visualization is designed. The program operation meets the needs which engineering survey personnel need to have the coordinate conversion operation and data analysis. Meanwhile, the program designs the coordinate conversion function, including coordinate conversion among different coordinate systems and between two projection zones, realizing the computation of 4 parameters as well as 7 parameters under the coordinates among different coordinate systems. Above all, the article includes the meaning and content of transformation, basic model selection of coordinates transformation, calcu1ation of transformation parameters, calculation method of transformation and problems existing in transformation. Calculation are researched and discussed in this paper in order to measure transformation calculation of different coordinate in practice and theory. Key words:Coordinate conversion, Stripe exchange, Reference ellipsoid, MATLAB,GUI

相关文档
最新文档