1.变量和常量
1》MATLAB中的变量无须事先定义,一个变量以其名称在语句命令中第一次合法出现而定义,运算表达式中不允许出现未定义的变量,MATLAB会自动生成变量并根据变量的操作确定其类型。
好吧,我承认好绕,举个栗子:
(什么?想知道Line8-Line18什么意思?以后再说,免得跑题)
上述代码Run之后得图如下:
细心的同学也许已经发现x1和x2是用长度不同的向量点乘得到的,多出来的那一段数据自动就补零了。当然,看不出来也没关系,补一补课就好了。
2》变量名区分大小写。
区分大小写:C、C++、C#、MATLAB、Java、Python等
不区分大小写:VB、Pascal、SQL、CMD等
3》变量名须以英文字母开始,之后可以用字母、数字和下划线,但不能用空格和标点符号。
4》常量是指那些在MATLAB中已经预先定义其数值的变量,某些常量也可作为变量使用,如 i 既表示虚数单位,也可用作变量。
5》已经预定义的默认常量
pi:圆周率;
NaN或nan:不定值(0/0);
i或j:虚数单位√(-1);
INF或inf:无穷大;
eps:浮点数相对误差;
ANS或ans:默认变量名,以应答最近一次操作运算结果。
6》变量的显示
任何MATLAB执行结果只要行语句后面没有“;”都能显示在命令窗口上,未指定变量时,结果赋值给变量ans。
显示格式-format命令:只影响结果显示,不影响其计算和存储(双精度浮点数)。Matlab中常用的显示格式有:
(1)format (short):表示5位近似定点数
(2)format long:15位近似定点数
(3)format hex:十六进制表示
(4)format bank:银行格式,固定元和分
(5)format rat:最小正数比例(分数)表示
7》变量存取
“save ”:将工作空间中全部变量存入“.mat”文件中去,省略文件名则默认文件名为“matlab.mat”。
“save ”:指出的变量存入“.mat”文件中去。
“load ”:将“.mat”文件中指出的磁盘中文件中的数据依次读入名称“”相同的工作空间中的变量中去,省略文件名则从默认文件名为“matlab.mat”中读取数据。
2. 字符串
字符串作为字符数组用单引号(')引用到程序中,还可进行字符串运算,也可与数值进行转化,或执行与字符串有关的操作。
3. 元胞数组
元胞数组是MATLAB中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的数据类型,概念和c语言里面的结构体很类似。
4. 架构数组
与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:
x.real = 0; % 创建字段名为real,并为该字段赋值为0
x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0
则输出:
x =
real: 0
imag: 0
然后可以将旗动态扩充为数组:
x(2).real = 0; % 将x扩充为1×2的结构数组
x(2).imag = 0;
在任何需要的时候,也可以为数组动态扩充字段,如增加字段scale:
x(1).scale = 0;
这样,所有x都增加了一个scale字段,而x(1)之外的其他变量的scale字段为空:
x(1) % 查看结构数组的第一个元素的各个字段的内容
则输出:
ans =
real: 0
imag: 0
scale: 0
x(2) % 查看结构数组的第二个元素的各个字段的内容,注意没有赋值的字段为空
则输出:
ans =
real: 0
imag: 0
scale: []
应该注意的是,x的real、imag、scale字段不一定是单个数据元素,它们可以是任意数据类型,可以是向量、数组、矩阵甚至是其他结构变量或元胞数组,而且不同字段之间其数据类型不需要相同。例如:
clear x; x.real = [1 2 3 4 5]; x.imag = ones(10,10);
数组中不同元素的同一字段的数据类型也不要求一样:
x(2).real = '123';
x(2).imag = rand(5,1);
甚至还可以通过引用数组字段来定义结构数据类型的某字段:
x(3).real = x(1); x(3).imag = 3; x(3)
则输出:
ans =
real: [1x1 struct]
imag: 3
下面看一个实际的例子来熟悉直接引用方式定义与显示结构。
1》 温室数据(包括温室名、容量、温度、湿度等)的创建与显示。
(1) 直接对域赋值法产生结构变量
green_house.name = '一号温室'; % 创建温室名字段
green_house.volume = '2000立方米'; % 创建温室容量字段
29.7 31.1 30.9 29.6];
62.0 61.9 59.2 57.5];
(2)显示结构变量的内容
green_house % 显示结构变量结构
green_house =
name: '一号温室'
volume: '2000立方米'
parameter: [1x1 struct]
green_house.parameter % 用域作用符号. 显示指定域(parameter)中内容
ans =
temperature: [2x4 double]
humidity: [2x4 double]
ans =
31.2000 30.4000 31.6000 28.7000
29.7000 31.1000 30.9000 29.6000
2》在上例的基础上,创建结构数组用以保存一个温室群的数据。
green_house(2,3).name = '六号温室'; %产生2×3结构数组
green_house % 显示结构数组的结构
green_house =
2x3 struct array with fields:
name
volume
parameter
green_house(2,3) % 显示结构数组元素的结构
ans =
name: '六号温室'
volume: []
parameter: []
秦巴布衣清风徐来
公众号ID:还没想好
关注
清风徐来 | 鬼见愁乔佳 | 喜欢文字的你
日常更新一些关于技术后沿和小众文化的骚操作
领取专属 10元无门槛券
私享最新 技术干货