(完整版)Matlab與C++比較_第1頁(yè)
(完整版)Matlab與C++比較_第2頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Matlab與C+的對(duì)比1前言C+和Matlab是我們已經(jīng)學(xué)習(xí)過的兩門計(jì)算機(jī)語(yǔ)言,在數(shù)學(xué)領(lǐng)域上的基本使用中占有十分重要的地位。C+為我們數(shù)學(xué)更好的解析和掌握打下了基礎(chǔ);matlab是為了解決問題(學(xué)術(shù)性的、工程上的),得到一個(gè)最終(或可優(yōu)化)的結(jié)果,結(jié)果可能是一串?dāng)?shù)字,加以解釋則能得到強(qiáng)大的作用。而C+與Matlab本質(zhì)上的區(qū)別是在于C+存在全局變量、結(jié)構(gòu)、枚舉、聯(lián)合等一系列源于C的概念,包含了面向?qū)ο蠛兔嫦蜻^程的雙重概念,Malab的特點(diǎn)則是它講矩陣作為基本存儲(chǔ)單元。Matlab里數(shù)據(jù)存儲(chǔ)的基本單元是矩陣,即使一個(gè)數(shù)內(nèi)部也是看做一個(gè)矩陣。存儲(chǔ)在Matlab變量中的值都屬于一個(gè)類。這些值不僅包

2、括你可能通常會(huì)考慮的對(duì)象,如時(shí)間序列貨狀態(tài)空間對(duì)象,也包括雙精度數(shù)。所有的Matlab數(shù)據(jù)類型都具有面向?qū)ο缶幊讨械念惖墓δ?。由于兩者都是?jì)算機(jī)語(yǔ)言,在基本的語(yǔ)法方面具有相似之處。但畢竟兩門語(yǔ)言的開發(fā)環(huán)境不同,在一些具體的語(yǔ)法方面會(huì)有所不同,某些符號(hào)在兩門語(yǔ)言中可能代表不同的運(yùn)算。學(xué)生一般相繼學(xué)習(xí)這兩門語(yǔ)言,很容易對(duì)這兩門語(yǔ)言的語(yǔ)法發(fā)生混淆,例如把C+的語(yǔ)法用在了Matlab上,程序運(yùn)行錯(cuò)誤而不知錯(cuò)誤原因。因此,把這兩門語(yǔ)言一些基本的語(yǔ)法點(diǎn)做出比較顯得較有實(shí)際意義,也能為學(xué)習(xí)提供參考,避免在編程方面出現(xiàn)低級(jí)錯(cuò)誤。2 Matlab與C+的介紹Matlab是Mathworks公司推出的數(shù)學(xué)軟件,它

3、將數(shù)值分析、矩陣計(jì)算、信號(hào)處理和圖形顯示結(jié)合在一起,包含大量高度集成的函數(shù)可供調(diào)用,命令語(yǔ)句功能十分強(qiáng)大,為科學(xué)研究、工程設(shè)計(jì)及眾多學(xué)科領(lǐng)域提供了一種簡(jiǎn)潔、高效的編程工具。但是Matlab使用的是解釋性語(yǔ)言,大大限制了它的執(zhí)行速度;源代碼的公開不利于算法和數(shù)據(jù)的保密;局限于Matlab運(yùn)行環(huán)境而不能用于開發(fā)商用軟件。VisualC+是Windows平臺(tái)下主要的應(yīng)用程序開發(fā)環(huán)境之一,它能方便實(shí)現(xiàn)軟件開發(fā),開發(fā)的系統(tǒng)具有界面友好、執(zhí)行速度快、易維護(hù)和升級(jí)等優(yōu)點(diǎn)。但是在工程計(jì)算方面,和Matlab相比編程顯得復(fù)雜的多。因此實(shí)現(xiàn)Matlab混合編程,使兩者結(jié)合起來(lái),協(xié)同工作,必將提高軟件開發(fā)效率,使所

4、開發(fā)的軟件具有更高的性能,更大的應(yīng)用范圍,也可以為科學(xué)研究和工程技術(shù)提供更強(qiáng)的技術(shù)支持。3 數(shù)據(jù)類型的對(duì)比C+的基本數(shù)據(jù)類型有bool(布爾型)、char(字符型)、int(整型)、float(浮點(diǎn)型,表示實(shí)數(shù))、double(雙精度浮點(diǎn)型,簡(jiǎn)稱雙精度型)。除了bool型外,主要有兩大類:整數(shù)和浮點(diǎn)數(shù),其中有關(guān)鍵字signed(有符號(hào)數(shù))和unsigned(無(wú)符號(hào)數(shù)),short(短數(shù)據(jù)型)和long(長(zhǎng)數(shù)據(jù)型)作為修飾符。bool型數(shù)據(jù)也稱為邏輯型數(shù)據(jù),取值只能是false(假)或true(真)分別以0和1表示。Matlab內(nèi)部只有一種數(shù)據(jù)格式,即雙精度(64位)二進(jìn)制,Matlab作運(yùn)算和

