MATLAB: 3D plot of data

3d plotsMATLAB

Hello.
I have a data set consisting of stresses accociated with a coordinate point (x,z). The data is attached, note that all the y coordiantes are the same, ie the stresses are on a flat surface consisting of x and z. The data for the stresses are in colum B.
I would like to create a 3D plot or surface of my stresses, but I am unsure how to associate my stresses with a specific point, so that I can plot them. I have tried using meshgrid and surf, but not with any kind of sucess worth attaching.

Best Answer

  • Option 1: USe scatter:
    [num,txt,raw] = xlsread('Data_3Dplot.xlsx') ;
    num = num(9:end,:) ;
    nodes = num(:,1) ;
    value = num(:,2) ;
    x = num(:,3) ;
    y = num(:,4) ;
    z = num(:,5) ;
    scatter3(x,y,z,10,value,'filled')
    Option 2: Make unstructured grid
    [num,txt,raw] = xlsread('Data_3Dplot.xlsx') ;
    num = num(10:end,:) ;
    nodes = num(:,1) ;
    value = num(:,2) ;
    x = num(:,3) ;
    y = num(:,4) ;
    z = num(:,5) ;
    dt = delaunayTriangulation(x,z) ;
    t = dt.ConnectivityList ;
    p = dt.Points ;
    p(:,3) = value ;
    trisurf(t,p(:,1),p(:,2),p(:,3));
    view(2)
    shading interp ; colorbar
    Option 3: Make a structured grid
    [num,txt,raw] = xlsread('Data_3Dplot.xlsx') ;
    num = num(10:end,:) ;
    nodes = num(:,1) ;
    value = num(:,2) ;
    x = num(:,3) ;
    y = num(:,4) ;
    z = num(:,5) ;
    N = 500 ;
    xi = linspace(min(x),max(x),N) ;
    zi = linspace(min(z),max(z),N) ;
    [X,Z] = meshgrid(xi,zi) ;
    C = griddata(x,z,value,X,Z) ;
    surf(X,Z,C)
    shading interp ; colorbar
    view(2)