Using a function as an input to another

I have a function with two output arguments. I'm trying to pass it as an input to another function where I will need both outputs of the first function.
This is just a minimal example. The two functions:
function [X y] = M(d)
X = d;
[~,Y] = d;
end
function [A B] = N(a)
A = 2*a;
B = 3*a;
end
Basically, I want the following two lines to produce the same output
[a b] =N(3)
M(N(3))

1 件のコメント

madhan ravi
madhan ravi 2018 年 10 月 22 日
add comments to your code so that its easier to understand what you are trying to do

サインインしてコメントする。

 採用された回答

Walter Roberson
Walter Roberson 2018 年 10 月 22 日

0 投票

No, when a function has multiple outputs, the only way to capture them all is to use a real function and assign the results to variables. It is not possible in MATLAB to capture multiple outputs of a function inside an expression.

1 件のコメント

kor vec
kor vec 2018 年 10 月 22 日
Thanks. I guess I will have to work my way around it.

サインインしてコメントする。

その他の回答 (1 件)

madhan ravi
madhan ravi 2018 年 10 月 22 日
編集済み: madhan ravi 2018 年 10 月 22 日

0 投票

function [X y] = M(d) %like this not sure what you want to do but a guess
X = d;
[~,Y] = d;
[A B] = @N
function [A B] = N(a)
A = 2*a;
B = 3*a;
end
end

7 件のコメント

kor vec
kor vec 2018 年 10 月 22 日
Thanks for replying.
I have two functions (f1 and f2)
f1 is working as intended and has two output arguments.
f2 is supposed to have f1 as the first input the argument f2(f1,...)
I need to operate on both outputs of f1 inside f2 but can only access the first.
madhan ravi
madhan ravi 2018 年 10 月 22 日
give a short example with numbers
kor vec
kor vec 2018 年 10 月 22 日
[a b] = f1(1) = [2 3]
f2(f1(1)) = 2 % I want this to produce [2,3]
Walter Roberson
Walter Roberson 2018 年 10 月 22 日
You are not passing in a function: you are passing in a vector.
madhan ravi
madhan ravi 2018 年 10 月 23 日
Thank you sir Walter
Walter Roberson
Walter Roberson 2018 年 10 月 23 日
[A B] = @N
would try to assign a handle to the function N to both A and B, but would fail because the operation of taking a handle to a function does not return multiple outputs.
madhan ravi
madhan ravi 2018 年 10 月 23 日
Oh ok sir thank you for clarifying

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeStartup and Shutdown についてさらに検索

製品

タグ

質問済み:

2018 年 10 月 22 日

コメント済み:

2018 年 10 月 23 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by