Error with quiverm function

4 vues (au cours des 30 derniers jours)
James
James le 4 Fév 2012
I have the following code that returns me contour plots of phi, Q and quiver plots of u,v on a map. The first section just fiddles around with the data so its the write magnitude and shape.
However when I use the quiverm function it returns me this error:
??? Error using ==> quiverm
Inconsistent dimensions for inputs
Error in ==> model at 54
quiverm(lat,lon,u,v)
phi, Q, u and v are all 21*41 arrays. Longitude and latitude (lon and lat) are length 41 and 21 respectively.
Can anyone tell me why I'm getting this error?
close all
clear all
load 'Q.ascii'
load 'u.ascii'
load 'v.ascii'
load 'phi.ascii'
m = 43;
n = 21;
Q = reshape(Q,n,41);
u1 = reshape(u,n,m);
v1 = reshape(v,n,m);
phi1 = reshape(phi,n,m);
Q = flipud(Q);
u2 = flipud(u1);
v2 = flipud(v1);
phi2 = flipud(phi1);
u3 = u2/100;
v3 = v2/100;
phi3 = phi2/100;
u = u3(:,2:42);
v = v3(:,2:42);
phi = phi3(:,2:42);
lat = zeros(1,21);
lon = zeros(1,41);
for n = 1:21
lat(n) = -40.5 + 4.5*(n-1);
end
for m = 1:41
lon(m) = (9*(m-1));
end
figure(4)
axesm('eqdcylin', 'maplonlimit', [0 360], 'maplatlimit' , [-40.5 40.5], 'frame', 'on', 'grid', 'on');
geoshow('landareas.shp', 'facecolor', 'none');
contourfm(lat,lon,phi);
figure(5)
axesm('eqdcylin', 'maplonlimit', [0 360], 'maplatlimit' , [-40.5 40.5], 'frame', 'on', 'grid', 'on');
geoshow('landareas.shp', 'facecolor', 'none');
contourm(lat,lon,Q);
figure(1)
axesm('eqdcylin', 'maplonlimit', [0 360], 'maplatlimit' , [-40.5 40.5], 'frame', 'on', 'grid', 'on');
geoshow('landareas.shp', 'facecolor', 'none');
quiverm(lat,lon,u,v)

Réponses (2)

Rob Comer
Rob Comer le 5 Fév 2012
Unlike quiver, quiverm does not automatically expand its first two inputs if they are vectors and the third and fourth inputs are matrices, even if their lengths are consistent with size of the two matrices. You need to precede the call to quiverm with a call to meshgrat.
I see no need for this inconsistency; I think that what you tried should work and that quiverm should be fixed to support it. Thanks for pointing out the issue.

Chad Greene
Chad Greene le 22 Juil 2014
Matlab's quiverm function mixes up u and v. It also scales the vectors in a strange way. Andrew Roberts' ncquiverref fixes the problems, as does quivermc.

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by