0
  • 我正在使用 MATLAB。我有一个关于如何验证矩阵的值是否重复的问题,如下所示:

A=[ 2 3 2 3 2 3 2 3] 答案是 AUX=1

如果矩阵 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 ]。)
4

2 回答 2

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

请注意,这种尾随零的削减,因此如果剩余元素的数量并不总是奇数,那么您可能需要一个额外的步骤,但这应该很容易。

于 2013-09-30T15:22:55.737 回答
0

% A
A = [1 2 3 4 4 5; 1 3 4 5 6 5;6 7 4 1 3 3];
% 使 A 成为列向量
A_col = A(:); % 用 max(A_col) bins n = hist(A_col, max(A_col))
计算 A 的直方图; 辅助 = 总和(n > 1) > 0

于 2013-09-30T16:56:10.203 回答