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

时间:2017-11-18 12:29:25

标签: matlab function

这是我的功能。

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

有关如何解决此问题的任何想法? 这是实际的错误消息:

  

输出参数&#34; h&#34; (也许是其他人)在致电&#34; C:\ trans_cartesian.m&gt; trans_cartesian&#34;。

期间未分配。

1 个答案:

答案 0 :(得分:2)

正如您的错误所述,在某些情况下 allnotes = try moContext.fetch(request) as! [addednotes] 循环的条件不正确。并且您的代码必须返回while的值。因此,您应该至少在代码中为h设置初始值。例如:

h

或者,如果循环条件不正确,请在function [ phi, lambda, h ] = trans_cartesian( x, y, z ) h = 0 % continue 之后添加条件,将while的值替换为特定值:

h