calling a function for a number of indexes in a matrix

6 vues (au cours des 30 derniers jours)
Greg
Greg le 3 Nov 2012
Hi,
I have an image [N M], and a matrix of [N-r M-c]. I want to call a certain function on the indexes where image(i,j) < threshold
I'm new to MATLAB so my initial approach was
for i = 1 : height
for j = 1 : width
if (image(i, j) < thresh)
f([i j height width], c);
c = mod(c, 8) + 1;
end
end
end
is there an easier way to do it automatically without looping over the matrix? (having 'c' loop on values 1 to 8 for each call to the function?)
  2 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 3 Nov 2012
what is
f([i, j, height, width], c);
Greg
Greg le 3 Nov 2012
Modifié(e) : Greg le 3 Nov 2012
my bad that was supposed to be
f([i j height width], c)
f is the function i need to call, it takes two parameters, the first is a vector of the coords from the image (x,y) and the height and width of a specific pattern which don't not change in this loop.
c is the second parameter i send to the function, it is a natural number in the range [1,8] should increment by 1 upon every call to the function and reset to 1 after reaching 8

Connectez-vous pour commenter.

Réponses (1)

Jakob Sørensen
Jakob Sørensen le 3 Nov 2012
Can't you just get a logical of where the matrix is above/below the thresh? And then multiply it with your matrix. And then do the function on that matrix. Like this:
logicals = image < thresh;
image_new = image.*logcals;
f(image, c);
This might need some adjustment, depending on you function. If it contains plus/minus, this probably won't work.
  1 commentaire
Greg
Greg le 3 Nov 2012
Modifié(e) : Greg le 3 Nov 2012
the function f doesn't care about the value within the image_new, it only needs the x,y of the indexes so i can simply apply
logicals = image < thresh;
however 'f' is supposed to take the following parameters
[image_new_x image_new_y height width], c
where height and width are constants and c alters between 1 and 8, how can i do that?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by