x语言和matlab语言中的if,Matlab编程和其他语言的区别

一、字符和字符串

在MATLAB中不管是字符,还是字符串都是用单引号。而在C、C++、C#、Java等语言中,字符是用单引号的,字符串则必须用双引号。因此在MATLAB中如果需要在字符串中用到单引号的话,就要用两个单引号来代替。

如:

>> a='this''is an apple'

a =

this'is an apple

同理,如果字符串中需要双引号的话,可以用四个单引号来代替。如下:

>> b='I''''am Tim'

b =

I''am Tim

在MATLAB中的字符串连接,我们可以使用一对中括号。当然,这种连接方式也适用于向量、矩阵等的连接。如下:

>> c=[a b]

c =

this'is an appleI''am Tim

>> a1=[1 2];b1=[3 4];

>> c1=[a1 b1]

c1 =

1     2     3     4

>> c2=[a1;b1]

c2 =

1     2

3     4

但是,对于字符串的连接不能使用加号(+)来进行。这点和在C++、C#、Java等语言中是不一样的。因为在MATLAB中这些字符串也是以矩阵的形式存储的,你要是用加号的话,需要两个矩阵的大小一致。比如:

>> a2='hello';b2='mustb';

>> a2+b2

ans =

213   218   223   224   209

但是,很明显,加完之后都是一系列的值了。本来,这些字符串也是以数值的形式存储的。而我们要取的字符串中某一个字符的时候,也是很方便的,直接像引用矩阵的元素一样。如下:

>> a2(1)

ans =

h

>> a2(4)

ans =

l

>> find(a2>'i')

ans =

3     4     5

可以看到,a2里面在字母i后面的字符有第3、4、5个字符,也就是llo了。

在MATLAB中要将一个数字转换为字符可以用num2str,将字符转换为数字可以用str2num。如下:

>> stra1=num2str(a1)

stra1 =

1  2

>> class(stra1)

ans =

char

>> strb1='[3 4]';

>> str2num(strb1)

ans =

3     4

对于strb1,我们可以使用eval函数,该函数可以将字符串作为一个MATLAB命令去执行。如下:

>> p=eval(strb1)

p =

3     4

相当于p=[3 4]。

当然了,C语言里面的sprintf、fprintf函数我们都是可以在MATLAB中使用的。比如:

>> sprintf('Tim is %d years old.',24)

ans =

Tim is 24 years old.

至于fprintf函数,则需要用fopen去打开一个文件,然后写入数据进去。如下:

>> fd=fopen('a.txt','w+');

>> fprintf(fd,'I am Tim.\n');

>> fprintf(fd,'My age is %d\n',24);

>> fclose(fd);

然后,用MATLAB Editor打开MATLAB当前目录下的a.txt就可以看到:

6d2ecab1625786e16fddbe91323d7074.png

但是,当你用记事本打开的时候会看到:

c7a1ee613daaabf599edb61becd82749.png

这是因为在Windows上要想换行需要\r\n,而不能单是\n。

二、if语句、for语句、switch语句、while语句、try-catch语句都以end结尾

在MATLAB中,没有goto和do…loop和do…while语句。而且语句的结尾都是以end结尾的。

>> t=4;

>> if(t<5),disp('t is smaller than 5.'),end

t is smaller than 5.

当然,if语句也可以有else语句。

>> if(t>5),disp('t is bigger than 5.'),else,disp('t is smaller than 5.'),end

t is smaller than 5.

还可以用elseif。

>> if(t>5),disp('t is bigger than 5.'),elseif(t==5),disp('t is equal 5.'),else,disp('t is smaller than 5.'),end

t is smaller than 5.

在MATLAB中,由于矩阵的索引都是从1开始的,这点和C、C++、C#、JAVA等语言是不一样的。所以,在循环的时候建议从1开始循环,而且循环的时候不推荐用变量i和j。因为这两个变量在MATLAB中表示的是复数的虚部变量。当然,如果你的程序里面没有复数,就不用怕。如果有复数,就要小心了。

之所以从1开始,是因为大多数时候我们使用循环是为了依次能访问到矩阵的每一个元素,所以,如果矩阵的索引出现了0,那么就会报出错误。所以,从1开始循环,是一种很好的习惯,而不是要求你必须这样做。

而且,在for循环中,你的循环变量不仅可以是一个数,也可以是一个向量。看下面的程序:

>> aa=[1 2;3 4; 5 6;7 8];

>> for i=aa,disp(i),end

1

3

5

7

2

4

6

8

>> aa

aa =

1     2

3     4

5     6

7     8

也就是说,i第一次的值是aa的第一列,i第二次的值是aa的第二列。这样的话,这个循环变量i就不仅仅是一个数了,二是一列数。

在MATLAB中,switch语句中是不用break的,而且默认的选项不是default,而是otherwise。如下:

a=5;

switch(a),

case 1,

disp('a is 1.');

case 2,

disp('a is 2.');

case 5,

disp('a is 5.');

otherwise,

disp('sorry, i do not know.');

end

还需要注意的是case后面没有分号,而C、C++、C#、Java等语言中是必须是分号的。在MATLAB中可是没有分号,我程序中的逗号,也可以是没有的。指向上面的程序,在MATLAB中的输出是:

a is 5.

至于while语句的使用和C、C++、C#、Java等语言中的while基本上是一致的。如下:

a=5;

b=0;

while a>0

b=b+a;

a=a-1;

end

b

a

Matlab命令窗口的输出是这样的:

b =

15

a =

0

try-catch语句一般是用来捕捉错误的。

try

a=input('Input a number:  ');

catch

error('unknown error.');

end

当运行上面的程序,在MATLAB中输入:

Input a number:  #

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值