Для вычитания "фона" пришлось сделать следующее: циклом прогнать весь массив с условием, что если данный элемент не больше "фона", то я его обнуляю, а в противном случае вычитаю "фон" из элемента.
Кстати это типичный подход людей, думающих "поэлементно", как на языке С. Не забывайте, слово Matlab образовано от слов Matrix Laboratory, эту систему создавали для удобства работы с матрицами, а не чтобы циклы гонять. Когда программируете на Matlab, стремитесь к избавлению от любых циклов. Например, пользуйтесь функцией
max(A,B), которая действует на матрицы поэлементно. Вот эта строка делает то, что надо:
Код:
A = max(0,A-100)
Выражение
A-100 даст матрицу, где могут быть отрицательные элементы. Обнуляются они с помощью функции максимума. Если надо было, например, единичку вычесть, то можно вот так писать:
Код:
A(A>0) = A(A>0) - 1
Она вычтется только из положительных элементов, так что нигде не будет отрицательных чисел (мне сначала почему-то показалось, что надо было единичку вычесть, поэтому подсказывал путь с
A(A>0); ну, на заметку все равно возьмите).