绘制函数的梯度,该函数是MATLAB中的矩阵

时间:2012-12-29 22:37:22

标签: matlab

我想在MATLAB中绘制以下函数的渐变。

g(x,y) = [(x^2)-1; -y]

我的代码是:

x = linspace(-3,3);
y = linspace(-3,3);
[xx, yy] = meshgrid(x,y);
z = [xx.^2-1;-yy];
[dx,dy] = gradient(z,.3,.3);
contour(x,y,z)
hold on 
quiver(x,y,dx,dy)

但我刚收到这个错误:

The size of Y must match the size of Z or the number of rows
of Z.

我不知道如何才能使两者的大小相符。 y是1x100矩阵,z是200x100。为了匹配它们,我需要y为1x200或z为100x100,但我能够将其绘制出来吗?

1 个答案:

答案 0 :(得分:2)

而不是

z = [xx.^2-1;-yy];

分别尝试每个组件:

z1 = [xx.^2-1];
z2 = [-yy];
[dx,dy] = gradient(z1,.3,.3);
contour(x,y,z1)
%etc.

如果您真的希望它们出现在同一个地块中,请再次使用hold on