请教:大量数据点三维插值/多维插值
本帖最后由 messenger 于 2009-12-16 18:25 编辑已经得到其他软件计算的温度场数据(格式x,y,z,T),现在需要知道其他任意一点x0,y0,z0对应的T值,请教哪位大哥给点思路怎么插值?另外数据点个数多达5w~6w多个,怎么办,先谢谢了
x y z T
38.6492 111.6059 0.20217000 2.36781584
38.6492 111.6057 0.39469000 2.36840782
38.6493 111.6052 0.61911000 2.36684528
38.6494 111.6047 0.80288000 2.36517863
38.6495 111.6041 1.02447000 2.36367391
38.6496 111.6035 1.19333000 2.36198158
38.6497 111.6028 1.37900000 2.36035166
38.6499 111.6021 1.58127000 2.35675595
38.6500 111.6012 1.79987000 2.35529199
38.6502 111.6002 2.03451000 2.35183106
38.6504 111.5991 2.28491000 2.34850112
38.6506 111.5979 2.55067000 2.34532400
38.6508 111.5965 2.83135000 2.34222764
38.6511 111.5950 3.12632000 2.33726472
38.6514 111.5935 3.43477000 2.33265944
38.6517 111.5917 3.75602000 2.32811651
38.6520 111.5899 4.08974000 2.32400985
38.6524 111.5879 4.43574000 2.31815964
38.6527 111.5858 4.79391000 2.31473928
38.6531 111.5835 5.16417000 2.30971897
38.6536 111.5811 5.54648000 2.30337141
38.6540 111.5786 5.94084000 2.29962711
38.6545 111.5759 6.34724000 2.29463474
38.6550 111.5731 6.76575000 2.29052507
38.6555 111.5701 7.19658000 2.28725131
38.6560 111.5670 7.63995000 2.28502594
38.6566 111.5636 8.09617000 2.28203959
38.6572 111.5601 8.56555000 2.28038295
38.6579 111.5564 9.04847000 2.27849517
38.6586 111.5525 9.54531000 2.27813360
38.6593 111.5485 10.05647000 2.27944147
38.6600 111.5442 10.58246000 2.28235907
38.6608 111.5397 11.12399000 2.28577076
38.6616 111.5349 11.68185000 2.29112513
38.6625 111.5300 12.25680000 2.29736808
38.6634 111.5248 12.84951000 2.30576639
38.6643 111.5193 13.46059000 2.31634073
38.6653 111.5135 14.09059000 2.32827869
38.6664 111.5075 14.74000000 2.34167680
38.6675 111.5012 15.40938000 2.35742544
38.6686 111.4946 16.09937000 2.37540034
38.6698 111.4878 16.81059000 2.39480732
38.6711 111.4806 17.54359000 2.41615413
38.6724 111.4730 18.29893000 2.43978413
38.6737 111.4652 19.07718000 2.46489574
38.6752 111.4570 19.87886000 2.49169829
38.6766 111.4485 20.70457000 2.51995080
请教:大量数据点三维插值/多维插值
本帖最后由 messenger 于 2009-12-16 18:24 编辑现有一组数据,分别为x,y,z,f,先在要求某个点x0,y0,z0对应的f值,这个怎么插值实现?先谢了
数据为:
x y z f
0.5 10 20 0.08057
0.5 15 20 0.12704
0.5 20 20 0.137
0.5 25 20 0.14857
0.5 30 20 0.15088
1 10 20 0.10161
1 15 20 0.13561
1 20 20 0.14128
1 25 20 0.14693
1 30 20 0.15097
1.5 10 20 0.078873
1.5 15 20 0.1047
1.5 20 20 0.11543
1.5 25 20 0.11896
1.5 30 20 0.12426
2 10 20 0.082246
2 15 20 0.10786
2 20 20 0.11522 help interpn 用多维INTERP3试了不行,能不能提供例子,谢谢 想得到任意一点的函数值最好在原始计算软件中解决,一般商业仿真软件都提供这种功能。
如果非要导入Matlab中插值求解,导入数据要按照Matlab格式。 关键是另外一种软件与这种软件有不同的数据点,所以必须插值,版主能否提供点在matlab中插值的思路 Matlab插值很简单,直接用命令就可以了
主要是你的数据不对,插值找不到对应的点。
一般要下面这样的数据格式:
x(:,:,1) =
x(:,:,2) =
y(:,:,1) =[-3 -3 -3 -3; 3 3 3 3]
y(:,:,2) =[-3 -3 -3 -3; 3 3 3 3];
z(:,:,1) =[-3 -3 -3 -3; -3 -3 -3 -3]
z(:,:,2) =
T(:,:,1) =[-0.060002 -0.98349 -2.2994 -3.5362; -0.060002 -0.98349 -2.2994 -3.5362];
T(:,:,2) =[-0.060002 -0.98349 -2.2994 -3.5362; -0.060002 -0.98349 -2.2994 -3.5362]; 版主你好,我想借这个帖子问一下,要进行差值的话,如果处理器不能运算浮点,有没有什么比较好的算法能够推荐一下的啊?interpn这个函数有点麻烦呢,需要一点简单点的算法就行 啥处理器呀?这么高级,还不能运算浮点。
不过,你可以这样,根据你要运算数据的大小,以及你要求的精度,将要运算的数据扩大一定的倍数。
比如,要运算的数据为123,你要求小数点后2位有效数字,你可以将数据*1000,变成123000,运算完了,再除1000。
至於差值,不知道你说的是多维插值还是一、二维插值,你提到interpn,可能是要多维插值吧,不过多维插值很麻烦,原来我也以为多维插值只是低维插值的简单扩展。
如果你的数据比较简单的话,可以试试线性插值算法,比interpn简单,interpn的数据准备就很麻烦。 感谢版主的回答啊,用的是ARM7内核的处理器,用在工业上的,没有硬件的除法器,也不支持浮点数,但是可以用软件的方法定义浮点数和其对应的运算,但是这样要花去大量的计算时间,这个问题我也有点头疼啊!我的查找表是个二维的surface面,即由两个输入确定一个输出,插值算法现在还待定在。。。,相关的内容也可以参考下这个帖子,我还在想办法中。。。
http://forum.simwe.com/thread-884895-1-1.html 请问版主,具体用matlab的什么程序命令,谢谢了 本帖最后由 cwit 于 2009-6-18 22:17 编辑
1.从你这个数据来看:
x y z T
38.6492 111.6059 0.20217000 2.36781584
很像经纬度数据,高度数据上的温度数据。
2.你可以将矢量数据,先处理为矩阵数据。X,Y转换为矩阵的索引位置。矩阵的分辨率,可以根据X,Y的最大值最小值范围来设定。
3.X,Y可以作为一个输入参数。
4.这样就可以变成两维数据插值。
借鉴GIS思考方式。 matlab计算机图形一书中有插值、拟合等函数的讲解(清华版)。 看了半天没看懂~~~ 本帖最后由 alenku 于 2011-7-22 17:32 编辑
还不够聪明,看不懂。要是谁能把程序给下,真是感激啊 遇到同样的问题,学校中 messenger 发表于 2009-6-14 16:11 static/image/common/back.gif
想得到任意一点的函数值最好在原始计算软件中解决,一般商业仿真软件都提供这种功能。
如果非要导入Matlab ...
版主你好,请问向楼主的数据一样,能不能用matlab三维插值得到f=f(x,y,z)的表达式? lubinxu 发表于 2009-6-9 13:23 static/image/common/back.gif
现有一组数据,分别为x,y,z,f,先在要求某个点x0,y0,z0对应的f值,这个怎么插值实现?先谢了
数据为:
x...
这里,Z完全一样,不应作为一个变数,应予剔除。另外,作为曲面拟合,数据点太少了。
页:
[1]