您可以根据您的定义使用有效行的逻辑索引all(~diff(D(:,1:2)), 2)
,即第一列和第二列的元素,逐行差异为零。
然后,您可以使用此索引返回整数行索引或全局行均值矩阵中的索引。
index_row = 1:1:size(D, 1); % linear row index
index_valid = all(~diff(D(:,1:2)), 2); % valid rows (logical)
mean_matrix = (D(1:end-1,:) + D(2:end,:))/2; % matrix of all means
% matrix of valid mean rows only
mean_matrix_valid = mean_matrix(index_valid,:); % logical index
% linear index of valid rows, i.e. the pairs indexed (i, i+1)
index_row_valid = index_row(index_valid); % valid rows (int)
例如与
D = [1 2 3 4 5; 1 1 1 1 1; 1 2 4 4 4; 1 2 3 3 3; 2 2 2 2 2; 2 2 3 3 3];
>> D =
1 2 3 4 5
1 1 1 1 1
1 2 4 4 4
1 2 3 3 3
2 2 2 2 2
2 2 3 3 3
你会得到,使用上面
>> index_valid =
0
0
1
0
1
>> index_row_valid =
3 5
>> mean_matrix_valid =
1.0000 2.0000 3.5000 3.5000 3.5000
2.0000 2.0000 2.5000 2.5000 2.5000
分别是行 (3,4) 和 (5,6) 的均值。