MATLAB Answers

Paul
0

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

Asked by Paul
on 16 Oct 2013
Latest activity Answered by Paul
on 16 Oct 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.

  0 Comments

Sign in to comment.

2 Answers

Answer by Adam Filion on 16 Oct 2013
Edited by Adam Filion on 16 Oct 2013

Try:
F = scatteredInterpolant(busCoordsX,busCoordsY,busVolts);
[xx,yy]=meshgrid(busCoordsX,busCoordsY);
zz = F(xx,yy);
contour(xx,yy,zz)
surf(xx,yy,zz)

  0 Comments

Sign in to comment.


Answer by Paul
on 16 Oct 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!

  0 Comments

Sign in to comment.