发布时间 : 星期四 文章MATLAB程序设计与应用上 - 图文更新完毕开始阅读
第二章 数变、量和表达式
程序设计与运行结果:
>> clear
a=[0 1 1 0]; b=[1 1 0 0]; X= xor(a,b) X =
1 0 1 0 程序说明:
1. 矩阵a 与b以xor(异或)逻辑运算。
2. 若相应的两个数一个为0,一个非0,则结果为1,否则为0。
2-2 常量和变量
2-2-1 数字量
量可以分为常量和变量。要正确理解数字量,就应注意区分下列概念,即标量与矢量、数组与矩阵、复数与虚数,在这里我们对这3组概念只进行简单的介绍。
就所有的物理量而言,可分为标量与矢量。所谓标量就是只有大小而没有其他的含义,例如:5个苹果,体重75kg等。而矢量是既有大小又有方向,两者缺一不可。若有流量以6?10km/h的速度撞向地球,这时速度就是一个矢量,它除描述了速度大小外,还说明了速度的方向,即向地球飞来。另外,矢量与标量不同还表现在,标量可以直接利用四则运算计算,而矢量则不可以。
数组与矩阵量是完全不同的两个概念,所谓数组是由一连串具有逻辑关系的标量组成的,数组可以具有行或列的性质,或是同时具有行与列的性质,但它仍然是标量。矩阵则不然,矩阵是矢量的一种延伸,它们之间是一种矢量的组合。
在MATLAB中,数组与矩阵的计算方法是完全不同的,大家应多加注意。 复数的定义是:
5Z?a?bi
式中a是实部,b是虚部,就是虚数。 复数的格式如下:
复数=常数+常数i
或 复数=常数+常数j
2-2-2 字符量
在MATLAB的编程中我们还会用到字符变量和字符串变量,这个量表示一个字符或者一串字符。其定义格式如下:
chr=?字符? string=?字符串? 例:2-10
给出一个定义字符变量和字符串变量的例子。 程序设计与运行结果:
15
MATLAB程序设计与实例应用
>> clear
chr='H' % 定义字符变量 chr = H
>> string='abcdEFG' % 定义字符串变量 string = abcdEFG 程序说明:
注意,不能用数字量的运算对字符变量和字符串变量进行各种运算,否则会得到错误的结果。
2-2-3 变量的基本规定和运算
要表达一个数列或矩阵,均必须以变量的形式来表示。变量的表达格式如下:
变量=表达式
变量在MATLAB中的定义如下: 1. 变量的第一个字母必须是英文。 2. 变量可以由数字,字母或“_”组成。 其中注意:
? MATLAB只识别变量名称的前18个字符,后面的字符无效。
? 任何的变量均被视为一个矩阵,单一的数也不过是矩阵的最简单的形式。 ? 凡以“i”或“j”结尾的变量,均以复数处理,如a=5i表示a=0 + 5.0000i。
在Command Windows的状态下,所有的变量均存在于工作区(Workspace)中,我们只要输入“who”就可以看到工作区中所有曾经设置并保存至今有效的变量。如果输入“whos”,不但会显示所有的变量,而且会将该变量的名称、性质等都显示出来。“what”则会显示目录中的文件。例如,我们在工作区中还保留着a=5i、chr='H'和string='abcdEFG',则我们可以得到:
>> who
Your variables are: a chr string >> whos
Name Size Bytes Class
a 1x1 16 double array (complex) chr 1x1 2 char array string 1x7 14 char array Grand total is 9 elements using 32 bytes >> what
M-files in the current directory C:\\MATLAB701\\work Untitled6 var
清除已存在的变量用 “clear”命令,清除图形用“clf”,清除坐标用“cla”,如果是针对某一特殊的变量、图形、坐标,可直接在命令后跟相关的变量、图形、坐标。如要清除工作区中的变量a,可
16
第二章 数变、量和表达式
以用命令
>> clear a 例:2-11
设a=1+2i,b=3+4i,求c=a + b的值? 程序设计与运行结果:
>> clear a=1+2i; b=3+4i; c=a+b c =
4.0000 + 6.0000i 程序说明:
1. 这个例子说明在复数相加中,实数部分与实数部分相加,而虚数部分与虚数部分相加。 2. 若没有特殊的声明,MATLAB在复数的运算中自动取到小数点后四位为有效数字。 例:2-12
在MATLAB中直接键入i会有什么结果? 程序设计与运行结果:
>> clear i ans =
0 + 1.0000i 程序说明:
当在MATLAB中直接键入i时,MATLAB系统会直接辨认出i值,认为其为虚数,所以出现上面的结果。于是,当我们把i或j当作一般的变量赋值时,MATLAB将不再把它们视为复数的虚数部分,而当作一般的变量来处理。如果输入i=100,则系统认为变量i的值为100。因此,建议i或j这两个字符不要作为一般变量使用,以免系统在做复数运算时由于混淆不清而造成错误。
例:2-13
在MATLAB命令窗口运行A=[1,2;3,4]+i*[5,6;7,8],看结果如何? 程序设计与运行结果:
>> clear
A=[1,2;3,4]+i*[5.,6;7,8] A =
1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i 程序说明:
常会有很多人发生概念上的混淆,事实上A是一个矩阵,并且是复数矩阵。 例:2-14
17
MATLAB程序设计与实例应用
如果将A=[1,2;3,4]+i*[5,6;7,8]的*去掉A=[1,2;3,4]+i [5,6;7,8],看结果如何? 程序设计与运行结果:
>> clear
A=[1,2;3,4]+i[5,6;7,8] ??? A=[1,2;3,4]+i[5.,6;7,8] |
Error: Unbalanced or misused parentheses or brackets. 程序说明:
这种矩阵是毫无意义的,因为在右边的式子i[5.,6;7,8]中,这种写法没有明确的定义 [5,6;7,8]与i的关系。
注意我们平时把“a?b”写作ab,在MATLAB中这种运算的书写方式是行不通的,必须明确写出a和b的运算符。 例:2-15
变量的有效数字可以依据需要不同,使用format命令来定义。format缺省值是short,显示小数后面4位有效数字。而format long其精度可达到小数点后面15位。分别用format short和format long显示pi,即圆周率?。 程序设计与运行结果:
>> clear format short pi ans = 3.1416 >> format long pi ans =
3.14159265358979 程序说明:
如果不输入format short显示结果仍然一样,但输入format long后显示结果就是长格式了,如果要回到原来缺省值时的情况还需再输入format short。
例:2-16
设a=22/7;则format short如何? 程序设计与运行结果:
>> clear format short a=22/7 a =
3.1429 程序说明:
18