How to index function-matrices?

6 views (last 30 days)
Take for example: f =@(x) [x,1;1,x]
If you evaluate the function f, you get a matrix in return. Is there any way, to index this matrix before evaluating it?
Like f(1,1) and so forth.
Indexing the matrix while evaluating doesn't work either: f(1)(1,1)
You still need to refer to the result: f1 = f(1); f1(1,1)
=1

Accepted Answer

Walter Roberson
Walter Roberson on 23 Nov 2017
No, there is no way to index the matrix before evaluating it.
To index after evaluating it, define
INDEX2 = @(Matrix, R, C) Matrix(R,C);
Then
INDEX2(f(1), 1, 1)
  6 Comments
Walter Roberson
Walter Roberson on 23 Nov 2017
As I said,
MINDEX = @(x, R, C) INDEX2(M(x), R, C)
TheOpenfield
TheOpenfield on 23 Nov 2017
Ahhh, I see! That's it!

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 23 Nov 2017
function out = f(x,ii,jj)
a = [x,1;1,x];
out = a(ii,jj);
end
use
>> f(1,1,1)
ans =
1
>>
  1 Comment
TheOpenfield
TheOpenfield on 23 Nov 2017
Edited: TheOpenfield on 23 Nov 2017
This might be it!
Now i can do further calulations, without loosing the function characteristics, like:
g = @(x) x*f(x,1,1)
There might be still another problem:
In my case, my function is set up as a multiplication of matrices containing functions as entries. Like:
M = @(x) f(x)*f2(x)...
The multiplication of the matrices f, f2 is done while evaluating M at any point.
Is there any easy way to index this function too even though M doesn't know about its matrix properties before evaluation?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!