フィルターのクリア

how can I cancel repeated results?

2 ビュー (過去 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 ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by