MATLAB入门篇 数值类型

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:还没想好

关注

清风徐来 | 鬼见愁乔佳 | 喜欢文字的你

日常更新一些关于技术后沿和小众文化的骚操作

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180625G0F1BV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券