Clear Filters
Clear Filters

Calculate the Root Mean Square Slope of a surface elevation matrix.

25 views (last 30 days)
I have a surface elevation matrix with 1987 x 2353 points from a laser scanner. The spacing in the x and y direction is 0.0497 and 0.0415 respectively. I need to calculate the root mean surface slope(Sdq) of the surface which should be calculated from the following equation. I am an newbie in MATLAB and nee your help. A sample of the data matrix is attached here since the comlete file is so big I hope this data part will be okay. If you can write a short code to calculate the room mean slope given the formula I would appreciate. Thanks.

Accepted Answer

Ashutosh
Ashutosh on 10 Jul 2023
Hello, I will assume that by A you mean the lateral area of the surface you are studying. Hopefully you are aware of general coding structures like a 'for' loop. If not, first please refer to this.
For convention, assume rows as the 'y' dimension and columns as the 'x' dimension. For integrals in MATLAB, you can calculate the value of the integrand for each individual element, and then sum them up using a for loop as below:
t = readtable("<ProvidePathToDataHereWithinQuotes>", "ReadRowNames",false,"ReadVariableNames",false);
t = table2array(t); % reading the xlsx file and converting to a matrix
dx = 0.0497;
dy = 0.0415;
sum = 0;
for i=1:109 % iterate through y dimension
for j=1:99 % iterate through x dimension
dzy = (t(i+1,j)-t(i,j))/dy; % dz/dy
dzx = (t(i,j+1)-t(i,j))/dx; % dz/dx
s = (dzy^2 + dzx^2) * dx * dy; % squaring dz/dy, dz/dx and multiplying with dx, dy
sum = sum + s;
end
end
Y = size(t,1)*dy;
X = size(t,2)*dx;
A = X*Y;
rms_slope = sqrt(sum/A);
Hope this helps. In case something is not clear, let me know so you can get used to MATLAB faster.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!