我們知道,通常的方式,使在Matlab等高線圖的函數Z(X,Y)是
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
(例如)
contour(X,Y,Z);
如何在matlab中爲x和y不能取矢量值的自定義函數f(x,y)繪製輪廓圖?
然而,這種方式不適合工作函數f(x,y):
假設h_ {ij}(x,y)是一個大的(例如100x100)矩陣,其中每個分量都是x和y的(自定義)函數。我們定義另一個函數
F(X,Y)= DET(H_ {} IJ(X,Y))
,並想使函數f(x,y)的等高線圖。
f = det(h)中的行列式要求矩陣h的每個分量都是一個數字。因此,只有x和y是數字,而不是矢量,f(x,y)才能通過Matlab計算。如果我們使用[X,Y] = meshgrid(...),則意味着矩陣h的每個分量都是一個向量,並且f(X,Y)不能被計算。
有沒有辦法爲上述函數f(x,y)做一個輪廓圖,其中x和y不能取矢量值?
我誤解了'meshgrid'在我問這個問題時做了什麼。我應該修改問題「如何在matlab中爲用戶定義函數f(x,y)繪製輪廓圖,其中x和y不能取MATRIX值?」答案是使用'arrayfun'作爲'Z = arrayfun(@ f,X,Y)',我從http://stackoverflow.com/questions/3784059/contour-plot-a-custom-function?rq = 1。 – renphysics 2012-07-20 03:44:44
這正是我的答案所暗示的:)如果有用,請接受答案。 – Ansari 2012-07-20 06:28:04