特定的功能我有這樣的功能:如何繪製在Matlab
,我想繪製它,我想結果是一個周期函數...
我試過,但只拿到一個點:(
x1=-50:0.1:50;
x2=-50:0.1:50;
plot(cos(sqrt(power(x1,2)+power(x2,2)))/(power(x1,2)+power(x2,2)));
這裏是我的問題,什麼是正確的方法是什麼?
得到任何幫助。
特定的功能我有這樣的功能:如何繪製在Matlab
,我想繪製它,我想結果是一個周期函數...
我試過,但只拿到一個點:(
x1=-50:0.1:50;
x2=-50:0.1:50;
plot(cos(sqrt(power(x1,2)+power(x2,2)))/(power(x1,2)+power(x2,2)));
這裏是我的問題,什麼是正確的方法是什麼?
得到任何幫助。
這是一個3D圖,因爲有兩個輸入x1
和x2
。所以你必須使用plot3(或者@EitanT指出的surf,或任何3d繪圖功能)。
你現在只繪製對(-50;-50)
,(-49.9;-49.9)
,...,(50;50)
,因爲你從兩個向量開始,你可能要覆蓋所有的組合。因此,使用meshgrid(更高的層面,也有ndgrid):
x1=-50:0.1:50;
x2=-50:0.1:50;
[X1, X2] = meshgrid(x1,x2);
現在你可以使用矩陣運算,通過this link閱讀,你會看到,你需要的elementwise操作:的a.*b
代替a*b
等。 power(a,b)
已經是元素操作(與a.^b
相同),矩陣等效項爲mpower(a,b)
或a^b
。
f = cos(sqrt(power(X1,2)+power(X2,2)))./(power(X1,2)+power(X2,2)+1);
plot3(X1,X2,f);
您需要將其繪製爲3-D曲面。例如,使用surf
:
[X1, X2] = meshgrid(-5:0.25:5, -5:0.25:5);
F = cos(sqrt(X1 .^ 2 + X2 .^ 2)) ./ (X1 .^ 2 + X2 .^ 2 + 1);
surf(X1, X2, F)
注意兩件事情:
如果黑色邊緣看起來討厭,似乎雜亂的情節,你可以通過禁用EdgeColor
屬性中刪除的邊緣線(如用戶夏嘉曦指出):
surf(X1, X2, F, 'EdgeColor', 'None')
最終的結果應該是這樣的:
非常感謝 – zhilevan