[英]How to plot a 2d Function in MATLAB
我正在嘗試 plot MATLAB 中的一個簡單方程。
等式是
z = x^2 - y^2, for -3 <= x <= 3, -3 <= y <= 3.
我目前的代碼是
x = -3:3;
y = -3:3;
z = (x.^2) - (y.^2);
plot(z)
結果是
在這種情況下請幫助我,因為我不確定代碼和圖表是否正確。 非常感謝你。
這不是分段 function。分段 Function是由多個子函數定義的 function,其中每個子函數適用於域中的不同區間。 這里只有一個function取兩個相同長度的arrays。 由於輸入 arrays,計算會產生一個零向量。如果您更改其中一個向量,即“x”或“y”,您將看到一個非零值 plot。您的代碼按預期工作。
這里有很多錯誤:讓我們從頭開始:
x = -3:3;
y = -3:3;
如果我們評估它們,它們都將返回一個整數向量:
x =
-3 -2 -1 0 1 2 3
這意味着評估 function 的網格將非常粗糙。 為了緩解這種情況,您可以定義一個步長,例如x = 3:0.1:3
或使用linspace
,在這種情況下您可以設置樣本數,例如x = linspace(-3, 3, 500)
。 現在考慮下一行:
z = (x.^2) - (y.^2);
如果我們評估這個,我們得到
z =
0 0 0 0 0 0 0
而你 plot 這個向量與二維繪圖 function
plot(z)
這完美地解釋了為什么你得到一條直線。 這是因為減號 ( -
) 等算術運算符的自動廣播只是按條目方式減去值。 但是,您想要為x
和y
的每對可能值計算z
。 要做到這一點並在以后獲得漂亮的 plot,您應該使用meshgrid
,並使用像 plot 這樣的mesh
繪制 function。 所以我建議使用
[X,Y] = meshgrid(x,y);
創建網格,然后在網格上計算 function,如下所示
Z = X.^2 - Y.^2;
最后 plot 你的 function 與
mesh(X,Y,Z);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.