Smoothing data by x axis values rather than cells

2 次查看(过去 30 天)
I am trying to compare slope values from bathymetric profiles with different resolutions ranging from 30m to 85m. Therefore, I need to smooth the profiles to a common resolution (say 200 m). I attach an example of my data where c is depth (to smooth in m), d1 is distance (m) and the resolution is ~60 m. I can take 200/60 m to get a smoothing window in cells per 200 m then use smooth or filter. For example:
span=round(200/resolution);
smooth_bathy=smooth(c,span);
The problem is that the span or smoothing window has to be an integer so the smoothed resolution between profiles is still different i.e. 200/60 = 180 m and 200/35 =175 m.
Can anyone suggest a method to smooth the data to exacly 200 m (i.e. smooth by absoute values of the data in the x axis rather than cells?). Thanks.
  3 个评论
Alex Hughes
Alex Hughes 2021-3-24
Thanks for you reply Mathieu. The solution you provide does what I was after. I had a mental block. Indeed all I needed to do was resmample rather than smooth. If you paste your solution in the answers section I'll happily accept it.

请先登录,再进行评论。

采纳的回答

Mathieu NOE
Mathieu NOE 2021-3-24
hello
to resample all data to 200 m resolution (whatever your resolution is ), simply use interp1 :
new_d = min(d1):200:max(d1); % new distance vector with 200 m resolution
new_c = interp1(d1,c,new_d); % new depth vector (matched with new_d)

更多回答(0 个)

标签

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by