MATLAB插值计算问题
本人想使用MATLAB插值计算如下数据,第一列是时间,第二到第四列是在不同温度下(10、20、30、40)的采样数据,想采用插值的方法得到任意温度下(比如17、31)随时...
本人想使用MATLAB插值计算如下数据,第一列是时间,第二到第四列是在不同温度下(10、20、30、40)的采样数据,想采用插值的方法得到任意温度下(比如17、31)随时间变化的采样数据,需要采用什么样的插值函数进行较精确的求解,谢谢了。
展开
1个回答
展开全部
如果你只是对温度进行插值。时间还是那些数据,就想你表中所列的那样,可以使用interp1
其调用格式是yi = interp1(x,Y,xi,method)
演示一下当时间为0.02时,温度17和31的值。
x=10:10:40;
Y=[3 12 24 29];
xi=[17 31];
method='spline';%采用样条插值
yi = interp1(x,Y,xi,method)
答案是yi = 8.5300 24.9800
method也可以被定义为其他插值方法,比如'linear' 'cubic' 'pchip'
是不是觉得这样效率很低,只能求出一行的两个数据。
将数据区定义为一个矩阵,使用for循环就可以全部求出了。
当然这样还是有点不人性化。我通常都是在Excel中写好格式。然后用MATLAB写个函数之间完成在Excel中的读写操作的。
这里有必要提一下,interp1,是MATLAB自带的插值函数,你也可以自己编写其他插值方法。比如牛顿插值和拉格朗日插值。
如果你想知道,在时间为0.0236时,温度为27.6时的数据,那应该使用二元插值函数 interp2
ZI = interp2(X,Y,Z,XI,YI,method)
方法类似
其调用格式是yi = interp1(x,Y,xi,method)
演示一下当时间为0.02时,温度17和31的值。
x=10:10:40;
Y=[3 12 24 29];
xi=[17 31];
method='spline';%采用样条插值
yi = interp1(x,Y,xi,method)
答案是yi = 8.5300 24.9800
method也可以被定义为其他插值方法,比如'linear' 'cubic' 'pchip'
是不是觉得这样效率很低,只能求出一行的两个数据。
将数据区定义为一个矩阵,使用for循环就可以全部求出了。
当然这样还是有点不人性化。我通常都是在Excel中写好格式。然后用MATLAB写个函数之间完成在Excel中的读写操作的。
这里有必要提一下,interp1,是MATLAB自带的插值函数,你也可以自己编写其他插值方法。比如牛顿插值和拉格朗日插值。
如果你想知道,在时间为0.0236时,温度为27.6时的数据,那应该使用二元插值函数 interp2
ZI = interp2(X,Y,Z,XI,YI,method)
方法类似
追问
恩很详细了,非常感谢。我在处理这些数据的时候确实困惑,不知道什么插值方法能更加准确一些。我理解你的意思是如果时间步长固定的话是不是就是按照一维插值精度就可以了,对吗?
追答
嗯。时间如果只是第一列那些数据,那么采样数据就是温度的单值函数,那就对温度进行一元插值。但是要注意,不同的插值方法得到的结果是不一样的,不过在内插的情况下,这些结果一般都比较接近。由于插值也是对数据进行的预测,所以一般情况下,方法上没有谁好谁坏。我个人认为,好的插值算法都是利用了整个数据进行处理,这样对事物的描述才是最全面的。比如拉格朗日插值,样条插值方法中重视了对临近局部的关注度,也是可以的。
总之,时间固定的话,对于你而言,用interp1即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询