calling a function for a number of indexes in a matrix

1 回表示 (過去 30 日間)
Greg
Greg 2012 年 11 月 3 日
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 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 11 月 3 日
what is
f([i, j, height, width], c);
Greg
Greg 2012 年 11 月 3 日
編集済み: Greg 2012 年 11 月 3 日
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

サインインしてコメントする。

回答 (1 件)

Jakob Sørensen
Jakob Sørensen 2012 年 11 月 3 日
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 件のコメント
Greg
Greg 2012 年 11 月 3 日
編集済み: Greg 2012 年 11 月 3 日
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?

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by