Ho do I make a matrix with point data?

I currently have data for 3d points and want to make a matrix out of them
This point data is structured as 3 matrices each containing x, y, z locations which look like these
x=[-3.266573190689087, -3.266134023666382, -3.266134023666382, -3.266573190689087, ... ]
y=[-0.372330516576767, -0.372330516576767, -0.371891230344772, -0.371451914310455, ... ]
z=[-0.085013940930367, -0.085015110671520, -0.084998413920403, -0.085046470165253, ... ]
My hope is to find a way to combine these three matrices into one matrix which would be
matrix( y(i) , x(i) ) = z(i)
x,y,z are all 168136818 long so I dont thick I can share them due to their size
Is there a way to do this in matlab?
thank you for your help.

 Accepted Answer

Let A be your m*3 data matrix.
x = A(:,1) ; y = A(:,2) ; z = A(:,3) ;
%%structured
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
surf(X,Y,Z)
%%unstructured
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
figure
trisurf(tri,x,y,z)

14 Comments

Thank you very much,
But I am getting an error during reshape part
[Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate
size for that dimension.]
I looked through the reshape function but can't find what might cause this problem.
Can you help me?
Your data is scattered or structured?
If structured means the matrix is full, I think it's mostly structured, where the end parts have some holes
Attach your data.
This would be the A part of my data
There is no data in .mat file. It shows 0kb.
I think it was because the size was over 400MB
would sharing like this be ok?
You have to give permission to access...
Done. Sorry for the inconvenience. I never shared a file like this before.
x = A(:,1) ;
y = A(:,2) ;
z = A(:,3) ;
% Use grid data to get matrices
dx = 0.05 ; dy = 0.05 ; % specify your resolution
xi = min(x):dx:max(x) ;
yi = min(y):dy:max(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = griddata(x,y,z,X,Y) ;
pcolor(X,Y,Z)
shading interp
colorbar
thank you very much,
but can you tell me what does idx means?
You can remove the idx. I forgot to remove it while answering. I worked with reduced data as data was huge, so I have used idx and indices to pick some part of data.
Ok thank you.
I'm quite new to matlab and was stuck with this for 2 weeks.
Your help is greatly appreciated.
You are welcome...my pleasure helping you. :)

Sign in to comment.

More Answers (0)

Tags

Asked:

on 13 Sep 2020

Commented:

on 14 Sep 2020

Community Treasure Hunt

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

Start Hunting!