【问题标题】:Too many output arguments MatlabMatlab的输出参数太多
【发布时间】:2015-07-03 06:00:28
【问题描述】:

我有一个将度数转换为弧度的小函数。我想在将球面地理坐标转换为球面笛卡尔坐标的脚本中使用这个函数。每当我将坐标传递给函数时,我都会收到too many output argumenterror,有人可以看看它并可能告诉我我在哪里搞砸了吗?

函数从这里开始:

 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]

【问题讨论】:

  • 在第一行尝试函数 rad = winkelradiant( w )
  • 好的,我认为你以错误的方式定义了函数。也许这样的定义是可能的,但我不知道它应该做什么。这是关于 MATLAB 中的函数的信息nl.mathworks.com/help/matlab/ref/function.html
  • winkelradiant 不返回 rad。将您的 function 标头更改为 function rad = winkelradient(w)
  • @freude - 不,你是对的。函数中没有返回变量,这就是它不起作用的原因。
  • 您可能会看到定义输出的变量 y1...yN:[y1,...,yN] = myfun(x1,...,xM)

标签: matlab


【解决方案1】:

您的函数定义没有返回参数。

【讨论】:

  • 又短又性感,我喜欢!
【解决方案2】:
 function rad  = winkelradiant( w )
 dez = w(1) + w(2)/60 + w(3)/3600;
 rad = dez * (pi/180); 
 end

在 matlab 中,return veriable(s) 必须在函数的第一行定义。如果只有一个变量要返回,那么像上面的例子那样做。但是,如果有多个返回变量,则可以使用以下方法完成:

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

【讨论】:

  • 不是代码转储,而是解释为什么会这样。对于新手 MATLAB 用户,他们可能不知道自己做错了什么,因此仅仅向他们展示代码可能无济于事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
相关资源
最近更新 更多