0

我有以下功能,只要代码pdist2这里

function m = pixel_minimize_distance(x,y)

maximum = (sum(sum(pdist2(x,y))));
[r c] = size(y);
initialValue = y(1,1);
for i=1:r
    for j=1:c
        o = y(i,j);
        y(i,j) = 0;
        sum2 = (sum(sum(pdist2(x,y))));


        if sum2 >= maximum
            if o ~= 0
                maximum = sum2;
                m = o;
            end
        maximum = maximum;
        m = initialValue;
        end
        y(i,j)=o;
    end
    end
end

现在,当我尝试运行该函数时,我没有得到如下所示的输出:

>> A=[0 0 0; 0 0 0];
>> B=[1 1 1; 1 1 1];
>> pixel_minimize_distance(A,B)

我该如何解决这个问题?

谢谢。

4

2 回答 2

2

不要调用该变量maximum,因为它是一个 Matlab 函数(实际上是 Simulink 的)。

不过,你知道吗

maximum=maximum

是不是什么都不做?

你也知道这条线

if sum2 >= maximum

不是什么都不做吗?sum2永远不会被更新,更好的说法是,它被多次更新为相同的值。检查您的代码,现在它几乎没有意义。

编辑:也许使用一些不同的矩阵会做一些事情......但你提供的矩阵不会。

于 2013-02-11T14:01:05.290 回答
1

由于您在阅读此处后将y的 (i,j) 元素替换为 0:

o = y(i,j); y(i,j) = 0;

并且由于y的所有条目在您的测试用例中都是正数,因此条件:

if sum2 >= maximum

永远不会评估为true。连续地,输出变量m从未被初始化,因此该函数不返回任何内容。

尝试在函数开始时将m初始化为空或其他一些有意义的默认值。

于 2013-02-11T22:16:03.153 回答