MATLAB: Wrong direction of E-Field lines using “Quiver Function” in a program to solve Simple Laplace Problem.

gradientlaplaceproblemquivervector field line

This is my program to solve a simple laplace problem where a Voltage of 100V is applied at the top and all other bounderies are 0V. The Matrix outputs the correct values (in var "z"). And the potential distribution seems right. The Problem is that when I use the quiver function to plot the E-Field lines then they originate from the bottom boundary (at 0V) and end at sides and the Top. But the Fields should originate from the top at (100v) and end at the sides and the bottom. I can't figure out what went wrong so any help would be appreciated. Thanks.
%array
u = zeros(50);
u(1,:)=100;
z = u;
%loop
for i =1:500
for i = 2: size(z,1)-1;
for j = 2 : size(z,1)-1
z(i,j) = (z(i-1,j)+z(i+1,j)+z(i,j-1)+z(i,j+1))/4;
end
end
% getframe
figure(1)
end
imagesc(z);
figure(2)
[ex,ey] = gradient(z);
axis xy
quiver(-ex,-ey,3);

Best Answer

Note the y-axis orientation between the image plot and the quiver call. If you use contourf instead of imagesc, they match. If you want zero to start at the top of the plot for both, set the 'YDir' property for each figure if you use contourf, and the quiver plot if you use imagesc:
set(gca, 'YDir','reverse')
If you want to overplot the quiver arrows on top of the first plot, use the hold function.