2015-04-24 13 views
0

У меня есть небольшая функция, которая преобразует градусы в радианы. Я хотел бы использовать эту функцию в скрипте, который преобразует сферические географические координаты в скептические декартовы координаты. Я получаю ошибку too many output argument всякий раз, когда я передаю координаты функции, может кто-то посмотреть на нее и, возможно, показать мне, где я запутался?Слишком много выходных аргументов Matlab

Функции начинается здесь:

function [] = winkelradiant(w) 
dez = w(1) + w(2)/60 + w(3)/3600; 
rad = dez * (pi/180); 
rad 
end  

Сценария начинается здесь:

function GB 
w1 = [8, 47, 15.2356]; 
w2 = [45, 12, 46.1887]; 
winkelradiant(w1) 
winkelradiant(w2) 

%Transform geographical to cartesian coordinates 
r = 6371000.785; 
a =[45, 12, 46.1887]; 
b =[8, 47, 15.2356]; 
phi = winkelradiant(a); 
lambda = winkelradiant(b); 
x = r*cos(phi)*cos(lambda); 
y = r*cos(phi)*sin(lambda); 
z = r*sin(phi); 
KO = [x y z] 
+2

функция Try рад = winkelradiant (W) в первой строке – freude

+0

Было бы гораздо полезнее, если вы сказали мне, что это, как предполагается, делать или что я делаю неправильно. Благодарю. –

+1

ОК, я думаю, что вы определили функцию неправильно. Возможно, такое определение возможно, но я не знаю, что он должен делать. Вот информация о функциях в MATLAB http://nl.mathworks.com/help/matlab/ref/function.html – freude

ответ

4

ваше определение функция не имеет возврата аргументов.

+0

Короткий и сексуальный, мне он нравится! – krisdestruction

4
function rad = winkelradiant(w) 
dez = w(1) + w(2)/60 + w(3)/3600; 
rad = dez * (pi/180); 
end 

В MATLAB возвращаемые верительные знаки должны быть определены в первой строке функции. Если есть только одна переменная, возвращаемая, то, как в приведенном выше примере. Однако, если имеется несколько обратных переменных, то это можно сделать, используя следующий подход:

function [vout1 vout2] = functionxyz(vin) 
vout1 = vin *2 ; 
vout2 = vin + 2 ; 
end 
+1

Вместо демпинга кода ** объясните **, почему это работает. Для новичков MATLAB они могут не знать, что они сделали неправильно, поэтому просто показывать их код, вероятно, не поможет. – rayryeng