Getting first element of a function output

223 次查看(过去 30 天)
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 CenterFile Exchange 中查找有关 Statistics 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