2013-09-30 2 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. b ut, если нет, только AUX = 0.

  • Матрица А также может иметь номера нулей после чисел. (например, 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];
% a A a column vector
A_col = A (:);
% вычислить гистограмму A с макс (A_col) бункеров
n = hist (A_col, max (A_col));
AUX = сумма (n> 1)> 0

Смежные вопросы