以下Matlab代码的简洁表达是什么?

时间:2013-05-10 13:00:36

标签: matlab

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)

1 个答案:

答案 0 :(得分:2)

max函数可以沿任何维度运行,并返回索引和最大值。在您的情况下,您只关心索引并希望它存储在img(:,:,1)中,所以请尝试:

[~, img(:,:,1)] = max(img_temp, [], 3);