下面给出两道基于火星探测器MAVEN实测数据的时序分析练习题:
(数据下载地址:https://pds-ppi.igpp.ucla.edu/;打开后点击Mars-MAVEN)
%Task 1
1.找到并下载2015年1月份所有MAG(分辨率ss_1s)的sts文件,利用“批处理”对所有sts文件进行读取并重新写入后缀是.txt的无表头纯数据文件,再分别存.mat格式,读完后可以只保存mat格式文件数据;
2.读取2015年1月7日和1月8日的mat数据,按照时间顺序进行数据拼接,拼接完成后,对磁场数据进行预处理;
3.预处理后,请以每3小时20分钟为时间间隔批处理出图,图形面板要包括以下信息:
% 磁场三分量及总磁场的变化量(每十分钟做分析,即把每十分钟的中位数当成期望值)
% 四个变化量放在一张图里,用不同颜色的线和标注注明
% 对四个变化量分别做小波分析(cwt),分别为四张子图
% 卫星高度及其三分量放在一张图里,用不同颜色的线和标注注明
% 存图(saveas)
%Task2
1.同Task1中找到并下载2015年1月份所有SWIA-onboardmom文件,学习读取网站文件说明文档,尤其是数据中的0/1判断模式代表的含义;
2.读取2015年1月7日和1月8日的数据,按照时间顺序进行数据拼接,拼接完成后,对质子速度数据进行预查看;
3.计算对应的速度三分量和总速度的变化量(每十分钟做分析,即把每十分钟的中位数当成期望值),并将速度和磁场对应的三分量变化量计算相关系数,即对应位置是每10分钟取CCx/y/z值。
如果这个练习到这里基本没什么问题,那么对于数据读取、基本运算和绘图就没有什么太大的问题了。那这仅仅只是建立在软件工具包的函数上,好像自己也没有什么算法上的知识。通常,对于像Fortran、Pasical、Visual Basic基础语言,更需要算法的内核,尤其是经常出现的:(冒泡、快速、选择等)排序、阶乘、闰年、追及、最优化、微分方程求解等实际数学问题(更多可以借鉴参考《啊哈!算法》)。但在矩阵运算上,有时没有Matlab来得方便理解,但在大数据运行效率上,Matlab往往疏于优化,而显得与Fortran还有点小巫见大巫。
那就从阶乘的角度去体会一下算法?
当n取得特别大的时候,往往由于计数位的限制,从而会很快逼近Inf,其实n越大更关心的是多少位,而不是确切的真实数字,总而言之可以精确到一定位数就可以。然而,利用科学计数法,整数不也是可以用浮点数表示吗?而且乘法也不一定就一定要是乘法(累乘器-爆炸算法),取个对数就可以变成加法(累加器-可控算法)。这样子一想,是不是就有点茅塞顿开了?
算法告诉你们了,是不是尝试编一编呢?对比一下这种算法可以算的n阶乘有多大呢?