简体   繁体   中英

Assign multiple function outputs to a vector using indexing in MATLAB

I have a simple MATLAB function outputting multiple variables:

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

I want to assign the two output variables to 2 certain elements in an existing vector:

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

However, this gives me:

x =

     1     6     6     1

Instead of:

x =

     1     6     8     1

I have had this problem in multiple cases, was never able to find the solution.

You have 2 choices:

Concatenate the vectors after outputting them separately

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

concatenate the vectors before outputting them

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

x(2:3) = MultipleOutputs();

when you run MultipleOutputs() like that in another function, it only outputs only the first element, which in this case is a .

So eventually your statement x(2:3) = MultipleOutputs() is equivalent to x(2:3) = 6 .

A simple fix would be to extract all the elements:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM