В следующем примере показано, как проверить индекс максимального значения и выбрать следующее, если они равны:
rx = [9, 8, 7, 6, 5];
ry = [4, 9, 3, 2, 1];
rz = [4, 3, 2, 1, 0];
[~, idx] = max(rx);
[~, idy] = max(ry);
[~, idz] = max(rz);
equal = 1; % flag
while equal
if idx==idy
disp(['Max index for ry is the same: ' num2str(idy)]);
disp ('Changing ry...');
% Remove the max value
ry(idy) = 0;
[~, idy] = max(ry);
disp (['Recalculating idy for new max: ' num2str(idy)])
end
if idx==idz || idy==idz
disp(['Max index for rz is the same: ' num2str(idz)]);
% Remove the max value
rz(idz) = 0;
[~, idz] = max(rz);
disp (['Recalculating idz for new max: ' num2str(idz)])
end
% Check the changes made
if idx==idy || idx==idz || idy==idz
equal = 1;
else
equal = 0;
end
end
Во время первой итерации цикла while вы получите
Максимальный индекс для rz одинаков: 1
Пересчет idz для нового максимума: 2
, так как и idy (4), и idx (9) (максимумы) имеютиндекс 1. Во время второй итерации:
Максимальный индекс для rz такой же: 2
Пересчет idz для нового максимума: 3
Значения idy и idz равны, поэтому снова idz пересчитывается.После этого 3 индекса отличаются:
idx = 1 idy = 2 idz = 3