本帖最后由 MatlabBigFan 于 -1-5 03:35 编辑
大家好。
我有一个20000X3的data file,第一列是时间,第二列是位置,第三列是变量值。截取几行数据是这样的:
0.00000E+00 0.00000E+00 1.50000E+00
0.00000E+00 4.12948E-02 1.50000E+00
0.00000E+00 8.11927E-02 1.50000E+00
0.00000E+00 1.19694E-01 1.50000E+00
0.00000E+00 1.57002E-01 1.50000E+00
0.00000E+00 1.92896E-01 1.50000E+00
... ...
6.50044E-01 2.59791E+00 4.02500E+00
6.50044E-01 2.64019E+00 5.25800E+00
6.50044E-01 2.69569E+00 6.59500E+00
6.50044E-01 2.76679E+00 8.03600E+00
6.50044E-01 2.86119E+00 9.78400E+00
6.50044E-01 2.99230E+00 1.21200E+01
6.50044E-01 3.18339E+00 1.53100E+01
6.50044E-01 3.47279E+00 1.95900E+01
6.50044E-01 3.91679E+00 2.51900E+01
6.50044E-01 4.57190E+00 3.11600E+01
6.50044E-01 5.51909E+00 3.65600E+01
6.50044E-01 6.79070E+00 4.07700E+01
6.50044E-01 8.43579E+00 4.35500E+01
6.50044E-01 1.05624E+01 4.50400E+01
6.50044E-01 1.33768E+01 4.54100E+01
数据排列的规律是:在初始时间T=0按位置递进顺序把所有位置上的变量值列出来,然后时间步进到T=T1把所有位置上的变量值列出来,依次直到最后。 随着时间增长,位置范围扩大,位置之间的间隔也会变化。一共有200个时间点,每个时间点对应100个位置,每个位置对应一个变量值.
我使用下面的代码画出了散点图:
clear
data=load('×××.dat');
Time=data(:,1);
Dist=data(:,2);
Value=data(:,3);
figure
scatter(Dist,Time,1,Value,'.');
产生的散点图是这样的如下图一所示.
现在我想对这个data file做插值,得到下图的效果,如图二所示, (白色区域是没有数据点的区域):
我尝试了下面的代码:
clear
data=load('***.dat');
Time=data(:,1);
Dist=data(:,2);
Value=data(:,3);
figure
[T,D,V]=griddata(Time,Dist,Value,linspace(min(Time),max(Time),100)',linspace(min(Dist),max(Dist),100),'v4');
h=surf(D,T,V);
但是得到的图如图三所示,但是并不是想要的图, 貌似做插值时把没有数据点的区域也赋上了值。那么问题是,如何在做插值是不赋值给空白区域,或者另一种方法是如何插值后把原来的没有数据点的区域区分开来?
在二楼
散点图.png
(14.76 KB, 下载次数: 1)
-1-1 03:19 上传
图一: 散点图
目标效果图.png
(126.31 KB, 下载次数: 0)
-1-1 03:19 上传
图二: 目标效果图
尝试1.png
(79.3 KB, 下载次数: 0)
-1-1 07:45 上传
图三: 尝试
尝试2.png
(88.45 KB, 下载次数: 0)
-1-5 01:44 上传
图四:尝试2
尝试3.png
(77 KB, 下载次数: 0)
-1-5 03:33 上传