2013-02-11 110 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在函數的開始處爲空或其他有意義的默認值。