2013-07-16 22 views
1

我有像X的數組,我想要做的新的排列Y一些關於它的作品,並把結果。那麼我應該比較這兩個。如果它們是相同的由thershold(即他們可能會略有不同),這是確定和算法結束,否則我應該繼續迭代 問題比較這兩個。 他們是一個具有未知元素的兩個二維數組。 我已經做了兩種不同的方式,但沒有人在那裏確定: 第一種方式:如何比較matlab中的兩個數組?

d = x - y 
if d < 5 
    disp('end') 
end 


但它不能很好地工作,但說實話,並沒有在所有
其他工作這樣,我使用的是:

isequal(x,y) 

,而他們同樣也將返回0,但如果他們不和,甚至有一點點差別,結果將是1,正如我所說的算法應該考慮它是不是變好了一個litlle區別並停止iterat離子 我該怎麼辦?

+1

難道不應該是'如果d <在你的第一次嘗試5'? – am304

+0

謝謝,如此有幫助 – deansam

回答

2

如果5是一個確定的閾值,那麼這應該工作:

d=abs(x-y); 
if all(d<5) 
    disp('end') 
end 

如果你不知道的門檻是什麼,那麼這是一個非常不同的問題。確定一個合理的閾值取決於你的應用程序,通常是一種折衷 - 如果你的數據是可變的,可能沒有「正確的」答案。看看一些基本的統計數據 - zscore命令可能是一個有用的開始。

+0

它沒有工作答案數組有數字30 40 22等,但它接受d <5 – deansam

+0

你可以顯示數組的細節?代碼爲'x'和'y'?沒有更多的細節,我無法幫助你! –

+0

我的代碼太長,如此複雜,我dono如果我把它的一部分在這裏是可以理解的,無論如何代碼是:k = 44;%k組 n = 556;%所有元素 r = 12;一組 b = 1中的元素;%的列數爲1 %第一在k- gouping數據group.each組擁有一排。 a是單元陣列a = grouhbandi(n,k); e1 = Ks(a,k); %的每一行其是k表示在所述第一元件,E1是陣列 I = 0; had = 1000;%停止迭代的極限 ,同時具有> 5 a = Ekmeans(a,k,r); a = newks(a,k);%這兩個代碼計算新的k組 e2 = Ks(a,k);%這是新的Ks,它將在e2中分配 had = e2-e1; had = abs(had); end – deansam

0

檢查差異向量的另一種方法是在MATLAB中使用「find()」函數。作爲Nolan,我認爲你最好使用差異的絕對值。 idx = find(abs(a-b)>threshold)會給你超過閾值的指數。如果爲null,則終止迭代。