0

img 是单色通道的图像。img_temp 定义如下:

img_temp = zeros(size(img,1), size(img,2), N);

其中 N 是一个整数。因此,img_temp 的每个条目都包含 N 个值。

在Matlab中表达以下操作的简洁方式是什么?

for x=1:size(img,1)
    for y=1:size(img,2)
        img(x,y,1) = find(img_temp(x,y,:)==max(img_temp(x,y,:)));
    end
end

我想在数组img_temp(x,y,:)中找到最大值的索引,存放在img对应的位置,即img(x,y,1)

4

1 回答 1

2

max函数可以沿任何维度进行操作,并返回一个索引以及最大值。在您的情况下,您只关心索引并希望将其存储在 中img(:,:,1),所以试试这个:

[~, img(:,:,1)] = max(img_temp, [], 3);
于 2013-05-10T13:07:39.683 回答