level 11
iangie_明月
楼主
我的目的是要把37个 2*20000 的二维数组组合成一个三维数组并用ListDensityPlot画出图来.
In[19]:= ClearAll["`*"]
In[20]:= data = ReadList[#, {Number, Number, Number}] & /@ FileNames["C:\\insitu\\dalian\\dalian1_00*.xye"]
(*读入37个xye格式的文件,每个大概有850kb, 所以一共是20多Mb, 有点慢*)
In[21]:= For[i = 1, i < 38, i++, {theta2[i], intensity[i], error[i]} = Transpose[data[[i]]]];
(*把每个xye数据转置分成角度列,强度列和误差列, 注意这37个数据的长度还不一样*)
In[22]:= For[i = 1, i < 38, i++, XYZ[i] = Transpose[{Take[theta2[i], 19904], Table[i, {19904}],
Take[intensity[i], 19904]}]];
(*舍去误差列数据, 把数据转置回来中间加上加上数据编号i, 只取前面19904个数据*)
In[24]:= XYZ =
Join[XYZ[1], XYZ[2], XYZ[3], XYZ[4], XYZ[5], XYZ[6], XYZ[7], XYZ[8],
XYZ[9], XYZ[10], XYZ[11], XYZ[12], XYZ[13], XYZ[14], XYZ[15],
XYZ[16], XYZ[17], XYZ[18], XYZ[19], XYZ[20], XYZ[21], XYZ[22],
XYZ[23], XYZ[24], XYZ[25], XYZ[26], XYZ[27], XYZ[28], XYZ[29],
XYZ[30], XYZ[31], XYZ[32], XYZ[33], XYZ[34], XYZ[35], XYZ[36],
XYZ[37]]
(*把37数据合并到一起, 请教这个应该怎么写才不用这么累?*)
In[25]:= ListDensityPlot[XYZ, InterpolationOrder -> 0,
PerformanceGoal -> "Speed"]
(*我已经用了最低要求了, 但是画这个图用了一下午时间-_-|||*)
---------------------
所以请问:
代码怎么写才能简单点? 特别是In[24]怎么写才方便一点?
In[25]的计算速度耗时大约6个小时...................是我的数据太多了吗?也就是20000*2*37个数据而已啊......
大神们请指点!!!
2013年12月18日 05点12分
1
In[19]:= ClearAll["`*"]
In[20]:= data = ReadList[#, {Number, Number, Number}] & /@ FileNames["C:\\insitu\\dalian\\dalian1_00*.xye"]
(*读入37个xye格式的文件,每个大概有850kb, 所以一共是20多Mb, 有点慢*)
In[21]:= For[i = 1, i < 38, i++, {theta2[i], intensity[i], error[i]} = Transpose[data[[i]]]];
(*把每个xye数据转置分成角度列,强度列和误差列, 注意这37个数据的长度还不一样*)
In[22]:= For[i = 1, i < 38, i++, XYZ[i] = Transpose[{Take[theta2[i], 19904], Table[i, {19904}],
Take[intensity[i], 19904]}]];
(*舍去误差列数据, 把数据转置回来中间加上加上数据编号i, 只取前面19904个数据*)
In[24]:= XYZ =
Join[XYZ[1], XYZ[2], XYZ[3], XYZ[4], XYZ[5], XYZ[6], XYZ[7], XYZ[8],
XYZ[9], XYZ[10], XYZ[11], XYZ[12], XYZ[13], XYZ[14], XYZ[15],
XYZ[16], XYZ[17], XYZ[18], XYZ[19], XYZ[20], XYZ[21], XYZ[22],
XYZ[23], XYZ[24], XYZ[25], XYZ[26], XYZ[27], XYZ[28], XYZ[29],
XYZ[30], XYZ[31], XYZ[32], XYZ[33], XYZ[34], XYZ[35], XYZ[36],
XYZ[37]]
(*把37数据合并到一起, 请教这个应该怎么写才不用这么累?*)
In[25]:= ListDensityPlot[XYZ, InterpolationOrder -> 0,
PerformanceGoal -> "Speed"]
(*我已经用了最低要求了, 但是画这个图用了一下午时间-_-|||*)
---------------------
所以请问:
代码怎么写才能简单点? 特别是In[24]怎么写才方便一点?
In[25]的计算速度耗时大约6个小时...................是我的数据太多了吗?也就是20000*2*37个数据而已啊......
大神们请指点!!!
