【问题标题】:MATLAB - multiple return values from a function?MATLAB - 一个函数的多个返回值?
【发布时间】:2011-05-10 10:38:37
【问题描述】:

我正在 matlab 中编写 2 个函数,一个初始化函数和一个将项目插入数组的函数,将其视为双向链表。但是,我的初始化函数只返回“ans =”和初始化数组。我怎样才能让它也设置我的其他变量的值?这是我的代码:

function [ array, listp, freep ] = initialize( size )
    array = zeros(size, 3);
    listp = 0;
    freep = 1;
end

【问题讨论】:

  • Python 也有。此外,它还有 numpy、SciPy 等;)
  • @Nick 请将正确答案标记为正确.....已经 2 年了,这家伙的答案值得被接受

标签: matlab return-value


【解决方案1】:

Matlab 允许您返回多个值并内联接收它们。

当你调用它时,内联接收单个变量:

[array, listp, freep] = initialize(size)

【讨论】:

  • 嗯,我以为我试过了,但没用,但我想我忘记了括号。谢谢!
  • 另外,如果你有一个不需要的函数输出变量,但后来你需要,~ 字符将避免在垃圾变量上浪费内存。例如,[array,~,freep]=initialize(size)(仅在 R2009b 及更高版本中。)
  • @Nick 您可能要考虑接受答案。 5 年很长,但我会说迟到总比没有好;)。
  • “2010 年 12 月 8 日 23:29”——我认为它不会被接受 :)
【解决方案2】:

我认为 Octave 只返回一个值,即第一个返回值,在您的情况下为“数组”。

Octave 将其打印为“ans”。

其他,'listp','freep' 没有打印出来。

因为它出现在函数中。

试试这个:

[ A, B, C] = initialize( 4 )

而 'array','listp','freep' 将打印为 A、B 和 C。

【讨论】:

    【解决方案3】:

    改变你得到一个单一Result=[array, listp, freep]的函数。所以只有一个结果要显示

    【讨论】:

      【解决方案4】:

      在您将调用的函数中使用以下内容,它会正常工作。

           [a b c] = yourfunction(optional)
           %your code
           a = 5;
           b = 7;
           c = 10;
           return
           end
      

      这是一种从另一个函数和命令终端调用函数的方法

           [aa bb cc] = yourfunction(optional);
      

      变量 aa、bb 和 cc 现在保存返回变量。

      【讨论】:

      • 这并没有添加任何东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多