Getting first element of a function output

Hi everyone,
I am trying to get the value of the first element of an output of a function. For example, The output of my function test is [a1, a2, a3] and I want to get the value of a1 only.
The way I do it is
a = test(input);
result = a(1);
I wonder if there is an easier way to do it. Is there something similar to
result = (test(input))(1);
in matlab?

1 件のコメント

Fabien Fellay
Fabien Fellay 2020 年 7 月 16 日
Now, you can do (the less painful solution so far):
result = table(test(input)).Var1(1);
For example, if you want to do:
A = magic(3);
result = A(2,2);
You can do:
result = table(magic(3)).Var1(2,2);
The following is also possible (but longer and ugly):
result = subsref(magic(3),struct('type','()','subs',{{2,2}}));

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

回答 (3 件)

Andrei Bobrov
Andrei Bobrov 2012 年 5 月 18 日

6 投票

no easier way
result = subsref(test(input),struct('type','()','subs',{{1}}))
Daniel Shub
Daniel Shub 2012 年 5 月 18 日

4 投票

See this answer about what is missing from MATLAB.
If test is a function you wrote, you could change what it returns. You could also write a wrapper around test:
function a1 = test1(input)
a = test(input);
result = a(1);
end

1 件のコメント

Jan
Jan 2012 年 5 月 18 日
In my opinion this method is easy, clear and efficient.
A modification of the Matlab syntax would be worse due to breaking the backward compatibility. +1

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

Ramuel Safarkoolan
Ramuel Safarkoolan 2021 年 11 月 17 日

0 投票

[a,~,~]=test(input);
will do the trick

カテゴリ

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

質問済み:

Yue
2012 年 5 月 18 日

回答済み:

2021 年 11 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by