How to eliminate array which contain zero, negative values, repeated values, etc constraint?

Hi, I have n=6 and for example I have several set of points ( with 6 elements),
a=[1 5 1 6 2 6];
b=[2 5 1 6 2 5];
c=[3 5 1 6 2 4];
d=[0 4 1 6 3 7];
e=[1 4 1 6 3 6];
f=[-1 3 1 6 4 8];
I wish to eliminate the set which contain zero, negative values,elements greater than n=6 and repeated values. At the end, left set c. The others are eliminated due to:
a-repeated value 1 and 6
b-repeated value 2 and 5
d-contain zero, and 7 (which is greater than 6)
e-repeated value 1 and 6
f-contain negative value and 8 (greater than 6).
Thanks in advance.

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 11 Nov. 2014
Bearbeitet: Andrei Bobrov am 11 Nov. 2014
a=[1 5 1 6 2 6];
b=[2 5 1 6 2 5];
c=[3 5 1 6 2 4];
d=[0 4 1 6 3 7];
e=[1 4 1 6 3 6];
f=[-1 3 1 6 4 8];
M = [a;b;c;d;e;f];
out = M(all(M > 0,2) & cellfun(@(x)numel(unique(x)) == numel(x),num2cell(M,2)),:);

4 Kommentare

Grace
Grace am 11 Nov. 2014
Bearbeitet: Grace am 11 Nov. 2014
Hi Andrei,
What about the constraint of eliminate the set which contain at least one element that is greater than n=6?
Thank you.
I guess that's left for you as exercise ;-) Hint: It's similar to the condition of all positive values.
Yup, get it. add in
all(M<=6,2)
Thanks :)
in your case
out = M(all(diff(sort(M,2),1,2) == 1,2) & all(M <= 6,2),:);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by