2016-12-27 5 views
0

벡터의 크기를 반환하는 함수를 만들었습니다. 출력은 360x3 차원 행렬입니다. 입력은 360x2입니다. 모든 기능이 제대로 작동하지 않습니다. 어떻게 작동시켜야합니까?가변 창에서 변수를 반환하지 않는 Scilab

clc 
P_dot_ij_om_13= rand(360,2); // 360x2 values of omega in vectors i and j 

//P_dot_ij_om_13(:,3)=0; 

function [A]=mag_x(A) 


//b="P_dot_ijOmag_"+ string(k); 

//execstr(b+'=[]');   // declare indexed matrix P_dot_ijOmag_k 
//disp(b) 


for i=1:1:360 

    //funcprot(0); 

    A(i,3)=(A(i,2)^2+A(i,1)^2)^0.5;  //calculates magnitude of i and j and adds 3rd column 

    disp(A(i,3),"vector magnitude") 


end 

funcprot(1); 

return [A]  // should return P_dot_ijOmag_k in the variable browser [360x3 dim] 

endfunction 

mag_x(P_dot_ij_om_13); 


//i=1; 
//P_dot_ij_om_13(i,3)= (P_dot_ij_om_13(i,2)^2+P_dot_ij_om_13(i,1)^2)^0.5;//   example 

답변

1

하기는 결코 어떤 변수에 mag_x(P_dot_ij_om_13)을 할당하지 않기 때문에이 함수의 출력은 어디로 사라집니다. 변수 A은이 함수에 대해 로컬이고 변수 외부에 존재하지 않습니다.

는 사용할 수 계산의 결과가 어떤 변수에 할당하려면 다음

res = mag_x(P_dot_ij_om_13) 

또는 A = mag_x(P_dot_ij_om_13) 당신이 그것의 내부에 사용 된 것과 함수의 외부에 같은 이름을 사용합니다.

그런데 Scilab documentation은 혼란을 가져 오기 때문에 return의 사용을 권장하지 않습니다. Scilab/매트랩 함수 구문은 return 함수의 출력을 지정하는 언어와 다른 :

function y = sq(x) 
    y = x^2 
endfunction 

disp(sq(3)) // displays 9 

여기 return에 대한 필요가 없습니다.