Ответ 1
>> a = log10([30 40 0 60])
a =
1.477 1.602 -Inf 1.778
>> a(~isfinite(a))=0
a =
1.477 1.602 0 1.778
делает трюк, он использует логическую индексацию
~
- это оператор NOT для логических/логических значений, а isfinite(a)
генерирует логический вектор, такой же размер, как:
>> ~isfinite(a)
ans =
0 0 1 0
Как вы можете видеть, это используется для логической индексации.