Passing Function results to another function

I recently ran into some behavior I though was unintuitive - given the code below, nargin prints out 1. Why isn't the second argument being passed to test2? Is there a standard way to get around this issue?
test2(test())
1
function [a,b] = test( )
a=5;
b=6;
end
function test2( a,b)
nargin
end

 採用された回答

Matt J
Matt J 2013 年 1 月 23 日
編集済み: Matt J 2013 年 1 月 23 日

0 投票

Multiple output arguments must be explicitly requested and assigned:
[A,B]=test;
test2(A,B)
or
[AB{1:2}]=test;
test2(AB{:}),

2 件のコメント

Matt J
Matt J 2013 年 1 月 23 日
or you could return your arguments in a vector
function ab = test( )
ab=[5,6]
end
function test2( ab)
numel(ab)
end
Walter Roberson
Walter Roberson 2013 年 1 月 23 日
Right. This is a design feature of MATLAB, that when it sees that the result of a function is being passed to another function, all but the first output is discarded. This is fairly tricky to get around (I did see someone find a way once using deal() but I'm not convinced it would work.)

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

製品

タグ

質問済み:

2013 年 1 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by