Matlab与C/C++/Java的一些区别
變量
定義和初始化
C/C++中要先定義變量,如果未初始化,其值一般是不確定的
Java中變量使用前,須初始化或賦值(實(shí)例化時(shí),類中的全局變量會(huì)自動(dòng)被初始化為默認(rèn)值)
Matlab中變量在寫(xiě)入時(shí)不需預(yù)先定義,但在讀取時(shí)應(yīng)該已被定義
數(shù)組長(zhǎng)度
C中數(shù)組長(zhǎng)度固定,可用malloc函數(shù)擴(kuò)展內(nèi)存空間,并復(fù)制已有值到新開(kāi)辟的連續(xù)內(nèi)存空間
C++/Java中長(zhǎng)度可用new獲取新的內(nèi)存空間,并復(fù)制已有值到新開(kāi)辟的連續(xù)內(nèi)存空間
Matlab中變量長(zhǎng)度、維度在寫(xiě)入時(shí)都可以自動(dòng)擴(kuò)展,為了提高性能,最好避免變量緯度自動(dòng)擴(kuò)展,而是預(yù)先定義空的多維變量,如二維char型數(shù)組 a = ['';''];
注意:Matlab變量長(zhǎng)度的自動(dòng)擴(kuò)展只在寫(xiě)入變量時(shí)發(fā)生,讀取變量時(shí)則不可訪問(wèn)越界
例如:對(duì)于定義的變量a=[1 2;3 4],賦值語(yǔ)句a(5,5)=1會(huì)自動(dòng)擴(kuò)展,而b=a(10,10)則會(huì)訪問(wèn)越界出錯(cuò)
數(shù)組的比較
C語(yǔ)言:對(duì)于字符串,可用strcmp函數(shù),其他類型,要循環(huán)逐個(gè)比較
Matlab:字符串可用strcmp函數(shù)。維度、長(zhǎng)度相同的任意類型數(shù)組,可直接用==比較,比較結(jié)果也是同樣大小的數(shù)組,為1則對(duì)應(yīng)位置的值相等,為0則不等
自增操作
C/C++/Java可用?x++或++x
Matlab只能?x = x+1;
數(shù)組下標(biāo)
C語(yǔ)言:?下標(biāo)從0開(kāi)始,用中括號(hào)表示。如a[0],二維數(shù)組a[0][1]
Matlab:下標(biāo)從1開(kāi)始,用小括號(hào)表示,如a(1),二維數(shù)組a(1, 2)
字符串的表示
C語(yǔ)言中用雙引號(hào)"test"
Matlab用單引號(hào) 'test'
字符串復(fù)制常用方法
// C中不能用等號(hào)賦值,等號(hào)賦值只是指針的復(fù)制
C語(yǔ)言:strcpy(a, b);
// C++中可重載操作符“=”實(shí)現(xiàn)等號(hào)復(fù)制字符串
C++/Java:String b = new String(a);
% Matlab中視情況而定,b=a可以復(fù)制整個(gè)字符串變量。如果b是二維char型數(shù)組,則可用?b(2, 1 : length(a)) = a來(lái)復(fù)制。b的長(zhǎng)度不夠會(huì)自動(dòng)擴(kuò)展,a的長(zhǎng)度不足則會(huì)補(bǔ)空格。
Matlab: b = a; ?b(2, 1 : length(a)) = a;
運(yùn)算符
求余
C語(yǔ)言: a % b
Matlab: ?mod(a, b)
不等于
C語(yǔ)言: !=
Matlab: ~=
循環(huán)的寫(xiě)法
// c語(yǔ)言
for(i = 0; i < n; ++i) { ? // i = 0 ~ n-1
}
% matlab
for i = 1 : n? ? % i = 1 ~ n
end
條件分支結(jié)構(gòu)
// c
if(a==0) {
} else if(a==1) {
} else {
}
% matlab
if a==0
elseif a==1
else
end
函數(shù)定義
C語(yǔ)言:函數(shù)只能有一個(gè)返回值,多個(gè)返回值可通過(guò)定義結(jié)構(gòu)體、使用指針作為參數(shù)傳入函數(shù)實(shí)現(xiàn)
Matlab:函數(shù)可有多個(gè)返回值,通過(guò)[a b] = func()獲取
代碼優(yōu)化
Matlab中盡可能多使用矩陣變換運(yùn)算,而少采用循環(huán)的方式
本文首發(fā)自我的個(gè)人網(wǎng)站,轉(zhuǎn)載請(qǐng)注明來(lái)源:http://www.hainter.com/matlab-c-java
總結(jié)
以上是生活随笔為你收集整理的Matlab与C/C++/Java的一些区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 质量堪忧 退换货激增!AMD旗舰显卡RX
- 下一篇: 攀升笔记本整机新年大促:15.6英寸12