2.2 MATLAB变量的初始化
当变量初始化时,MATLAB将会自动建立变量。有三种方式初始化MATLAB中的变量:
1.用赋值语句初始化变量
2.用input函数从键盘输入初始化变量
3.从文件读取一个数据
2.2.1 用赋值语句初始化变量
最简单的创建和初始化一个变量的方法是用赋值语句赋予变量一个或多个值。赋值语句的一般形式如下
var = expression
var是变量名,expression可以是一个标量、一个数组或常量、其他变量和数学运算符号(+、-)的联合。这个表达式(expression)的值是通过一般的数学运算法则计算出来的,然后将产生的结果存储到变量var中。下面是一些用赋值语句初始化的变量:
var=40*i; var2=var/5; array=[1 2 3 4]; x=1; y=2;
第一个例子创建了一个double类型的标量变量,存储了一个虚数40i。第二个例子创建了一个表达式var2,把var/5的值存储于内。第三个例子创建了一个数组array,并存储了一个4元素的行向量于内。最后一个例子显示了多个赋值语句可写在同一行,中间用逗号或分号隔开。注意如果在赋值语句执行时变量已经存在,那么这个变量原有的值将被覆盖。
正如第三个例子显示的,数据数组也可以初始化变量。我们可以用是括号()和分号建立数组。所有元素按行阶排序,换句话说,每一行的值从左向右,顶部的行置于最前,底部的行置于最后。在一行内单个数值可用空格或逗号隔开,而行与行之间要与则用分号隔开,或另起一行书写。下面的表达式都是合法的,能用于建立一个变量:
| [3.4] | 这个表达式创建了1×1数组(一个标量),包含数值3.4.这时括号可以省略. | | [1.0 2.0 3.0] | 这个表达式创建了1×3数组,一维行向量[1 2 3] | | [1.0;2.0;3.0] | 表达式创建了一个3×1数组,一维列向量file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif | | [1,2,3;4,5,6] | 这个表达式创建了一个2×3数组,矩阵file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif | | [1,2,3 | 这个表达式创建了一个2×3数组,矩阵file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif | | [] | 是个空数组,没有行,没有列(注意他与元素全为零的数组的区别) |
注意一个数组每一行元素的个数必须完全相同,每一列元素的个数也必须完全相同.像[1 2 3;4 5]这样的表达式是非法的,因为第一行有3个元素,第二行有只有2个元素.
常见编程错误
每一行元素的个数必须完全相同,每一列元素的个数也必须完全相同.试图创建一个不同行(列)拥有不同数目元素的数组,在编译时将会出现错误.
用于初始化数组的表达式可以包括代数符号或事先已经定义好的数组.例如赋值语句
a=[0 1+7] b=[a(2) 7 a
定义了数组a=[0 8]和数组b=[8 7 0 8].
当我们创建一个数组时,不是每一个元素都必须定义.如果要定义一个特殊的数组,或只有一个或几个元素没有定义,那么之前的那些元素将会自动创建,并初始化为0.例如,如果数组c事先没有定义,语句c(2,3)=5将会创建一矩阵file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif。相似地,指定一个值赋予一个存在的数组,但超过了这个数组的大小。例如,假设存在一数组d=[1 2],下面这个语句
d(4)=4;
将会制造出数组d=[1 2 0 4].
在每个赋值语句末的分号有特殊的目的:无论在何时一个表达式在赋值语句中被赋值,分号将会中止变量值的重复。如果句末没有分号,变量值将会自动显示在命令窗口(The Command Windows)中。
>> e=[1 2 3;4 5 6] e = 1 2 3 4 5 6
如果在赋值语句末有分号,这种重复将会消失。重复是一个用于检查你的工作极好的方法,但是它降低了运行速度。因此,我们在一般情况下总是禁止重复。尽管如此,重复计算的结果提供了一个强大的应急调试器。如果你不能确定一个特定的赋值语句结果是多少,这时你可以去掉这个语句后的分号,当这个语句编译时,结果会显示在命令窗口(The Command Windows)。
好的编程习惯
在MATLAB赋值语句后加上一个分号来禁止变量值在命令窗口(The Command Windows)的重复。这将大大提高编译的速度。
好的编程习惯
如果你在调试程序时需要检测一个语句的结果,可能把句后的分号去掉,这样结果将会出现在命令窗口(The Command Windows)。
|