【问题标题】:multiple different sized output function?多个不同大小的输出函数?
【发布时间】:2015-01-18 15:26:58
【问题描述】:

我需要让 MATLAB 返回多个不同大小的输出,即一个是 n x m 矩阵,另一个是向量

function output = name(arg1,arg2,...,argn)

    blabla

    output = {A;B};

end

当我输入时

{A;B}=name(arg1,arg2,...,argn)

我收到此错误

错误:等号左边的表达式是 不是分配的有效目标。

如何获得这些多个输出?我不想打印它们;我需要在进一步的计算中使用输出。

【问题讨论】:

    标签: matlab output variadic-functions


    【解决方案1】:

    您还可以将varargout 选项用于函数输出,它可以让您分配(信不信由你)可变数量的输出。

    例如,考虑这个函数:

    function [varargout] = YourFcn(arg1,arg2)
    
    A = arg1;
    B = arg2;
    
    varargout = {A;B};
    
    end
    

    然后你可以调用你的函数并在命令窗口或脚本中收集这样的结果:

    x = rand(1,10);
    y = magic(5);
    
    [A,B] = YourFcn(x,y)
    

    这导致 A 和 B 被分配输出:

    A =
    
      Columns 1 through 5
    
        0.8147    0.9058    0.1270    0.9134    0.6324
    
      Columns 6 through 10
    
        0.0975    0.2785    0.5469    0.9575    0.9649
    
    
    B =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9
    

    【讨论】:

    【解决方案2】:

    这是可以做的:

    function [a,b,c,d] =  test(x,y,z)
    a = whatever;
    b = whatever;
    c = whatever;
    d = whatever;
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 2013-03-03
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多