2012-08-06 101 views
0

我已经完成了插值,但不知道是否可以保存数据。例如。这是我的代码:Matlab中的插值

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 ...我想要得到的,具有内插,从每一个number.For例如只有一个值,该值352我想获得插值的值。那可能吗?或者我将不得不做一些不同的媒体或类似的东西?

+2

你确定你使用了'interp1'吗?正如您现在所做的那样,它将采用数据“(x,y)”并插值“z = [399.25 400.25 401.25 402.25 .... 2178.25 2179.25]”。所以回报很多值是正常的,因为你要求找到很多值的插值。保存数据通过[保存功能]完成(http://www.mathworks.nl/help/techdoc/ref/save.html)。 – 2012-08-06 09:46:04

+0

嗨Gunther,谢谢你的回答。最后,我决定用Excel的平均值来计算每个值之一。所以,例如,如果我有352.3 = 0.5和352.4 = 0.628,我计算352 = 0.564。那么,现在的问题是我需要每个数字的值。我的意思是......例如,如果我有352和354,我还需要353号。我想我必须用插值法来做。我会尽力去做。 – user1578688 2012-08-06 11:44:42

回答

0
y352 = interp1(X,Y,352) 

让你在352

8月8日插值2012编辑:那么OP评论

感谢mwengler!但问题是我需要使用插值查找缺失值。例如。我有350,351,353,354(x)和他们的值(y)。我需要这个Matlab识别数字352是错过的,并通过插值找到它们的值。那可能吗?非常感谢! :) - user1578688昨天

从您的其他评论,如果没有在范围N<=x<N+1范围内的X中的真实样本,您认为一个整数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 
+0

谢谢mwengler!但问题是我需要使用插值查找缺失值。例如。我有350,351,353,354(x)和他们的值(y)。我需要这个Matlab识别数字352是错过的,并通过插值找到它们的值。那可能吗?非常感谢! :) – user1578688 2012-08-07 07:33:23