Access a single element of an anonymous function that returns an array
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Leo Simon
am 27 Apr. 2014
Kommentiert: Stephen23
am 20 Apr. 2020
I have an anonymous function that returns an array. I'd like to be able to create a new anonymous function that consists of a single element of this array WITHOUT using matlabfunction (which is infuriatingly restrictive in several respects).
For example, consider the following code (it's a ridiculously simple example, for expository purposes, obviously there are easy ways of dealing with this example, but my real problem is more complex)
y = sym('y',[1,4])
f = @(y)[y(1);y(2);y(3);y(4)]
f(y)
which returns
ans =
y1
y2
y3
y4
I'd now like to define a new anonymous function which extracts, say, the third element of this array. Obviously,
g = @(y) f(y)(3)
won't work. Is there some way to accomplish this? Again, solns involving matlabfunction are not satisfactory.
Any suggestions would be most appreciated!
Leo
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 27 Apr. 2014
indexat = @(expr, index) expr(index);
g = @(y) indexat(f(y), 3);
2 Kommentare
Stephen23
am 7 Apr. 2020
"could you please explain what you mean by "expr" and "index"? "
They are the input arguments of an anonymous function:
Weitere Antworten (1)
Lauren Barr
am 20 Apr. 2020
This is really helpful, thank you! I was wondering if there is a way to extend it, so that I can index one particular value in a 2D matrix, instead of indexing into a vector?
For example, this doesn't seem to work:
indexat = @(expr, index) expr(index);
g = @(y) indexat(f(y), (1,3));
But maybe I am missing something obvious.
Thank you!
Lauren
2 Kommentare
Lauren Barr
am 20 Apr. 2020
I think I found the answer here!
Stephen23
am 20 Apr. 2020
You can create a general solution for any number of dimensions:
indexat = @(expr, varargin) expr(varargin{:});
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!