Getting first element of a function output

231 ビュー (過去 30 日間)
Yue
Yue 2012 年 5 月 18 日
回答済み: Ramuel Safarkoolan 2021 年 11 月 17 日
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 日
no easier way
result = subsref(test(input),struct('type','()','subs',{{1}}))

Daniel Shub
Daniel Shub 2012 年 5 月 18 日
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 日
[a,~,~]=test(input);
will do the trick

カテゴリ

Help Center および File ExchangeStatistics and Machine Learning Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by