Filter matrix rows based on value of function in Matlab
Ältere Kommentare anzeigen
This seems like a simple question but I have been unable to find an answer anywhere. If I have a Matlab matrix "A" consisting of an arbitrary number of rows, how would I filter these rows based on the value of some function "f" (the argument of which is a row vector)? In other words, how would I keep only the rows of matrix A for which f is true? I tried
A(f(A(:)), :)
but to no success. Any help would be greatly appreciated.
So for example, if I have the matrix:
A =
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
4 1
4 2
4 3
4 4
And a function f that returns true only for inputs [1 2], [1 3], [2 4] and [3 4], my desired output would be:
ans =
1 2
1 3
2 4
3 4
1 Kommentar
yair suari
am 1 Sep. 2015
seems like ismember will do the work
Akzeptierte Antwort
Weitere Antworten (1)
Azzi Abdelmalek
am 18 Feb. 2013
n=size(A,1);
A(arrayfun(@(x) expression(A(x,:)),(1:n)','un',0))=[]
5 Kommentare
ARS
am 18 Feb. 2013
Azzi Abdelmalek
am 18 Feb. 2013
Bearbeitet: Azzi Abdelmalek
am 18 Feb. 2013
expression(A(x,:))
%or
f(A(x,:))
but you have to specify your logical expression, (it's not a function)
ARS
am 18 Feb. 2013
Azzi Abdelmalek
am 18 Feb. 2013
Bearbeitet: Azzi Abdelmalek
am 18 Feb. 2013
Try
n=size(A,1)
A(cell2mat(arrayfun(@(x) f(A(x,:)),(1:n)','un',0)),:)=[]
Also this is not a general solution, each expression has to be treated individually.
Kategorien
Mehr zu Logical finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!