Azzera filtri
Azzera filtri

Iterate over specified dimensions in a matrix to find minimum value

1 visualizzazione (ultimi 30 giorni)
I have a 180x180 matrix of random integers. What I want is to scan the rows and columns and find the cell with the minimum value. However, I do not want to scan the entire matrix, just rows and columns up to a specified value. I set up the matrix properly and dx and dy are the restraints on where to look in the matrix. However, I am getting multiple minimum values in my for loop. Any ideas how to change this to get the one minimum value?
%This sets up a 180x180 matrix with 16 total zones that each have
%specified range of random integers generated (random numbers represent
%population count in that specified area). Each element represents a
%1km x 1km area of land.
clear all
clc
N1 = randi([1,500],45,45);
N2 = randi([25,1000],45,45);
N3 = randi([100,2200],45,45);
N4 = randi([5,700],45,45);
N5 = randi([100,500],45,45);
N6 = randi([800,3500],45,45);
N7 = randi([1000,10000],45,45);
N8 = randi([15,1000],45,45);
N9 = randi([250,900],45,45);
N10 = randi([5000,11000],45,45);
N11 = randi([1750,9000],45,45);
N12 = randi([25,890],45,45);
N13 = randi([2000,7500],45,45);
N14 = randi([200,2300],45,45);
N15 = randi([25,750],45,45);
N16 = randi([50,1323],45,45);
N = [N1 N2 N3 N4;
N5 N6 N7 N8;
N9 N10 N11 N12;
N13 N14 N15 N16];
[rows, columns] = size(N); % [x,y]
dx = 3;
dy = 10;
for i = 1:rows
for j = 1:columns
if i <= dx
if j <= dy
M = min(N(i,j))
end
end
end
end

Risposta accettata

Guillaume
Guillaume il 28 Mar 2017
Modificato: Guillaume il 28 Mar 2017
There's absolutely no reason to use a loop. Use basic indexing to get the portion of matrix that interest you:
N(1:dx, 1:dy)
You can then apply whatever function you want on this. If you want to find the value of the minimum of that submatrix:
M = min(min(N(1:dx, 1:dy)));
If you want the location of that minimum:
[row, column] = find(M == N(1:dx, 1:dy));
Note that your dx, dy names are misleading. x is usually understood as the horizontal coordinate, that is the columns and y is usually understood as rows. You'd be better off naming your variables dr, dc.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices 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!

Translated by