【问题标题】:interpolate to decrease step size Matlab插值以减小步长 Matlab
【发布时间】:2019-04-21 12:17:53
【问题描述】:

我在 matlab 中有这样的数据数组: 1 , 2 , 3 ; 2 , 4 , 6 ; ...在 Matlab 中是否有一个现成的算法可以插入数据并给我这样的东西(例如线性) 1 , 2 , 3; 1.5、3、4.5; 2 , 4 , 6;

在此示例中,我的步数将变为 0.5 而不是 1。 这是线性插值的简单情况。想象一下我有 10000 行,我想要三次插值并增加我的数据之间的分辨率....我知道有数学算法,但首先我想确定是否有任何现成的可用函数。

【问题讨论】:

  • 谷歌搜索“MATLAB interpolate”提供了许多解决方案,相关的 MATLAB 文档位于顶部。在你问之前,请花点精力搜索。当你问的时候,展示你的努力以及为什么这些不能解决你的问题。见How to Ask

标签: matlab data-analysis


【解决方案1】:

我想你想要 Matlab 的 interp1 函数。

% Data points to interpolate
v = [1 2 3
     2 4 6
     ];
% X (independent variable) points for the original data
x = [1:size(v,1)]';
% X points to do the interpolation at
xq = [1:0.5:size(v,1)]';
% Do the interpolation
v_interp = interp1(x, v, xq);

interp1() 的第四个参数是一个选项,用于指定要使用的插值方法,并采用 'linear''cubic''spline' 等参数。详情请见doc interpn

减小xq = [1:0.5:size(v,1)]' 中的步长以提高分辨率。

【讨论】:

  • 谢谢..这正是我要找的
  • interp1 将在没有循环的情况下执行此操作。
  • 感谢烧杯!我已经更新了我的答案以使用 interp1 并避免 for 循环。
  • 请注意您使用的方法。请参阅 here 了解可能出错的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 2017-08-19
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多