how can I cancel repeated results?

1 回表示 (過去 30 日間)
frwmetric
frwmetric 2013 年 5 月 19 日
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 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 5 月 19 日
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 2013 年 5 月 19 日
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)

サインインしてコメントする。

採用された回答

Andrei Bobrov
Andrei Bobrov 2013 年 5 月 19 日
s = bsxfun(@times,M,vector);
sout = unique(s,'rows','stable');

その他の回答 (2 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 5 月 19 日
編集済み: Azzi Abdelmalek 2013 年 5 月 19 日
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 2013 年 5 月 19 日
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')

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by