Effacer les filtres
Effacer les filtres

how can I cancel repeated results?

2 vues (au cours des 30 derniers jours)
frwmetric
frwmetric le 19 Mai 2013
Hi
how can I cancel repeated results??? here a function result st
s =
-2 2 -1
s =
-2 -2 1
s =
-2 2 -1
s =
0 0 3
s =
0 0 -3
s =
0 0 3
s =
0 0 -3
here s in the for loop
and unique(s,'rows') doesn't work
I know, because of the 'rows', not change anything here but I want to save same variables in the row...
  4 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 19 Mai 2013
What do you mean by cancel repeated result. s is a 1x3 array, each step the old s is erased by the new s. post your for loop and explain what is the expected result
frwmetric
frwmetric le 19 Mai 2013
for example here as you see, 0 0 3 is written two times... in my expectation just one time... here is a a part of my function...
M = [1 1 1; 1 1 -1; 1 -1 1; 1 -1 -1; -1 1 1; -1 1 -1; -1 -1 1; -1 -1 -1];
rowM=zeros(1,3);
for p=1:numel(M)/3
rowM(:)=M(p,:);
s=(rowM.*vector)

Connectez-vous pour commenter.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 19 Mai 2013
s = bsxfun(@times,M,vector);
sout = unique(s,'rows','stable');

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 19 Mai 2013
Modifié(e) : Azzi Abdelmalek le 19 Mai 2013
If
s ={{-2 2 -1},{-2 -2 1},{-2 2 -1},{0 0 3},{0 0 -3},{0 0 3},{0 0 -3}}
Then
out=unique(cell2mat(cellfun(@cell2mat,s','un',0)),'rows')
Or if
s ={-2 2 -1;-2 -2 1,;-2 2 -1;0 0 3;0 0 -3;0 0 3;0 0 -3}
Then
out=unique(cell2mat(s),'rows')

Azzi Abdelmalek
Azzi Abdelmalek le 19 Mai 2013
M = [1 1 1; 1 1 -1; 1 -1 1; 1 -1 -1; -1 1 1; -1 1 -1; -1 -1 1; -1 -1 -1];
rowM=zeros(1,3);
vector=[1 0 1]
for p=1:size(M,1)
rowM(:)=M(p,:);
s{p,1}=(rowM.*vector)
end
out=unique(cell2mat(s),'rows')

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by