Решение, использующее ACCUMARRAY , достигнет вашей цели:
values = accumarray(mat(:,1),mat(:,2),[],@min);
mat(:,2) = values(mat(:,1));
Для удобства я использую здесь функцию MIN , поскольку она будет возвращать не-NaN
значение, если оно есть, или NaN
, если это все, что есть. Это проще, чем логика, используемая при проверке любых не-1010 * значений с использованием, скажем, функции ISNAN . Вы также можете использовать функцию MAX , поскольку в этом случае она ведет себя так же.