本文由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 % bMatlab: mod(a, b)不等于
C语言: !=Matlab: ~=
循环写法
for(i = 0; i < n; ++i) { // i = 0 ~ n-1}for i = 1 : n % i = 1 ~ nend
条件分支结构
if(a==0) {} else if(a==1) {} else {}if a==0elseif a==1elseend
函数定义
C语言:函数只能有一个返回值,多个返回值可通过定义结构体、使用指针作为参数传入函数实现Matlab:函数可有多个返回值,通过[a b] = func()获取
代码优化
Matlab中尽可能多使用矩阵变换运算,而少采用循环的方式
本文由PurpleSword(jzj1993)原创,转载请注明
原文网址 http://blog.csdn.net/jzj1993/article/details/18987073