I am trying to calculate the surface area of a plot generated using surf. I am using the function surfarea attached. I keep getting the error Input coordinates cannot be complex when executing griddata. None of the coordinates in the file are complex. The file is too large to attach so I am including an extract image. The file is downloadable at https://we.tl/t-mfKxV2RFQ3 . Can anyone indicate a potential reason please?
clc;clear variables;T=readtable('C:\Users\CT\Desktop\Matlab Question\Surface.dat'); x=T(:,1); y=T(:,2); z=T(:,3);[X,Y] = meshgrid(0:1:2455, 0:1:1848);Z = griddata(x,y,z,X,Y); h = surf(X,Y,Z);[totalArea] = surfarea(h);shading interp;xlabel('x'), ylabel('y'), zlabel('z'),colorbartitle(sprintf('Total surface area: %.2f', surfarea(h)));view(60,30);saveas(h, 'C:\Users\CT\Desktop\Matlab Question\Surface.png');
Update:
The code works fine when using
T=xlsread('C:\Users\CT\Desktop\Matlab Question\Surface.xlsx', 1);
instead of readtable. However I cannot import data from Excel as the original data file contains 10.9 million rows.
Best Answer