matlab和c語(yǔ)言的區(qū)別
一、MATLAB簡(jiǎn)介
本文引用地址:http://www.ex-cimer.com/article/201808/388129.htmMATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。MATLAB和MathemaTIca、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語(yǔ)言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。
MATLAB功能特性:
數(shù)值分析
數(shù)值和符號(hào)計(jì)算
工程與科學(xué)繪圖
控制系統(tǒng)的設(shè)計(jì)與仿真
數(shù)字圖像處理
數(shù)字信號(hào)處理
通訊系統(tǒng)設(shè)計(jì)與仿真
財(cái)務(wù)與金融工程
MATLAB應(yīng)用:
MATLAB產(chǎn)品族可以用來(lái)進(jìn)行以下各種工作:
●數(shù)值分析
●數(shù)值和符號(hào)計(jì)算
●工程與科學(xué)繪圖
●控制系統(tǒng)的設(shè)計(jì)與仿真
●數(shù)字圖像處理技術(shù)
●數(shù)字信號(hào)處理技術(shù)MATLAB在通訊系統(tǒng)設(shè)計(jì)與仿真的應(yīng)用
●通訊系統(tǒng)設(shè)計(jì)與仿真
●財(cái)務(wù)與金融工程
●管理與調(diào)度優(yōu)化計(jì)算(運(yùn)籌學(xué))
MATLAB的應(yīng)用范圍非常廣,包括信號(hào)和圖像處理、通訊、控制系統(tǒng)設(shè)計(jì)、測(cè)試和測(cè)量、財(cái)務(wù)建模和分析以及計(jì)算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨(dú)提供的專用MATLAB函數(shù)集)擴(kuò)展了MATLAB 環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類型的問題。
二、C語(yǔ)言簡(jiǎn)介
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
C語(yǔ)言基本特性:
1、高級(jí)語(yǔ)言:它是把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)的工作單元
2、結(jié)構(gòu)式語(yǔ)言:結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C 語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。
3、代碼級(jí)別的跨平臺(tái):由于標(biāo)準(zhǔn)的存在,使得幾乎同樣的C代碼可用于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。C語(yǔ)言對(duì)編寫需要進(jìn)行硬件操作的場(chǎng)合,優(yōu)于其它高級(jí)語(yǔ)言。
4、使用指針:可以直接進(jìn)行靠近硬件的操作,但是C的指針操作不做保護(hù),也給它帶來(lái)了很多不安全的因素。C++在這方面做了改進(jìn),在保留了指針操作的同時(shí)又增強(qiáng)了安全性,受到了一些用戶的支持,但是,由于這些改進(jìn)增加語(yǔ)言的復(fù)雜度,也為另一部分所詬病。Java則吸取了C++的教訓(xùn),取消了指針操作,也取消了C++改進(jìn)中一些備受爭(zhēng)議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機(jī)中運(yùn)行,運(yùn)行效率低于C++/C。一般而言,C,C++,java被視為同一系的語(yǔ)言,它們長(zhǎng)期占據(jù)著程序使用榜的前三名。
特有特點(diǎn):
C語(yǔ)言是一個(gè)有結(jié)構(gòu)化程序設(shè)計(jì)、具有變量作用域(variable scope)以及遞歸功能的過程式語(yǔ)言。
C語(yǔ)言傳遞參數(shù)均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
不同的變量類型可以用結(jié)構(gòu)體(struct)組合在一起。
只有32個(gè)保留字(reserved keywords),使變量、函數(shù)命名有更多彈性。
部份的變量類型可以轉(zhuǎn)換,例如整型和字符型變量。
通過指針(pointer),C語(yǔ)言可以容易的對(duì)存儲(chǔ)器進(jìn)行低級(jí)控制。
預(yù)編譯處理(preprocessor)讓C語(yǔ)言的編譯更具有彈性。
三、MATLAB語(yǔ)言與C語(yǔ)言的區(qū)別
MatLab的底層是C寫的,C的效率比MatLab要高,但MatLab語(yǔ)法簡(jiǎn)單多了,而且簡(jiǎn)單,但執(zhí)行效率不高 MATLAB是用于特定的方面的,比如說(shuō)矩陣運(yùn)算方面、DSP就很有優(yōu)勢(shì),而C語(yǔ)言不同,很多軟件的底層都是C編寫的
matlab提供的是一種基于解釋的語(yǔ)言,雖然也是一種高級(jí)語(yǔ)言,但是還是很簡(jiǎn)單的,它的目標(biāo)在于用戶方便,開發(fā)簡(jiǎn)單。而實(shí)際上這些方便也是有代價(jià)的,編譯器承受了這些代價(jià),程序執(zhí)行效率方面也有損失。另一方面matlab這么做也是基于其專用于科學(xué)計(jì)算的目的來(lái)考慮的,無(wú)法應(yīng)用于通用的程序設(shè)計(jì)。c語(yǔ)言這么做保持了其編譯的速度,便于大型程序設(shè)計(jì),執(zhí)行效率也很高,如os等百萬(wàn)行以上的代碼。同時(shí)c語(yǔ)言來(lái)做很多計(jì)算以外的應(yīng)用環(huán)境,如邏輯判斷,I/o操作等嵌入式應(yīng)用,如matlab編譯器。。。 顯然基于向量的計(jì)算優(yōu)化,對(duì)于這些應(yīng)用反而是負(fù)擔(dān)。當(dāng)然還有別的原因,我暫時(shí)還想不完整,但是這些已經(jīng)足夠說(shuō)明了兩者的不同啦。一句話,應(yīng)用的范圍、目的不同,語(yǔ)言的設(shè)計(jì)也當(dāng)然風(fēng)格迥異了。
matlab是一種解釋性語(yǔ)言,集成化,專門用于和數(shù)學(xué)相關(guān)的工程計(jì)算,數(shù)值運(yùn)算matlab是很簡(jiǎn)便強(qiáng)大,用起來(lái)很方便,比如: 求數(shù)組A的最大值的程序如下: A=[1 2 3 4 5 6];%把值賦給A max(A)%求最大值 結(jié)果就出來(lái)了 而C語(yǔ)言就麻煩的多 C語(yǔ)言是面向?qū)ο蟮幕A(chǔ)語(yǔ)言。更多的用于底層函數(shù)開發(fā),軟件開發(fā),單片機(jī)控制等,matlab能做的C語(yǔ)言肯定能做,但是一般要麻煩的多,而C語(yǔ)言能做的
matlab不一定能做。 形式上最容易發(fā)現(xiàn)的區(qū)別是,matlab是一句一句編譯的,而c語(yǔ)言是對(duì)一個(gè)完整的代碼段進(jìn)行編譯的,并且c中有頭文件(#include(。。。)),而matlab中沒有,對(duì)于數(shù)值運(yùn)算matlab是很簡(jiǎn)便強(qiáng)大的,c就有點(diǎn)繁瑣,對(duì)于算法要求c相對(duì)更高點(diǎn)。
評(píng)論