2016-12-27 3 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/Matlab отличается от языков, в которых return указывающего выход функции:

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

disp(sq(3)) // displays 9 

Нет необходимости return здесь.

Смежные вопросы