我试图在MATLAB中绘制以下等式:
ratio = sqrt(1+1/(kr)^2)
x和y轴上的k和r,以及z轴上的比率。我使用meshgrid来创建一个矩阵,其中x和y的值从1到10变化:
[x,y] = meshgrid([1:1:10],[1:1:10]);
现在的问题是为z创建值。我试图只输入整个等式,但结果如下:
>> Z = sqrt(1+1/(x .* y)^2)???
Error using ==> mldivide
Matrix dimensions must agree.
所以我所做的就是手动完成整个过程,最终产生正确的图形:
z = z^2;
z = 1 ./ z;
z = 1 + z;
z = sqrt(z);
mesh(x,y,z)
有更优雅的方法吗?或者输入方程式并让MATLAB处理其余的方法?
答案 0 :(得分:3)
试试这个:
Z = sqrt(1+1./(x .* y).^2);
surf(Z);
您遇到的问题与使用/
代替./
和^2
代替.^2