Filter matrix rows based on value of function in Matlab
Mostra commenti meno recenti
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 Commento
yair suari
il 1 Set 2015
seems like ismember will do the work
Risposta accettata
Più risposte (1)
Azzi Abdelmalek
il 18 Feb 2013
n=size(A,1);
A(arrayfun(@(x) expression(A(x,:)),(1:n)','un',0))=[]
5 Commenti
ARS
il 18 Feb 2013
Azzi Abdelmalek
il 18 Feb 2013
Modificato: Azzi Abdelmalek
il 18 Feb 2013
expression(A(x,:))
%or
f(A(x,:))
but you have to specify your logical expression, (it's not a function)
ARS
il 18 Feb 2013
Azzi Abdelmalek
il 18 Feb 2013
Modificato: Azzi Abdelmalek
il 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.
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!