gpt4 book ai didi

matlab - 在 MATLAB 中避免缓慢的 for 循环

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:31 24 4
gpt4 key购买 nike

我正在努力避免 MATLAB 中的循环变慢。我有 RGB 图像,我正在尝试手动计算马哈拉诺比斯距离。以下是有关与 for 循环一起使用的马哈拉诺比斯距离函数的示例代码:

H = 10;
W = 20;
im = rand(H,W,3);
Mean = rand(1,3);
SigmaInv = rand(3,3);
[size1, size2, size3] = size(im);
imDistance = zeros(size1,size2);
for i = 1:size1
for j = 1:size2
x(:,:) = (im(i,j,:));
x1 = transpose(x);
imDistance(i,j) = sqrt((x1-Mean)*SigmaInv*transpose(x1-Mean));
end
end

im 尺寸为 [HxWx3],平均尺寸为 [1x3],SignaInv [3x3],输出 imDistance 应为 [HxW]。我认为如果我使用 bsxfun 和 permute 函数,代码会更快,但我不知道如何实现它。提前感谢您的帮助。

最佳答案

使用 reshape function 非常简单:

H = 10;
W = 20;
im = rand(H,W,3);
Mean = rand(1,3);
SigmaInv = rand(3,3);
[size1, size2, size3] = size(im);

sm = SigmaInv * transpose(Mean);

im_flat = reshape(im,size1*size2,3);
calc = sqrt((im_flat - Mean) * sm);
imDistance = reshape(calc,size1,size2);

关于matlab - 在 MATLAB 中避免缓慢的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com