[Matlab]我有兩個矩陣,A2和B2。我想通過兩個數組的每個元素,並使用每個數組中的值進行計算,將它們輸出到一個新數組中,然後顯示結果。如何迭代2個矩陣並對特定元素進行計算? [Matlab]
這些數組的值目前是int格式。我也必須將輸出數組更改爲浮點數據類型。我想獲得元素B2(50,101),然後我想使用該單元格中的值來做這個計算:(B2-A2)/(())/( B2 + A2)。然後將這些結果輸出到單元格C2(50,101)。
% Clear Memory
clear;
% Load Landsat Bands
A1 = imread('p074r073_7t20010204_z60_nn30.tif'); % Red - Band 3
B1 = imread('p074r073_7t20010204_z60_nn40.tif'); % IR - Band 4
C1 = imread('p074r073_7t20010204_z60_nn20.tif'); % Green - Band 2
% Subset Fragment
xsize = 600; % Length in x
ysize = 600; % Length in y
A2 = imcrop(A1, [1800 1300 600 600]);
B2 = imcrop(B1, [1800 1300 600 600]);
C2 = imcrop(C1, [1800 1300 600 600]);
% False Color Image
RGBimage = cat(3, B2, A2, C2);
figure(1); imshow(RGBimage,[]); title('False Color Composite Image') % Shows Images
% NDVI Calculations
for a = 1:xsize
RED = A2(a+1,:);
for b = 1:xsize
NIR = B2(b+1,:);
NDVI = (NIR-RED)./(NIR + RED);
end
end
figure(2);imshow(NDVI);
這目前給我此圖像在那裏,因爲它被認爲是一個完整的圖像:
例Calcs(計算)
A2:
B2:
A2(2,3)& B2(2,3)
C2(2,3)=(6-7)/(6 + 7)
目前還不清楚你在代碼中究竟做了什麼。請注意,在內循環的每次迭代中,「NDVI」將成爲一維矢量,這就是爲什麼當您顯示圖像時會看到一條拉長的黑線。你想要做一個像素明智的計算?在這種情況下,你可以避免使用任何循環。我的觀點是,你提供的解釋和你的代碼做的不匹配。具體來說,你在你的問題中引用'A1',但是你的代碼中沒有定義這樣的變量。你能用一個小尺寸的輸入來顯示一些例子計算嗎? – rayryeng
@rayryeng我加了我的代碼的其餘部分。對於那個很抱歉。我所做的就是將3個圖像帶讀入我的程序(我只使用其中的2個進行計算)。對於那些像素值(0-255),我想要進行NDVI計算。這會給我一個我需要的float數據類型。 – Tristan