- Is the moving window not sliding as expected?
- Are the outputs not stored in the expected indices?
- Do you have doubts about the output values?
I have to select mode from matrix with sliding window of 3X3. How to do that?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have to create a new matrix with mode of 3x3 sliding window, I have written code, but it's not working.
[m, n] = size(LULC_01km);
rows = ceil(m/3);
coln = ceil(n/3);
LULC_3_km = NaN(rows,coln);
for i = 2:rows-1
for j = 2:coln-1
LULC_3_km(i,j) = mode(LULC_01km((i-1:i+1), (j-1:1+j)), 'all');
end
end
1 Commento
Adam Danz
il 15 Nov 2021
"It's not working" doesn't give us much info. What part isn't working?
Risposta accettata
Adam Danz
il 15 Nov 2021
Modificato: Adam Danz
il 15 Nov 2021
n*m sliding mode; slides by intervals of 1
This computes the sliding mode within a 2D window that slides by 1 unit horizontally then vertically.
- LULC_01km - your n*m matrix
- winSz - define window size
- LULC_3_km - output containing modes
LULC_01km = randi(5,9,12) % n*m matrix
winSz = [3,3]; % window size [width (x), height (y)]
% Compute starting coordinate of sliding windows
[m, n] = size(LULC_01km);
winX0 = 1:n-winSz(1)+1; % starting index of x-values for each window
winY0 = 1:m-winSz(2)+1; % starting index of y-values for each window
% Loop through windows to compute mode
LULC_3_km = NaN(numel(winY0),numel(winX0));
xWin = 0:winSz(1)-1;
yWin = 0:winSz(2)-1;
for i = 1:size(LULC_3_km,1)
for j = 1:size(LULC_3_km,2)
LULC_3_km(i,j) = mode(LULC_01km(winY0(i)+yWin, winX0(j)+xWin),'all');
end
end
% Show results
LULC_3_km
LULC_3_km(i,j) is the mode of values within the 3x3 window with the upper left corner at LULC_01km(i,j).
n*m sliding mode; slides by intervals of m (horizontally) and n (vertically)
To use a boxcar moving mode, simply redefine the winX0 and winY0 variables as
winX0 = 1:winSz(1):n-winSz(1)+1; % starting index of x-values for each window
winY0 = 1:winSz(2):m-winSz(2)+1; % starting index of y-values for each window
For a 9x12 input matrix, this will create a 3x4 ouput matrix. To see an animation of a 3x3 boxcar filter, see this answer.
4 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Data Type Identification in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!