Plotting 3D data

5 views (last 30 days)
Adam Rajcan
Adam Rajcan on 22 Feb 2021
Commented: KSSV on 22 Feb 2021
Dear Matlab comunity, I struggle to solve seemingly a simple problem.
I have a 54x3 matrix which I would like to plot, such that first coloumn represents x-axis, second coloumn represents y-axis and third coloumn represents a value assigned to [x,y] points.
However, when I use surf(Error_matrix), what I get is a surface scaled such that x-axis goes from 1 to 3 (as number of coloumns), y-axis goes from 0 to 54 (as number of rows) and z gives some weird combination.
In other words, I have a 6x9 checker board with an value assigned to each intersection (representing an error) and I would like to plot an error value to each of the intersections. Please find the error_matrix attached.
Can you please help me out?

Accepted Answer

KSSV
KSSV on 22 Feb 2021
Edited: KSSV on 22 Feb 2021
load('Error_matrix.mat')
x = Error_matrix(:,1) ;
y = Error_matrix(:,2) ;
z = Error_matrix(:,3) ;
xi = unique(x) ; nx = length(xi) ;
yi = unique(y) ; ny = length(yi) ;
[X,Y] = meshgrid(xi,yi);
Z= reshape(z,ny,nx) ;
surf(X,Y,Z)
  2 Comments
Adam Rajcan
Adam Rajcan on 22 Feb 2021
Exactly, thank you so much! Could you please also write a short explanation of what went wrong? Or forward me to some tutorial, where I can get to understand the issue?
KSSV
KSSV on 22 Feb 2021
You have a m*3 data.....for this you cannot use surf unless you arrange them into a matrices X, Y and Z.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!