# create a function handle extracting pieces from a matrix function handle

11 Ansichten (letzte 30 Tage)
Sergio Codeluppi am 4 Jun. 2013
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])
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Kye Taylor am 4 Jun. 2013
Bearbeitet: Kye Taylor am 4 Jun. 2013
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]]
##### 1 Kommentar-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
Sergio Codeluppi am 4 Jun. 2013
ty for your help, i actually didn't think of this :)

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

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-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
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.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Time Series 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!

Translated by