簡體   English   中英

如何將 plot 變成 MATLAB 中的 2d Function

[英]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)

這完美地解釋了為什么你得到一條直線。 這是因為減號 ( - ) 等算術運算符的自動廣播只是按條目方式減去值。 但是,您想要為xy的每對可能值計算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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM