2013-04-22 58 views
0

我目前正在編寫代碼以便爲每個視頻幀收集while循環內的質心座標的平均值。 對於每個循環週期,每個單幀只有一個平均值作爲輸出。我的目標是收集所有的平均值並繪製出來。從每個循環中收集循環結果

for object = 1:length(centroid); 

     centX = centroid(1,object); 
     centY = centroid(2,object);  
     vidIn = step(htextinsCent, vidIn, [centY centX], [centY-6 centX-9]); %this line is for coordinate display purpose on each frame 

end 

for object = length(centroid)>0; 

     columncentroid=centroid'; 
     average=mean(columncentroid); 
end 

我有困難,從以代碼run.The較早平均值結束所有幀列出所有的平均值由每個循環之後的最新值替換。 請建議我採取適當的措施。先進的謝謝你。

+3

什麼是「爲對象=長度(心)> 0」行的意圖是什麼? – grantnz 2013-04-22 04:46:57

+0

你把話說出來@grantnz!看起來您只會執行一次第二個循環,因爲長度(質心)將是單個值。 – Floris 2013-04-22 04:47:29

回答

0

看起來你已經有了2xN質心值數組;所有你需要做的就是顯示它們。如果你想擁有的所有值的平均值,你做

average = mean(centroid'); 

這需要平均在第一層面 - 它轉置後在第一欄和第二欄的Y值的所有X值。在此操作之後,average應該是2元素的行向量。

display(average); 

會告訴你什麼是值。

似乎這就是你想要的,你做的一切都是正確的(除了那個莫名其妙的循環...)。如果這不是你所需要的,請在你的問題中更清楚地解釋!

0

爲了讓所有均線,你可以寫:

average = []; %init average as empty 
for object = length(centroid):-1:1; 

    columncentroid=centroid'; 
    average= [average mean(columncentroid(:,object))]; %add new average to the end of average array 
end 
+0

但是這個循環只能運行一次,所以爲什麼要拼接?另外,因爲「columncentroid」在「循環」中沒有改變,所以你只需要重複連接相同的數字(也就是說,如果這是一個循環,即運行多次) – Dan 2013-04-22 06:52:24