Вы можете просто добавить предложение else, например, так:
if (i ne 1051) or (i ne 1552) then begin
m[i,0]=mean(a[i,*])
endif else m[i,0] = 0.0
Но я рекомендую немного изменить код, чтобы удалить цикл for
.IDL может быть очень эффективным в векторизованных операциях, которые работают с массивами в одном выражении, но медленнее при циклическом перемещении по элементам массива.Здесь вы перебираете столбцы, что не так уж и плохо, но можно сделать более похожим на IDL.
Попробуйте этот код:
function mg_column_mean_exclude, a, exclude_columns
compile_opt strictarr
m = mean(a, dimension=2)
m[exclude_columns] = 0.0
return, m
end
Затем вы можете вызвать его аналогичноВаша предыдущая подпрограмма, за исключением того, что вы также передали бы исключенные столбцы:
m = mg_column_mean(a, [1051, 1552])