2013-09-30 40 views
0
  • 我正在使用MATLAB。我有關於如何我可以驗證一個矩陣的值正在被重複,這樣的問題:

A = [2 3 2 3 2 3 2 3] 與答案AUX = 1驗證MATLAB上的矩陣值2

如果矩陣A至少重複之後的所有列的前兩個值,我希望AUX = 1,但是如果不是,則只有AUX = 0.

或 A = [2 3 3 2 2 3 3 2 ] 與答案AUX = 1

如果矩陣A像以前一樣重複,我希望一個AUX = 1。如果不是,則只有AUX = 0。

  • 矩陣A也可以在數字後面有零個數字。 (例如,A = [1 2 1 2 1 0 0 0],A = [2 3 3 2 2 3 3 2 0 0 0]。)
+0

您是否想將零從比較中排除?也就是說,如果'A = [1 2 1 2 1 0 0 0]'給出'aux = 1'? –

+0

我不想要@LuisMendo。 –

+0

是@Dan的第二個問題 –

回答

1

我認爲你正在尋找這個,兩個相同的數字在2個值的各不相重疊的窗口中使用:

% Cutting off the tail 
x = [1 2 2 1 1 2 1 2 0 0]; 
x = x(1:find(x,1,'last')); 
x = x(1:2*fix(numel(x)/2)); 

% Checking for allowed values (the first 2 values, each one once) 
M=sort(reshape(x,2,[])); 
AUX = size(unique(M','rows'),1)==1 

注意尾隨零,所以你可能需要額外的步驟,如果剩餘元素的數量並不總是奇怪,但應該是這樣的削減簡單。

0

%A
A = [1 2 3 4 4 5; 1 3 4 5 6 5; 6 7 4 1 3 3];
%make A a column vector
A_col = A(:); (A_col)bin
n = hist(A_col,max(A_col));
AUX = sum(n> 1)> 0