2016-08-21 29 views
0

我試圖用hist3直觀地顯示一個二維分佈,但是該函數的行爲意外。我認爲它會返回輸入矩陣中每對數字出現次數的二維直方圖(計數),並在輸出矩陣中的某個位置顯示該計數,該位置的索引與該數字對相對應,縮放爲因子10(默認)或其他方形矩陣大小。但是,這不是什麼我的測試實施例顯示:Matlab - hist3沒有返回預期的輸出

例如,如果我定義以下輸入矩陣

1 1 
2 2 
3 3 
4 4 
5 5 

則命令 V = hist3(M,[5 5]) 具有以下預期輸出:

1 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
0 0 0 1 0 
0 0 0 0 1 

然而此輸入矩陣:

4 1 
4 2 
4 3 
4 4 
4 5 

輸出爲:

0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
0 0 0 0 0 
0 0 0 0 0 

比..rather(因爲我本來期望):

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
0 0 0 0 0 

任何人都可以幫助清除混亂呢?謝謝!

回答

1

這是因爲默認指數值介於2和6之間,因此4是第三個指數。嘗試繪製它:

figure; 
hist3(m,[5 5]) 

編輯

了一種使用確定邊緣hist3

EDGES = {(1:5)-0.5, (1:5)-0.5}; 
figure;hist3(m,'Edges',EDGES); 

+0

恐怕還是不要不行在第二個例子中,爲什麼hist3返回那個意外矩陣的原因。您是否說我需要使用邊緣解決方法才能從中獲得我想要的?另外,你的第一個繪圖有一個尺寸爲6x5而不是5x5的2D底座,就像我的例子中的矩陣一樣?!... – z8080

+1

是的,好吧。如果你真的想在第四欄有條,你必須玩邊。但是,如果你沒有指定邊緣的matlab會自動做到這一點。 我認爲在這裏你很困惑,因爲指數和值有相同的範圍。嘗試乘以10的初始矩陣。你會看到'v = hist3(vv,[5 5])'的輸出仍然是相同的,但'hist3(m,[5 5])'的曲線相應地改變到初始值的新範圍矩陣。 – shamalaia

+0

我解釋了我自己嗎? – shamalaia