Matlab与C/C++/Java的一些区别

本文由PurpleSword(jzj1993)原创,转载请注明
变量
定义和初始化
C/C++中要先定义变量,如果未初始化,其值是不确定的
Java中变量使用前,须初始化或赋值(实例化时,类中的全局变量会自动被初始化为默认值)
Matlab中变量在写入时不需预先定义,但在读取时应该已被定义
    对于多维变量,为了提高性能,可先定义空的多维变量,如二维char型数组 a = [‘‘;‘‘];
数组长度
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++;
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++/Java中可重载操作符“=”实现等号复制字符串
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: ~=

循环写法
for(i = 0; i < n; ++i) {   // i = 0 ~ n-1
}

for i = 1 : n    % i = 1 ~ n
end

条件分支结构
if(a==0) {
} else if(a==1) {
} else {
}

if a==0
elseif a==1
else
end

函数定义
C语言:函数只能有一个返回值,多个返回值可通过定义结构体、使用指针作为参数传入函数实现
Matlab:函数可有多个返回值,通过[a b] = func()获取

代码优化
Matlab中尽可能多使用矩阵变换运算,而少采用循环的方式

本文由PurpleSword(jzj1993)原创,转载请注明
原文网址 http://blog.csdn.net/jzj1993/article/details/18987073

Matlab与C/C++/Java的一些区别

上一篇:Kubernetes部署官网Dashboard


下一篇:kubeadm 部署 Kubernetes 集群