Fitting a 3D sine function to topographic data?

6 views (last 30 days)
I have some topographic data that has a general sinusoidal signature. I can import it to MATLAB in the form of points or as a DEM.
I would like to fit a 3D sine function (z=sin(x)+sin(y)) to my data that looks something like this:
I need to figure out a way to fit this type surface to the data, likely with different parameters for each dataset, and calculate an R^2 value. I have many datasets to work through, so I want to develop something that's efficient.
I'm having trouble figuring out how to approach this problem. The point data is very dense (>3 million) and crashes the Curve Fitting gui. I don't know how I would even try to fit a DEM, if it works the same way or not. Any ideas?
  3 Comments
Image Analyst
Image Analyst on 11 Oct 2016
Just FYI - that's a 2-D function, not a 3D function. You have two dimensions: x and y, and a value at that point. That means it's a 2-D function. You have only 2 independent coordinates, not 3. For example, a gray scale image is a 2D array (function) regardless if you show it as an image or as a 2.5-D rendering on your flat 2-D computer screen with the surf() function. Doesn't matter - it's still a 2D image.
Julia Howe
Julia Howe on 12 Oct 2016
Edited: Julia Howe on 12 Oct 2016
The image/function was meant as a simplified example, not as the solution. My data is topographic data, it varies in xyz space (Northing, Easting, Elevation).

Sign in to comment.

Answers (1)

Massimo Zanetti
Massimo Zanetti on 7 Oct 2016
A simple idea is to downsample your data (also called decimation). Since your data is very regular, you can remove a lot of samples and then use the fitting tool on the reduce data.
For example try:
r=10; %decimation rate
x = decimate(x,r)
y = decimate(y,r)
and then run fitting tool with x,y.

Categories

Find more on Curve Fitting Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!