Faster 2D Interpolation?

24 次查看(过去 30 天)
Rod Lopez
Rod Lopez 2022-5-2
评论: Rod Lopez 2022-5-2
I need to interpolate 2D scattered data onto a fine grid. Below is what I am currently doing, and my question is whether there exists a faster a way? Currently my largest data sets (on the order of 3000 x 15000 after up-sampling) take upwards of 7 minutes to run. Preferably this would be a few seconds, but maybe that is asking too much...Similar to my other questions I am unable to provide the exact code for a variety of reasons, but I have listed the steps that I currently perform:
  1. User selects a subset of the input data to view, which is not unifornly spaced.
  2. Generate equally space points using Linspace (based on the max and min values of my input data set)
  3. Create the new grid using Meshgrid
  4. Generate interpolated data set using griddata(old_x,old_y,old_data,new_x,new_y,'nearest')
I have tried running this from a separate function file, from the command window, and as a private function inside my app designer app. They are all very very slow. Would another 2D interpolation technique be better for my appliciation?
Thank you so much!

回答(1 个)

Steven Lord
Steven Lord 2022-5-2
How many times are you performing this interpolation?
Are the old X and Y coordinates the same each time you perform the interpolation, with only the data and the new coordinates changing?
If so consider creating a griddedInterpolant, updating the Values property (but leaving the old coordinate data alone) when you get new data, and evaluating it at each set of new coordinates.
  1 个评论
Rod Lopez
Rod Lopez 2022-5-2
Hi Steven, thank you for such a quick reply!
The old X and Y coordinates would change each time based on the user's selection. However, for a given data file, it will always end up being a subset of the entire data set. For example, if I load in a data set of size 100 x 100, the user might want to view a 'box' around rows x=50 to 75 and columns y=50 to 75 let's say. I'd then map that onto a rectangular grid using the process I outlined. Small sizes run almost instantly, but once we start getting to large arrays it takes a long time.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by