Plotting 3D data set over x-y plane (x,y,z coordinates)

20 visualizaciones (últimos 30 días)
Paul
Paul el 16 de Oct. de 2013
Respondida: Paul el 16 de Oct. de 2013
Hi,
I have a set of (x,y,z) vectors where (x) and (y) are coordinates and (z) is the magnitude at that coordinate point. I have been trying to plot these to make a heatmap/contour type plot, but have not been able to get the correct results. My latest attempt goes like this:
if true
% XYZ = [busCoordsX, busCoordsY, busVolts];
[X,Y,Z] = meshgrid(busCoordsX, busCoordsY, busVolts);
vq = griddata(busCoordsX, busCoordsY, busVolts, XYZ, X, Y, Z);
figure; surf(X,Y,vq);
end
busCoordsX, busCoordsY and busVolts are 130x1 vectors (double).
The error I'm getting is:
Error using scatteredInterpolant The number of data point locations should equal the number of data point values.
Error in griddata>useScatteredInterp (line 188) F = scatteredInterpolant(inargs{1}(:),inargs{2}(:),inargs{3}(:), ...
Error in griddata (line 125) vq = useScatteredInterp(inputargs, numarg, method, 'none');
Error in plotVoltage3D (line 54) vq = griddata(busCoordsX, busCoordsY, busVolts, XYZ, X, Y, Z);
Please help!
Thanks.

Respuestas (2)

Adam Filion
Adam Filion el 16 de Oct. de 2013
Editada: Adam Filion el 16 de Oct. de 2013
Try:
F = scatteredInterpolant(busCoordsX,busCoordsY,busVolts);
[xx,yy]=meshgrid(busCoordsX,busCoordsY);
zz = F(xx,yy);
contour(xx,yy,zz)
surf(xx,yy,zz)

Paul
Paul el 16 de Oct. de 2013
Hi Adam,
Thanks for the quick response. The code does mostly what I'm looking for, however, it includes a bunch of lines and doesn't quite get the plot I'm looking for. Ultimately, I'd like a scatter plot of the (x,y) points and the voltage magnitudes overlayed with a surface plot. The attached pictures probably makes more sense.
Again, thanks for your help!

Categorías

Más información sobre Lighting, Transparency, and Shading en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by