2017-11-18 5 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