【问题标题】:matlab for loop vectorizationmatlab循环向量化
【发布时间】:2023-03-22 19:20:01
【问题描述】:

我想知道是否有人可以帮助我将这些 for 循环矢量化,我尝试了几次但未能提前感谢。

pixel_depth = 16; 
pixel_range = 2^pixel_depth -1;

for i=1:height

    for j=1:width

        for k=1:gaussianComponents

           mean(i,j,k) = rand*pixel_range; 

           weights(i,j,k) = 1/gaussianComponents; 

           pixelDeviation(i,j,k) = diviationNew; 

       end

    end

 end

感谢您的帮助....

【问题讨论】:

    标签: matlab vectorization


    【解决方案1】:
    mean = rand(height, width, gaussianComponents) * pixel_range;
    
    weights = 1/gaussianComponents * ones(height, width, gaussianComponents);
    
    pixelDeviation = diviationNew * ones(height, width, gaussianComponents);
    

    请注意,mean 是变量的错误名称,因为它会隐藏 mean 函数。

    【讨论】:

    • 我对 matlab 很陌生,所以这可能是一个简单的错误,谢谢你的回答我将它添加到 matlab 但它给了我一个错误,说 repmat 可能有很多参数,你能帮忙吗错误?
    • 您似乎想为每个权重条目分配相同的值,weight=ones(height,width,gaussianComponents)*value 会这样做(例如pixelDeviation)。另请注意,上述答案中的mean 尚未按pixelRange 缩放。
    • @arne:你完全正确。谢谢你。我现在已经确定了我的答案(希望如此)。
    • 谢谢你解决了这个问题,我仍然有一个小问题我认为它来自这行代码 mean = rand(height, width, gaussianComponents);这似乎不起作用我不确定为什么我发现与原始行相比很难调试,因为它是如此不同。我只是想检查它是否在做同样的想法?再次感谢您。
    • 谢谢 arne.b 我认为缩放问题是我当前的问题,您知道如何在没有四个循环的情况下按像素范围缩放平均值吗?谢谢。
    猜你喜欢
    • 2015-07-06
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2016-03-11
    相关资源
    最近更新 更多