create a function handle extracting pieces from a matrix function handle

6 Ansichten (letzte 30 Tage)
I created a Matrix function using function handle @ like
A=@(x) [1 2 x; 2*x x.^2 3]; %it's an example
i need to create another function extracted from the previous one
B=@(x) A(x) without the second column
therefore size(A)=2x3 and size(B)= 2x2;
if it wasn't for the handle: B=A(:,[1 3])
ty for your help

Akzeptierte Antwort

Kye Taylor
Kye Taylor am 4 Jun. 2013
Bearbeitet: Kye Taylor am 4 Jun. 2013
Starting from your example
A = @(x) [1 2 x; 2*x x.^2 3];
you probably realized that this command is not allowed
B = @(x)[A(x)(:,1),A(x)(:,3)]
However, you can use this command:
B = @(x)[A(x)*[1;0;0],A(x)*[0;0;1]]

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 4 Jun. 2013
B=@(x) subsref(A(x), struct('type', '()', 'subs', {':', [1 3]}));
Note: if the requirement is "all of whatever is there, except column 2", rather than "select only column 1 and column 3", then in order to avoid evaluating A(x) twice, one would have to add a helper anonymous function (because a subscript of 'end' is not allowed at the subsref level and must be converted to numeric form.)
  1 Kommentar
Sergio Codeluppi
Sergio Codeluppi am 4 Jun. 2013
i actually don't know command subsref, but tried your way and i get this
Error using subsref The "subs" field for the subscript argument to SUBSREF and SUBSASGN must be a cell or character array.
ty anyway for your help!

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by