【问题标题】:How to get multiple outputs of a function in a vector?如何在向量中获得函数的多个输出?
【发布时间】:2013-06-01 09:15:50
【问题描述】:

假设我有一个函数,它的输出是两个实数 a 和 b

[a,b]=function(c)

我想在向量 v 中获取所有输出。 v=function(c) 没有做我想要的,v 只是'a'。 当然在这里我可以做 v=[a,b]。 但是有问题的函数是用于 N 维数组的 ind2sub,因此它提供了我希望直接在向量中具有的 n 个输出。

有办法吗? 非常感谢!

【问题讨论】:

    标签: matlab function vector output


    【解决方案1】:

    您可以像这样使用元胞数组和a comma-separated list

    X = cell(N, 1);
    [X{:}] = function(C);
    

    语法X{:} 实际上扩展为[X{1}, X{2}, ...],它为您的函数提供了一个有效的接收器。因此,每个输出变量将存储在X 的不同单元格中。

    如果每个输出变量都是标量,您可以使用另一个逗号分隔的列表扩展将元胞数组展平为向量:

    v = [X{:}];
    

    【讨论】:

    • 谢谢!逗号分隔的列表很有帮助!
    • 或者你可以在最后使用 cell2mat。或者你可以编写一个函数来为你做这件事。像 MATLAB 这样的工具的好处是您可以通过这种方式自定义它以执行您喜欢的操作,并根据需要添加您自己想要的功能。
    • @woodchips 根据我的经验,Mathematica、R 和 xlisp-stat 在定制方面都远远优于 Matlab。 Matlab 的语法过于笨拙(例如,即使是非常有经验的 Matlab 用户,这个问题也非常难以回答)。
    • @John - 这就是为什么它有助于编写一个辅助函数,只编写一次,而不必记住这个技巧。我同意,在这种情况下,语法并不简单,但总的来说,我更喜欢 MATLAB 而不是你提到的其他一些。当然这只是个人喜好,因人而异。
    • @JuliaR 如果答案对您有用,请记住接受它们!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2021-01-23
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多