2017-11-18 465 views
-3

这是我的功能。在调用期间未分配输出参数: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”。

回答

2

正如您在错误中提到的,在某些情况下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 
相关问题