这是我的函数。
function [ phi, lambda, h ] = trans_cartesian( x, y, z )
a=6378137;
b=6356752.3141;
e2=(a^2-b^2)/(a^2);
lambda= atand(y/x);
P= sqrt(x^2+y^2);
phi=atand((z/P)/(1-(e2)));
while phi< 10^-12;
N= a/sqrt(1-(e2).*(sind(phi))^2);
h= (P/cosd(phi))-N;
phi=atand((z/P)/(1-(N/N+h).*(e2)));
end
关于如何解决这个问题的任何想法?这是实际的错误消息:
输出参数">h"(可能还有其他参数(在调用"C:\trans_cartesian.m>trans_cartesian"期间未分配。
正如您的错误中所述,在某些情况下while
循环的条件是不正确的。并且你的代码必须返回 h
的值。因此,至少应该在代码中为 h
设置一个初始值。例如:
function [ phi, lambda, h ] = trans_cartesian( x, y, z )
h = 0
% continue
或者,在while
后放置一个条件,如果循环的条件不正确,则将h
的值替换为特定值:
function [ phi, lambda, h ] = trans_cartesian( x, y, z )
%your code
while phi<10^-12
% your code
end
if(phi > 10^-12)
h = 0; % or specified value
end