MATLAB:变量类型与赋值
时间:2023-11-20 23:07:01
1.数值变量
MATLAB所有的数值变量都是矩阵。赋值时,以方括号为开头和结尾,用英文逗号或空分割同行元素,用英文分号分割各列。Command Window里输入
a= [1 2;3 4]
可见运算结果,a是数值变量。workspace田字形的变量出现在里面a,说明变量a的类型是数值型。
以下是行向量和列向量的特殊矩阵,
- a= [1 2]
- a= [1;2]
a= [1] 可以简写为 a=1 是数字。
数值变量的命名要求是英文字母的开头,不能包含特殊符号,大小写敏感。建议用下划线进行分割,例如value_of_A,这与其他编程语言的命名规则大致相同。
等差数列有时需要用于赋值,例如定义一个向量a=[1 2 3],如果比较长,赋值很麻烦,所以 MATLAB提供了一个简单的方法。
a= [1:1:3] 两个冒号意味着[初始值:步长:终值]。
当步长为1时,步长和冒号可以省略,因此可以简称为 a=1:3
另一种灵活的赋值方法是在变量名后面加圆括号,在圆括号中加序号。
a= [1 2;3 4]
定义变量a后,
b=a (1,2)
可以赋值a的第一行第二列元素b,当然也可以用
a(1,2)=1
修改矩阵中部分元素的值。需要注意的是,序号必须是自然数,而不是零。当矩阵中有多个元素需要赋值时,可以将序号部分改为向量,
例如a ([1 2],[1 2])=[1 2;3 4]
把行数和列数都用向量表示,就是说对矩阵a的第1和2行,第1和2列,总共4个元素赋值。也可以有a([1 2],1)表示a的第一列也可以写成 a(1:end,1)
这里的end表示终点,即a的行数2,也可以进一步简写 a(:,1)
这里的冒号表示从头到尾。这种赋值方法是最常用的,但基本语法非常简单。方括号表示矩阵的开始和结束,圆括号表示从矩阵中选择部分。掌握这一原则有利于阅读程序。
当然也可以分块矩阵 b=[a a]
但需要注意的是,方括号中的元素必须满足矩阵的行列数要求,例如
a= [1 1]
b= [1;1]
c= [a b]
会导致错误,因为在这个时候 MATLABC的行列数无法确定。
2.符号变量
一般来说,符号变量比数值变量简单得多,因为变化很小。常用的赋值命令是
syms a b
这里syms这意味着在这里定义一些符号变量,a与b是变量名,符号变量的命名规则与数值变量相同。有时也使用
syms a real
强调a是实数变量,具体可以
doc syms 得到帮助。
此时可以定义一些变量之间的依赖关系
syms x y(x)
x是符号变量,y是符号变量,y的值由x决定,相当于数学中函数的概念。当然,具体的函数关系没有明确规定。
syms x y z(x,y)
定义符号变量z,z依赖x和y。这相当于二元函数的概念。这里的圆括号明显不同于数值变量中的圆括号,这也是学习 MATLAB最不习惯的地方,同一个符号,因为不同的变量类型会有完全不同的含义。所以在学习 MATLAB在此过程中,必须区分数值变量和符号变量。
上述方法定义的符号变量是一个数字,或1*1矩阵, MATLAB符号矩阵也可以定义,例如
syms a11 a12 a21 a22
A=[a11 a12;a21 a22]
就可以获得一个矩阵符号变量A。
定义符号变量后,workspace中出现相应的变量名,图形不是数值变量的田字形,而是方框里有个立方体,双击后可以看到行列数。
3.字符串
比数值、符号更为简单的就是字符串了,其定义方法是以单引号开头和结尾,例如
a='hello world'
就定义了一个字符串a。 MATLAB中,字符串可视为行向量,例如
b='hello '
c='world'
a= [b c]
也可以获得字符串a,有时也可以将字符串视为矩阵,
例如
a=['ab';'cd']
但这种用法很罕见,同时要求各行字符串长度一样,否则将违反矩阵行列数规定。
当然字符串的值也可以是特殊符号,比如
- ','
就定义了逗号,而最特殊的就是定义单引号,因为单引号会和字符串定义中的单引号混淆,因此 MATLAB中用两个单引号表示一个单引号,也就是
- a=''''
表示a是一个字符变量,值是一个单引号。语句中第一和第四个单引号是字符串类型的开头和结尾,中间两个单引号用来表示一个单引号。
定义字符串变量后,workspace中出现相应的变量名,图像是方框里写了ch,双击后可以看到行列数。