Matlab 带函数的三维绘图图形的差异
我有这个功能: 在WolframAlpha中,这是一个图表: 在MatLab中,我使用以下代码:Matlab 带函数的三维绘图图形的差异,matlab,wolframalpha,Matlab,Wolframalpha,我有这个功能: 在WolframAlpha中,这是一个图表: 在MatLab中,我使用以下代码: clc; clear; close all [x,y]=meshgrid(-1:.1:1); e = exp(1); z=(e^-x^2)+((e^-2)*(y^2)) surf(x,y,real(z)); 并打印此图表: 为什么会出现这种差异?我做错了什么?在执行x^2和y^2时,您无意中执行了矩阵乘法。要对矩阵进行元素平方运算,请执行x.^2和y.^2 另外,虽然从技术上讲不是一个错误,
clc; clear; close all
[x,y]=meshgrid(-1:.1:1);
e = exp(1);
z=(e^-x^2)+((e^-2)*(y^2))
surf(x,y,real(z));
并打印此图表:
为什么会出现这种差异?我做错了什么?在执行
x^2
和y^2
时,您无意中执行了矩阵乘法。要对矩阵进行元素平方运算,请执行x.^2
和y.^2
另外,虽然从技术上讲不是一个错误,e=exp(1)
只是在您已经有了exp
的情况下过度使用了
总之
[x,y]=meshgrid(-1:.1:1);
z=exp(-x.^2)+(y.^2)./exp(2);
surf(x,y,z);
输入都是实的,所以我取消了对
real
的调用<在这种情况下,code>/可以是普通的/
,因为exp(2)
是一个标量,但我更喜欢正确的 在执行x^2
和y^2
时,您无意中执行了矩阵乘法。要对矩阵进行元素平方运算,请执行x.^2
和y.^2
另外,虽然从技术上讲不是一个错误,e=exp(1)
只是在您已经有了exp
的情况下过度使用了
总之
[x,y]=meshgrid(-1:.1:1);
z=exp(-x.^2)+(y.^2)./exp(2);
surf(x,y,z);
输入都是实的,所以我取消了对
real
的调用<在这种情况下,code>/可以是普通的/
,因为exp(2)
是一个标量,但我更喜欢正确的 首先,使用exp(…)
而不是e^…
,特别是如果你不打算正确地插入另一个括号,(e^-2)*(y^2)
需要是(e^-2)。*(y.^2)
。注意星号和插入符号前的点。在元素方面,而不是矩阵乘法和指数运算,通常选择一个对你有帮助的答案,如果你有心情的话,可以进行投票。首先,使用exp(…)
而不是e^…
,特别是如果你不打算给另一个答案加括号,(e^-2)*(y^2)
需要是(e^-2)*(y.^2)
。注意星号和插入符号前的点。按元素而不是矩阵乘法和幂运算,通常选择一个对您有帮助的答案,如果您有兴趣,请向上投票。