【问题标题】:Assign multiple function outputs to a vector using indexing in MATLAB使用 MATLAB 中的索引将多个函数输出分配给向量
【发布时间】:2016-03-04 08:45:02
【问题描述】:

我有一个输出多个变量的简单 MATLAB 函数:

function [a,b] = MultipleOutputs()
a = 6;
b = 8;
end

我想将两个输出变量分配给现有向量中的 2 个特定元素:

x = ones(1,4);
x(2:3) = MultipleOutputs()

但是,这给了我:

x =

     1     6     6     1

代替:

x =

     1     6     8     1

我多次遇到这个问题,一直没能找到解决办法。

【问题讨论】:

    标签: matlab function vector


    【解决方案1】:

    你有两个选择:

    分别输出后连接向量

    [a,b] = MultipleOutputs();
    x = ones(1,4);
    x(2:3) = [a,b];
    

    在输出之前连接向量

    function a = MultipleOutputs()
        a(1) = 6;
        a(2) = 8;
    end
    
    x(2:3) = MultipleOutputs();
    

    【讨论】:

    • 第三种选择,元胞数组:x=num2cell(ones(1,4));[x{2:3}]=MultipleOutputs();,但返回向量可能是最佳选择。
    【解决方案2】:

    当你像在另一个函数中那样运行MultipleOutputs() 时,它只输出第一个元素,在这种情况下是a

    所以最终你的声明x(2:3) = MultipleOutputs() 等同于x(2:3) = 6

    一个简单的解决方法是提取所有元素:

    [a,b] = MultipleOutputs();
    x(2:3) = [a b];
    

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多