简体   繁体   中英

How to get multiple outputs of a function in a vector?

Say I have a function whose outputs are two reals a and b

[a,b]=function(c)

I'd like to get all the outputs in a vector v. v=function(c) doesn't do what I want, v is 'a' only. Of course here I could do v=[a,b]. But the function in question is ind2sub for a ND array so it gives n outputs that I'd like to have in a vector directly.

Is there a way to do it? Thanks very much!

You can use a cell array and a comma-separated list like so:

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

The syntax X{:} is in fact expanded to [X{1}, X{2}, ...] , which provides a valid sink for your function. As a result, each output variable will be stored in a different cell in X .

If each output variable is a scalar, you can flatten out the cell array into a vector by using yet another comma-separated list expansion:

v = [X{:}];

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