Я хочу сделать некоторые вычисления на своих изображениях. Я использую Matlab, но он возвращает неверный ответ. Я не знаю почему.Почему matlab возвращает неверный ответ
Вот мой файл:
function [ newImage ] = Run(file)
info = geotiffinfo(file);
[bands,R1]=geotiffread(file);
imageSize=size(bands);
result=nan(imageSize(1),imageSize(2),7);
for i=100:105
for j=100:105
disp(strcat('Pixel ',sprintf('[%d,%d] of [%d,%d]',imageSize(1),imageSize(2), i,j)));
b7=bands(i,i,5);
b6=bands(i,i,4);
b5=bands(i,i,3);
b4=bands(i,i,2);
b3=bands(i,i,1);
%ndvi 7-4/7+4
result(i,j,1)= (b7-b4)/(b7+b4);
%NDI45 5-4/5+4
result(i,j,2)= (b5-b4)/(b5+b4);
%MTCI 6-5/5-4
result(i,j,3)= (b6-b5)/(b5-b4);
%MCARI [(B5 - B4) - 0.2(B5- B3)] * (B5 - B4)
result(i,j,4)= ((b5-b4)-(0.2*(b5-b3)))*(b5-b4);
%GNDVI 7-3/7+3
result(i,j,4)= (b7-b3)/(b7+b3);
%PSSR 7/4
result(i,j,5)= (b7)/(b4);
%S2REP 705 + 35 *((((B7 + B4)/2) - B5)/(B6 - B5))
result(i,j,6)= 705 + 35 *((((b7 + b4)/2) - b5)/(b6 - b5));
%IRECI 7-4/(5/6)
result(i,j,7)=(b7-b4)/(b5/b6);
end
end
geotiffwrite('D:\SazmanJangalha\ref\result.tif', result, R1, ...
'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
end
Я просто запустить эти команды и возвращает неправильные ответы:
result(i,j,7)
ans =
0
K>> b7-b4
ans =
0
K>> b7
b7 =
679
K>> b4
b4 =
1149
K>> b7-b4
ans =
0
Похоже, результаты округлены. Зачем?
Какой тип 'band'? – beaker
@beaker is unit16 –
Как вы думаете, что вы думаете, когда вычитаете большее, * unsigned * целое число из меньшего, * неподписанного * целого числа? – excaza