2012-12-29 79 views
2

我想在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,但是我能夠將它繪製出來嗎?

+3

問題出在你的數組'z'的定義 - 你想完成什麼?繪製'surf(z)'看看'z'看起來像什麼;這是你的意圖嗎? – Jonas

回答

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再次,如果你真的希望他們在同一個情節。