5、存儲(chǔ)時(shí)都用雙精度格式2。無(wú)論什么時(shí)候?qū)⒁粋€(gè)數(shù)值賦予一個(gè)變量名,Matlab將自動(dòng)創(chuàng)建一個(gè)double型變量。如果需要改變變量的類型,可以通過format指令改變數(shù)據(jù)顯示的格式4 運(yùn)算符的對(duì)比C+和Matlab都提供了加減乘除等基本算術(shù)運(yùn)算符、賦值運(yùn)算符、大于小于等關(guān)系運(yùn)算符以及與或非等邏輯運(yùn)算符,具體差別如表1-2所示?;舅阈g(shù)運(yùn)算符與賦值運(yùn)算符的比較加減乘除取余賦值C+Matlab/%mod或rem關(guān)系運(yùn)算符與邏輯運(yùn)算符的比較大于小于大于等于小于等于等于不等于與或非異或C+>V>=V=!=&&|!Matlab>V>=V=&&|xor、,

6、、.一sV注意,在C+中,“%”只能用于整形操作數(shù);當(dāng)“/”用于兩整形數(shù)據(jù)相除時(shí),其結(jié)果取商的整數(shù)部分,小數(shù)部分被自動(dòng)舍棄。同時(shí)C+中有自增(+)與自減(-)兩個(gè)運(yùn)算符,有“+=,-=,”等10種復(fù)合運(yùn)算符,這是Matlab中沒有的。需要區(qū)分的是在C+中,邏輯非用“!”表示,Matlab中則用“”表示。另外,在C+中,"”表示異或;但在Matlab中,“人”表示乘方,例如aA2表示a2。5 變量的聲明與初始化的對(duì)比C+中,變量在使用之前必須先聲明其類型和名稱,具體形式如下:數(shù)據(jù)類型變量名1,變量名2,在定義一個(gè)變量的同時(shí),也可以給它賦初始值,例如“inta=3;”,聲明了一個(gè)整型的變

7、量a并賦予初值為3。如果需要計(jì)算y=3x,當(dāng)x=1時(shí)的y值,可通過以下語(yǔ)句計(jì)算:intx=1,y;y=3*x;Matlab中使用變量前不需要先聲明,只需要直接賦值給變量即可。需要注意的是,在C+中,把字符和字符串賦給變量的形式有所區(qū)別。字符實(shí)際上是字符常量,是以單引號(hào)括起來(lái)的一個(gè)字符;字符串實(shí)際上是字符串常量,是以雙引號(hào)括起來(lái)的字符序列,在內(nèi)存中存放時(shí)末尾會(huì)添加0'作為結(jié)尾標(biāo)記。例如:chara=c'/把字符c賦給變量acharA=“abcd”;/把字符串a(chǎn)bcd賦給變量aMatlab中對(duì)字符和字符串沒有明確的區(qū)分,都可以通過“a='字符串內(nèi)容'的形式把字符或字

8、符串賦給變量a。例如:a='c'A='abc'6 自定義函數(shù)的對(duì)比C+中自定義函數(shù)的語(yǔ)法形式為:類型標(biāo)識(shí)符函數(shù)名(形式參數(shù)列表)函數(shù)實(shí)現(xiàn)語(yǔ)句類型標(biāo)識(shí)符表示返回值類型,函數(shù)的返回值由return語(yǔ)句給出。如果函數(shù)沒有返回值,則類型標(biāo)識(shí)符用void表示,不必寫出return語(yǔ)句。在調(diào)用函數(shù)之前,要先在主調(diào)函數(shù)中聲明函數(shù)原型,調(diào)用的形式為“函數(shù)名(實(shí)際參數(shù)列表)”C+中的函數(shù)可以與主函數(shù)寫在同一個(gè)源文件中;也可以寫成單獨(dú)的頭文件,并把頭文件名嵌入主程序。Matlab的自定義函數(shù)通過關(guān)鍵詞function聲明,形式如下:function返回值列表=函數(shù)名(形式參數(shù)列表)

