Matlab-實踐篇(二)

下面給出兩道基于火星探測器MAVEN實測數(shù)據(jù)的時序分析練習(xí)題:
(數(shù)據(jù)下載地址:https://pds-ppi.igpp.ucla.edu/;打開后點擊Mars-MAVEN)
%Task 1
1.找到并下載2015年1月份所有MAG(分辨率ss_1s)的sts文件,利用“批處理”對所有sts文件進行讀取并重新寫入后綴是.txt的無表頭純數(shù)據(jù)文件,再分別存.mat格式,讀完后可以只保存mat格式文件數(shù)據(jù);
2.讀取2015年1月7日和1月8日的mat數(shù)據(jù),按照時間順序進行數(shù)據(jù)拼接,拼接完成后,對磁場數(shù)據(jù)進行預(yù)處理;
3.預(yù)處理后,請以每3小時20分鐘為時間間隔批處理出圖,圖形面板要包括以下信息:
% 磁場三分量及總磁場的變化量(每十分鐘做分析,即把每十分鐘的中位數(shù)當成期望值)
% 四個變化量放在一張圖里,用不同顏色的線和標注注明
% 對四個變化量分別做小波分析(cwt),分別為四張子圖
% 衛(wèi)星高度及其三分量放在一張圖里,用不同顏色的線和標注注明
% 存圖(saveas)
%Task2
1.同Task1中找到并下載2015年1月份所有SWIA-onboardmom文件,學(xué)習(xí)讀取網(wǎng)站文件說明文檔,尤其是數(shù)據(jù)中的0/1判斷模式代表的含義;
2.讀取2015年1月7日和1月8日的數(shù)據(jù),按照時間順序進行數(shù)據(jù)拼接,拼接完成后,對質(zhì)子速度數(shù)據(jù)進行預(yù)查看;
3.計算對應(yīng)的速度三分量和總速度的變化量(每十分鐘做分析,即把每十分鐘的中位數(shù)當成期望值),并將速度和磁場對應(yīng)的三分量變化量計算相關(guān)系數(shù),即對應(yīng)位置是每10分鐘取CCx/y/z值。
如果這個練習(xí)到這里基本沒什么問題,那么對于數(shù)據(jù)讀取、基本運算和繪圖就沒有什么太大的問題了。那這僅僅只是建立在軟件工具包的函數(shù)上,好像自己也沒有什么算法上的知識。通常,對于像Fortran、Pasical、Visual?Basic基礎(chǔ)語言,更需要算法的內(nèi)核,尤其是經(jīng)常出現(xiàn)的:(冒泡、快速、選擇等)排序、階乘、閏年、追及、最優(yōu)化、微分方程求解等實際數(shù)學(xué)問題(更多可以借鑒參考《啊哈!算法》)。但在矩陣運算上,有時沒有Matlab來得方便理解,但在大數(shù)據(jù)運行效率上,Matlab往往疏于優(yōu)化,而顯得與Fortran還有點小巫見大巫。
那就從階乘的角度去體會一下算法?
當n取得特別大的時候,往往由于計數(shù)位的限制,從而會很快逼近Inf,其實n越大更關(guān)心的是多少位,而不是確切的真實數(shù)字,總而言之可以精確到一定位數(shù)就可以。然而,利用科學(xué)計數(shù)法,整數(shù)不也是可以用浮點數(shù)表示嗎?而且乘法也不一定就一定要是乘法(累乘器-爆炸算法),取個對數(shù)就可以變成加法(累加器-可控算法)。這樣子一想,是不是就有點茅塞頓開了?
A=n!=n(n-1)(n-2)···2·1=BE+C
logA=logn+log(n-1)+···+log1=M
A=10^M=10^{(M-[M])+[M]} =BE+C([M]為取整)
C=[M]
B=10^(M-[M])
算法告訴你們了,是不是嘗試編一編呢?對比一下這種算法可以算的n階乘有多大呢?