使用MATLAB中的索引将多个函数输出分配给向量

时间:2016-03-04 08:45:03

标签: matlab function vector

我有一个简单的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

我在多种情况下遇到过这个问题,但从来没有找到解决方案。

2 个答案:

答案 0 :(得分:2)

您有两个选择:

单独输出后连接矢量

[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();

答案 1 :(得分:2)

当你在另一个函数中运行MultipleOutputs()时,它只输出第一个元素,在本例中是a

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

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

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