9、函數(shù)實(shí)現(xiàn)語(yǔ)句Matlab的函數(shù)文件一般另存為一個(gè)單獨(dú)的m文件,存放在與主調(diào)函數(shù)文件同一路徑下,否則函數(shù)不能被調(diào)用。保存時(shí),Matlab系統(tǒng)會(huì)自動(dòng)默認(rèn)把函數(shù)文件保存為文件名與函數(shù)名相同的m文件。Matlab可定義函數(shù)有多個(gè)返回值;如果函數(shù)沒有返回值,則可以直接定義:function函數(shù)名(形式參數(shù)列表)函數(shù)調(diào)用的形式與C+相同,都是通過“函數(shù)名(實(shí)際參數(shù)列表)”調(diào)用。7 循環(huán)及選擇語(yǔ)句的對(duì)比在C+和Matlab中,都包括if和switch兩種選擇語(yǔ)句以及for和while兩種循環(huán)語(yǔ)句,其基本形式都是一致的。主要區(qū)別的是C+中的語(yǔ)句體需要用“”括起,Matlab中的語(yǔ)句體不需括起,但要以關(guān)鍵詞“e

10、nd”作為循環(huán)或選擇結(jié)構(gòu)的結(jié)束標(biāo)志。如果需要用for語(yǔ)句表示循環(huán)條件初值i=0,循環(huán)終值條件為iva,用C+表示為:“for(inti=0;iva;i+)”;由于Matlab自身以矩陣運(yùn)算的特點(diǎn),只需要寫成“fori=0:a”,C+中改變循環(huán)表達(dá)式的語(yǔ)句i+已隱含在“:”中,表示每循環(huán)一次i自增1。如果改變循環(huán)表達(dá)式的語(yǔ)句為“i+=n”,即每循環(huán)一次i自增n,則用Matlab可表示為“fori=0:n:a”。8 輸入與輸出語(yǔ)句的對(duì)比C+中,數(shù)據(jù)的輸入和輸出時(shí)通過I/O流實(shí)現(xiàn)的,cin和cout是預(yù)定義的流類對(duì)象。cin用來(lái)處理標(biāo)準(zhǔn)輸入,即鍵盤輸入;cout用來(lái)處理標(biāo)準(zhǔn)輸出,即屏幕輸出。鍵盤輸入

11、的格式為:“cin>>變量1>>變量2”,表示要求從鍵盤上輸入一個(gè)或多個(gè)變量,多個(gè)變量之間以空格分開。變量的類型可以是數(shù)字或者字符,需要在cin語(yǔ)句之前進(jìn)行聲明。例如:inta,b;cin>>a>>b;該組語(yǔ)句把從鍵盤輸入的兩個(gè)整型數(shù)依次賦給變量a和b。屏幕輸出的格式為:“coutv<表達(dá)式VV表達(dá)式”,輸出多個(gè)數(shù)據(jù)項(xiàng)。插入運(yùn)算符“VV”之后可以加雙引號(hào)(“”)括起的字符串或任意復(fù)雜的表達(dá)式,系統(tǒng)會(huì)把字符串輸出或自動(dòng)計(jì)算出表達(dá)式的值并輸出。例如:inta=1,b=2;coutvv“a+b=”vva+b;該組語(yǔ)句的輸出為“a+b=3”,即把字

12、符串“a+b=”和表達(dá)式a+b的值依次輸出oMatlab的鍵盤輸入通過函數(shù)“input”實(shí)現(xiàn),具體用法為“a=input'(輸入提示')”,把用戶從鍵盤輸入的數(shù)據(jù)賦給變量a。如果希望輸入是一個(gè)數(shù)組或矩陣,則只需把輸入內(nèi)容用中括號(hào)()括起,系統(tǒng)把默認(rèn)把輸入視為數(shù)組或矩陣。例如:運(yùn)行語(yǔ)句“a=input('a=')”,用戶輸入“a=12;34”,運(yùn)行結(jié)果為:a=1234如果希望輸入內(nèi)容是一個(gè)字符串,則要在input語(yǔ)句中加上字符的限制符"'s'”,形式為“a=input('輸入提示',s')”。例如:運(yùn)行語(yǔ)句“a=input('a=',s')”,用戶輸入“a=TodayisSunday.”,運(yùn)行結(jié)果為:“a=TodayisSunday.”。在輸入字符串時(shí)以單引號(hào)引起輸入的內(nèi)容,系統(tǒng)也可以把輸入內(nèi)容識(shí)別為字符串。Matlab的屏幕輸出可通過disp和fprintf語(yǔ)句實(shí)現(xiàn)。9 結(jié)語(yǔ)從基本語(yǔ)法結(jié)構(gòu)、基本數(shù)據(jù)類型、變量的聲明與初始化、運(yùn)算符、循環(huán)及選擇語(yǔ)句、自定義函數(shù)、系統(tǒng)函數(shù)、基本輸出與輸出語(yǔ)句8個(gè)基本方面討論了C+和Matlab語(yǔ)言的異同,指出了在編程過程中容易出現(xiàn)語(yǔ)法錯(cuò)誤之處,由于Matlab是一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論