Hi all,
I am currently attempting to draw a quiver plot on top of a contour plot, such that I can see the gradient of the contour function. However for some reason the gradient calculation does not take place correctly as all the quivers are far from being perpendicuar to the contours. This suprises me as the task itself is pretty simple and I have managed to accomplish it with mock data, see here:
clear ; clc% Grid matrices
x = -2:0.25:2;y = x;[X,Y] = meshgrid(x);% Function Matrix
F = X.*exp(-X.^2-Y.^2);% Calculate Gradient
[FU, FV] = gradient(F, diff(x(1:2))) ;% Plot
figure hold on contour(X, Y, F) quiver(X, Y, FU, FV)
However, using my own data (you can find them attached its a simple 30×30 matrix), the same process does not seem to accomplish the task:
clear ; clc% Grid matrices x = linspace(-0.1, 0.1, 30) ; y = linspace(8, 12, 30) ; [X, Y] = meshgrid(x, y) ;% Function Matrixload('my_data.mat')% Calculate Gradient[FU, FV] = gradient(F, diff(x(1:2)), diff(y(1:2))) ;% Plotfigure hold on contour(X, Y, F) quiver(X, Y, FU, FV)
The weird thing is that the countour plot gets generated correctly, however something is off with the quiver. Even when I scale down the quiver vectors to say 0.2, they don't have the correct orientation relative to the contours.
Thanks for your help in advance
Best Answer