调用期间未分配输出参数:MATLAB 错误



这是我的函数。

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 

最新更新