Matlab-基礎(chǔ)篇(一)

Matlab是Matrix和Laboratory的綜合縮寫,意為矩陣實(shí)驗(yàn)室,由美國MathWorks公司出品。作為一款數(shù)學(xué)軟件,集數(shù)據(jù)導(dǎo)入導(dǎo)出、數(shù)值分析、時序分析、圖影處理、仿真等內(nèi)容于一體。同F(xiàn)ortran、IDL、Python等數(shù)據(jù)分析軟件,Matlab有著豐富的工具包,為大量學(xué)科的數(shù)據(jù)提供了較為實(shí)用且便捷的選擇。
這一次,先來了解一下數(shù)據(jù)的類型和計(jì)算機(jī)存儲。
由于Matlab是基于“矩陣”的,所以數(shù)據(jù)通常以矩陣數(shù)組的形式進(jìn)行存儲。高中數(shù)學(xué)中,關(guān)于數(shù)組的廣義定義應(yīng)該是由一串有規(guī)律的數(shù)組成的集合,但通常是由一個下標(biāo)來表征數(shù)組的通項(xiàng)公式。但是,實(shí)際應(yīng)用中,通常都應(yīng)該由兩個及兩個以上的下標(biāo)來表征對應(yīng)位置的數(shù),例如:古希臘畢達(dá)哥拉斯學(xué)派的數(shù)學(xué)家總結(jié)的第個
邊形數(shù)的表達(dá)式
(選自《高中數(shù)學(xué)-數(shù)的規(guī)律基礎(chǔ)》中題1-3ppt, 摘錄自《高考數(shù)學(xué):拉分提檔全攻略-數(shù)列》浙江大學(xué)出版社)。
數(shù)據(jù)通常可以分為數(shù)型、字符型、元胞型、結(jié)構(gòu)型。數(shù)型就相當(dāng)于數(shù)集,通常根據(jù)有無小數(shù)點(diǎn)可以分為實(shí)型(浮點(diǎn)型float)和整型(integer),而鑒于復(fù)型(complex)是相當(dāng)于二維數(shù)據(jù)格式,需要實(shí)部和虛部共同來決定。同時,對于數(shù)型,從精度(存儲的有效位數(shù))考慮,在Matlab中可以分為單精度(single precision)和雙精度(double precision)。字符型(str/char)包括字符或字符串,通常用前后單引號賦值,對于數(shù)據(jù)字符,可考慮使用函數(shù)轉(zhuǎn)化,否則無法直接參與運(yùn)算。但如果對于不同的變量數(shù)型或字符型,如何做到存入一個數(shù)據(jù)中方便信息傳輸?通常會考慮元胞型(cell),即一個元胞數(shù)組中通常有各種變量的不同維度大小的數(shù)據(jù)共同存儲空間,找到元胞數(shù)組中對應(yīng)位置即可提取需要的數(shù)據(jù)列。而不同的元胞數(shù)組又可以構(gòu)成結(jié)構(gòu)型(struct)數(shù)據(jù),struct數(shù)據(jù)中通常有各種對應(yīng)的信息名稱,比如:A和B同學(xué)的期末考試各科成績及個人信息等存儲,就可以存成結(jié)構(gòu)型數(shù)據(jù)。(注意:字符型變量不能和數(shù)型變量做交叉賦值。)當(dāng)然,Matlab的界面區(qū)會直接顯示各個變量的類型,需做好區(qū)分。
在這里,可能有很多第一次接觸計(jì)算機(jī)語言的小伙伴。通常,單精度數(shù)據(jù)是32位,雙精度存儲是64位,那跟計(jì)算機(jī)的內(nèi)部數(shù)據(jù)存儲到底有什么聯(lián)系呢?0還是0嗎?
首先,要清楚的是計(jì)算機(jī)對于任何數(shù)字都是以‘0/1’二進(jìn)制編碼記錄的,1個字節(jié)(byte)等于8位(bit),32 bit=4 byte。因此,在Fortran中,一個單精度的實(shí)數(shù),就可以用real*4去定義。對于32 bit來說,每個bit都只有0/1的選擇,下面給定計(jì)數(shù)法則:
第1個bit:符號位
-(0為正數(shù),1為負(fù)數(shù));
第2-9個bit:指數(shù)位
-
;
第10-32個bit:小數(shù)部分
-二進(jìn)制下的科學(xué)計(jì)數(shù)法小數(shù)部分。
看到這里,還沒有搞懂?下面給出762.75在計(jì)算機(jī)里的存儲,來看看具體過程吧?(部分推導(dǎo)源自《百度百科》)


那對于單精度的數(shù)值最大能存多少呢?來算一算:

看到這里,是否比較清晰了呢?64 bit你是否也可以信手拈來?是不是可以輕松地其計(jì)數(shù)法則和最大最小呢?

可以看出單雙精度的數(shù)據(jù)在存儲上就差了不是一個量級的水平,因此隨著計(jì)算機(jī)性能的提高、存儲能力的提升,通常會更喜歡雙精度的數(shù)據(jù)。但實(shí)際中,衛(wèi)星數(shù)據(jù)的傳遞,由于信息量過大,通常也有單精度的數(shù)據(jù),需要在使用的時候特別注意。
對于原始觀測數(shù)據(jù)來說:對一種確定變量的連續(xù)時間觀測,也叫作“時間序列”,是一維(1-D)的數(shù)列,象征性地可以記為
;一個確定時刻,對一種確定變量
,有著類似“經(jīng)緯度”的變化,也叫作“圖像序列”,是二維(2-D)的數(shù)組,象征性地可以記為
;而對一種有著“經(jīng)緯度”變化的確定變量
,連續(xù)時間觀測,也叫作“視頻序列”,是三維(3-D)的數(shù)據(jù),象征性地可以記為
。因此,如果對一個空間
的實(shí)時觀測量
,應(yīng)該是具有四維(4-D)的信息,象征性地可以記為
,以此類推。關(guān)于實(shí)測數(shù)據(jù)的實(shí)際維度和每個維度的個數(shù),可以用
來表達(dá)。
說了那么多關(guān)于數(shù)據(jù)的基礎(chǔ)知識,通常,基本上是拿不到直接的數(shù)據(jù)文件,市面上也有很多不同的文件格式和類型,究竟如何才能把文件中的數(shù)據(jù)提取出來?這部分叫做“數(shù)據(jù)讀取”,無論是最終讀出來是數(shù)型、字符型、元胞型、結(jié)構(gòu)型的哪一種或哪幾種,都要求“正確地讀取”。關(guān)于“正確地讀取不同類型的文件數(shù)據(jù)”,將在下一章細(xì)致闡述。