1、数据类型
MATLAB定义了多种基本数据类型,包括整型、浮点型、字符型、日期型、元胞数组、结构体型和表格等等。MATLAB内部任何数据类型都是按照数组的形式进行存储和运算的。
1.1、常数和变量
1.常数:
matlab常数采用十进制表示,可以用带小数点的形式直接表示,也可以用科学计数法,数值表示范围是
~
.
2.变量
变量是数值计算的基本单元,变量使用时无需定义。
(1)命名规则:
- 变量名区分大小写
- 变量名不能超过63个字符,第63个字符后的字符被忽略
- 变量名必须以字母开头,变量名可以是任意字母、数字或者下划线组成
- 关键字不能用作变量名
(2)特殊变量
特殊变量名 | 取值 | 特殊变量名 | 取值 |
ans | 运算结果的默认变量名 | i或j | i=j= |
pi | 圆周率Π | nargin | 函数的输入变量数目 |
eps | 浮点数的相对误差 | nargout | 函数的输出变量数目 |
inf或INF | 无穷大 | realmin | 最小的可用正实数 |
NaN或nan | 不定值 | realmax | 最大的可用正实数 |
>> 2*pi*5 %使用pi的值运算,将计算结果放入ans
ans =
31.4159
>> 1+2i %i为虚数单位
ans =
1.0000 + 2.0000i
>> 1/0 %结果为无穷大
ans =
Inf
>> 0/0 %结果表示不定值
ans =
NaN
>> %MATLAB中分母为零并不出错
1.2整数和浮点数
1.整数
MATLAB提供了8种内置的整数类型,为了在使用时提高运行速度和存储空间,应该尽量使用字节少的数据类型,可以使用类型转换函数将各种整数类型强制相互转换。
数据类型 | 表示范围 | 字节数 | 类型转换函数 |
uint8 | 0~ | 1 | uint8() |
uint16 | 0~ | 2 | uint16() |
uint32 | 0~ | 4 | uint32() |
uint64 | 0~ | 8 | uint64() |
int8 | 1 | int8() | |
int16 | 2 | int16() | |
int32 | 4 | int32() | |
int64 | 8 | int64() |
2.浮点数
浮点数包括单精度和双精度,双精度为MATLAB默认数据类型。
数据类型 | 存储空间 | 表示范围 | 类型转换函数 |
单精度型single | 4B | -3.40282 | single() |
双精度型double | 8B | double() |
>> %使用类型转换函数转换不同的数据类型
>> x=int8(2.3) %将浮点数转换为8位整数最大为127
x =
int8
2
>> y=int8(2.3e16) %将浮点数转换为八位整数
y =
int8
127
>> z=int16(2.3) %将浮点数转换为16位整数
z =
int16
2
>> x1=1/3
x1 =
0.3333
>> xx=x*x1 %整数与浮点数运算结果为整数
xx =
int8
1
>> y1=single(y) %将整数转换为浮点数
y1 =
single
127
在工作区可以看见各变量在存储空间中占用的字节数;整数与浮点数相乘后运算的结果仍然是整数
3.复数
复数包括实部和虚部,MATLAB用特殊变量i和j表示虚数单位,复数运算不需要特殊处理,可以直接进行。
复数的产生方式:
- z=a+b*i or z=a+b*j
- z=a+bi or z=a+bj
- z=r*exp(i*theta)
- z=complex(a,b)
说明:相角theta以弧度为单位,复数z的实部a=r*cos(theta);虚部b=r*sin(theta)
函数名 | 说明 | 函数名 | 说明 |
real(z) | 返回复数z的实部 | angle(z) | 返回z的幅角 |
imag(z) | 返回复数z的虚部 | abs(z) | 返回z的模 |
conj(z) | 返回复数z的共轭复数 | complex(a,b) | 以a,b分别作为实部和虚部,创建复数 |
>> %使用复数函数实现复数的创建和运算
>> a=3;
>> b=4;
>> c=complex(a,b) %创建复数
c =
3.0000 + 4.0000i
>> r=real(c) %复数的实部
r =
3
>> t=angle(c)*180/pi %复数的相角用角度表示
t =
53.1301
>> cc=conj(c) %共轭复数
cc =
3.0000 - 4.0000i
>> sin(pi^0.5)+log10(tan(1))
ans =
1.1721
>> 2^(3.5*1.7)
ans =
61.8199
>> exp(sin(10))
ans =
0.5804