iangie_明月 iangie_明月
关注数: 54 粉丝数: 209 发帖数: 8,764 关注贴吧数: 43
谁能在代码和计算时间上改进一下这个MMA程序? 我的目的是要把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个数据而已啊...... 大神们请指点!!!
首页 1 2 3 下一页