【问题标题】:Interpolation in MatlabMatlab中的插值
【发布时间】:2012-08-06 09:35:53
【问题描述】:

我做了一个插值,但我不知道是否可以保存数据。例如。这是我的代码:

load ab1.txt
x= ab1(:,2);
y= ab1(:,3);
z= 399.25:1:2179.5;
yi= interp1(x,y,z);
plot(x,y,'o',z,yi)

我有很多值,例如 352.4、352.5 354.3...,我想通过插值从每个数字中只得到一个值。例如,对于值 352,我想获得插值的值.那可能吗?或者我将不得不做一些不同的事情,比如媒介或类似的东西?

【问题讨论】:

  • 你确定你使用了interp1吗?正如您现在所做的那样,它采用数据序列(x,y) 并插入值z=[399.25 400.25 401.25 402.25 .... 2178.25 2179.25]。所以你得到很多值作为回报是正常的,因为你要求找到很多值的插值。使用save function 保存数据。
  • 您好,Gunther,感谢您的回答。最后,我决定在 excel 中计算每个值的平均值。因此,例如,如果我有 352.3= 0.5 和 352.4=0.628,我计算出 352= 0.564。好吧,现在的问题是我需要每个数字的值。我的意思是......例如,如果我有 352 和 354,我还需要数字 353。我想我必须用插值来做。我会努力做到的。

标签: matlab interpolation


【解决方案1】:
y352 = interp1(X,Y,352) 

为您提供 352 处的插值。

2012 年 8 月 8 日编辑:然后是 OP cmets

感谢姆温格勒!但问题是我需要通过插值找到缺失值。例如。我有 350、351、353、354 (x) 及其值 (y)。我需要 Matlab 确定数字 352 被遗漏并通过插值找到它们的值。那可能吗?非常感谢! :) – user1578688 昨天

根据您的其他评论,如果 X 中没有位于N<=x<N+1 范围内的真实样本,则您认为缺少整数 N。所以你的问题的答案是: 1) 找到缺失的数字并将它们组成一个数组 2) 仅插入这些数字的值。

X = sort(X); % make sure our X go from least to most in order
XasInt = floor(X); % the integer X at each X value
XasIntFullRange = (X(1):X(end))'; % all X including "missing" values
XasIntMissing = setdiff(XasIntFullRange,XasInt); % just the missing ones
YasIntMissing = interp1(X,Y,XasIntMissing); % interpolated values of the missing

【讨论】:

  • 感谢 mwengler!但问题是我需要通过插值找到缺失值。例如。我有 350、351、353、354 (x) 及其值 (y)。我需要 Matlab 确定数字 352 被遗漏并通过插值找到它们的值。那可能吗?非常感谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
相关资源
最近更新 更多