Matlab - 不返回任何输出

时间:2013-02-11 13:41:05

标签: matlab output

我有以下功能,前提是pdist2的代码是here

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)

我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:2)

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

仍然,你知道吗

maximum=maximum

什么都不做?

alsodo你知道那条线

if sum2 >= maximum

什么都不做? sum2永远不会被更新,更好的是,它有几次更新具有相同的价值。检查你的代码,它现在没什么意义。

编辑:也许有一些不同的矩阵会做某事......但是你提供的不是。

答案 1 :(得分:1)

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

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

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

if sum2 >= maximum

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

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