calling a function for a number of indexes in a matrix

4 Ansichten (letzte 30 Tage)
Greg
Greg am 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 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 3 Nov. 2012
what is
f([i, j, height, width], c);
Greg
Greg am 3 Nov. 2012
Bearbeitet: Greg am 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

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Jakob Sørensen
Jakob Sørensen am 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 Kommentar
Greg
Greg am 3 Nov. 2012
Bearbeitet: Greg am 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by