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