2017-06-22 20 views
1

我需要一些幫助來理解surf函數在這個MATLAB示例代碼中的作用。代碼來自多元正態(高斯)分佈上的一些online documentationMATLAB:理解surf的作用

示例代碼:

mu = [0 0]; 
Sigma = [.25 .3; .3 1]; 
x1 = -3:.2:3; x2 = -3:.2:3; 
[X1,X2] = meshgrid(x1,x2); 
F = mvnpdf([X1(:) X2(:)],mu,Sigma); 
F = reshape(F,length(x2),length(x1)); 
surf(x1,x2,F); 
caxis([min(F(:))-.5*range(F(:)),max(F(:))]); 
axis([-3 3 -3 3 0 .4]) 
xlabel('x1'); ylabel('x2'); zlabel('Probability Density'); 

在這裏,他們正在創造一個高斯濾波器,F

我不確定這個surf在數學上是多變量分佈的情況。這只是顯示過濾器,F,看起來像什麼?

+1

'surf'是繪製由(x,y,z)座標定義曲面的命令。在這個示例代碼中,它繪製了多變量正態分佈的概率密度函數,即作爲由'mvnpdf'計算的'X1'和'X2'的函數的值'F'。對我來說,高斯過濾器是另一回事,但也許這就是你所說的...... – souty

+0

謝謝你的評論,@souty。 「作爲X1和X2的函數的值F」 - 仍不確定這在數學上意味着什麼。這就好像我在X1和X2上應用濾波器一樣? – haxtar

回答

1

是的,surf這裏只是顯示過濾器的形狀。

運行你的代碼給了我this plot (which I also rotated to view from above):

你可以看到,正常的高斯分佈具有不同的sigma沿兩個維度(並旋轉),這是由Sigma確定。 surf函數顯示過濾器的形狀,F。換句話說,過濾器在不同x,y位置的權重。

要在不同位置繪製濾鏡的高度/值,需要一組x,y對,它們從X1和X2網格中獲取。它沒有在網格上運行過濾器。

MATLAB中的過濾器通常只是一個矩陣,它可以與另一個數據矩陣(例如圖像)進行卷積以將過濾器應用於數據。

對於2D卷積,使用conv2