2013-02-11 122 views
0

我有以下功能,前提条件是pdist2的代码是hereMatlab - 没有输出返回

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) 

我怎样才能解决这个问题呢?

谢谢。

+0

这不是一个好的做法[在''中使用'i'和'j'作为变量](http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in -matlab) – Shai 2013-02-14 14:17:08

回答

2

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

不过,你知道

maximum=maximum 

并非无所作为?

alsodo你知道,行

if sum2 >= maximum 

并非无所作为都不是? sum2永远不会被更新,好吧,比较好的说,它是几次更新与同样的价值。检查你的代码,现在它没什么意义。

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

1

既然你在这里看完后以0代替(I,J)Ÿ的元素:

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

,并因为y在你的测试用例是积极的所有条目中,条件:

if sum2 >= maximum

从不计算真正。连续地,输出变量m从未初始化,因此该函数不返回任何内容。

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