数据类型
1、逻辑型(logical)
该类型变量值为1或0、true或false。
2、字符型(char)
(1)字符型的创建
Matlab的字符型输入需使用单引号,字符串存储为字符数组,每个元素占一个ASCII字符。
维度必须相同,可以用空格补齐。
(2)字符串比较:
strcmp(str1,str2): 比较两个字符串是否一样,一样返回1,否则返回0。
strncmp(str1,str2,m): 比较两个字符串前m个字符是否一样,一样返回1,否则返回0。
==: 逐一比较每个字符,其他的也一样
(3)字符串的聚合:
int2str(m): m为整型
sprintf(%d,m): 和C一样
strcat(str1,str2): 两个字符串结合,可多个字符串
(4)字符串的搜索和替换
newStr = strrep(str,old,new) : 将 str 中出现的所有 old 都替换为 new。
findstr(s1,s2): 在较长的字符串中查找较短的字符串出现的次数,并返回其位置,因此无论s1,s2哪个为长字符串,位置在前在后都没有关系。
strtok(str): 从左到右解析 str,使用空白字符作为分隔符,并返回部分或全部文本。
strvcat(str1,str2,…): 垂直连接多个字符串
3、数值型(numeric)
format rat
rat:用分数表示
hex:16进制表示
short:短型,小数点后保留4位
long:长型,double 15位,single 7位
shortE:短的科学计数法表示,小数点后面保留4位
longE:长的科学计数法表示,double 15位,single 7位
(1)整型
- 有符号整数(int8,int16, int32 ,int64)
- 无符号整数(uint8,uint16, uint32 ,uint64)
其中u为Unsigned的缩写。
取整函数:
- 向下取整floor
a=floor(3.6) %结果为3
- 向上取整ceil
a=ceil(3.4) %结果为4
- 取最接近的整数round
a=round(3.5) %结果为4
a=round(3.4) %结果为3
- 向0取整fix
a=fix(3.9) %结果为3
(2)浮点型
-
单精度浮点型(single)
single不能与整数进行直接运算。 -
双精度浮点型(double)
double与其他类型的运算结果由其他数据类型决定。
(3)复数型
i或j为虚部标志
- complex(a,b)为构造函数 a为实部 b为虚部
- real()为返回实部
- abs()为返回模
- conj()为返回共轭复数
4、元胞数组(cell)
Matlab的元胞数组可存储任意类型和维度的数组。访问元胞数组的变量需使用大括号{}。
(1)创建单元数组
通过索引赋值创建:
cell函数创建,再通过赋值语句赋值
(2)获取单元数组的内容
B(1,1) % 获取1,1位置的内容
B(: ) %获取全部
(3)单元数组的重塑和删除
reshape(A,m,n): m x n为元素A的维度
5、结构体(structure)
和C语言类似,一个结构体可以通过不同字段存储不同类型的数据。
直接赋值方式创建:
student.name={‘张三’,‘李四’,‘王五’};
student.age={‘18’,‘16’,‘19’};
student
student =
包含以下字段的 struct:
name: {‘张三’ ‘李四’ ‘王五’}
age: {‘18’ ‘16’ ‘19’}
用struct函数创建:
student=struct(‘name’,‘Jason’,‘class’,‘class 3’,‘results’,{‘English’,‘Maths’;85,95},‘system’,[1,2,3;4,5,6;7,8,9]);
student
student =
包含以下字段的 2×2 struct 数组:
name
class
results
system
6、表格(table)
表格可以包含不同类型的数组,用于存储表格类的数据。
(1)使用table函数创建表
ID={‘1’;‘2’;‘3’;‘4’};
Name={‘张三’;‘李四’;‘杨二’;‘王五’};
Age=[18;19;20;17];
T=table(Name,Age,‘RowNames’,ID)
T =
4×2 table
Name Age
______ ___
1 ‘张三’ 18
2 ‘李四’ 19
3 ‘杨二’ 20
4 ‘王五’ 17
T=table(ID,Name,Age)
T =
4×3 table
ID Name Age
___ ______ ___
‘1’ ‘张三’ 18
‘2’ ‘李四’ 19
‘3’ ‘杨二’ 20
‘4’ ‘王五’ 17
(2) 表的运算
intersect(table1,table2): 求两个表的交集
setdiff(table1,table2): 差集 属于1,不属于2
==union(table1,table2):==并集
(3)表的转换
array2table(A): 将数组转换为表
table2array(T): 将表转换为数组
A=[ 1 2 3 ; 4 5 6 ; 7 8 9];
T=array2table(A)
T =
3×3 table
A1 A2 A3
__ __ __
1 2 3
4 5 6
7 8 9
7、函数句柄(function handle)
函数句柄可用于间接调用一个函数的Matlab值或数据类型。
句柄的使用格式:
变量名=@(输入参数列表)运算表达式
例如计算一个数的平方可以写成如下格式:
mysqr=@(x)x.*x;
%第一个(x)为输入的参数,而后面 x.* x 则为数学意义上的x^2; 因为matlab默认的计算单位为矩阵,所以对于加减乘除计算,matlab分别对应 “ .* ”和“ * ”
.m文件中:
function f=myfun(x)
f=-(3-2.*x).^2. * x;
命令行:
x=fminbnd (@myfun,0,1.5)
x =
0.500014061731714
[x,fv]=fminbnd (@myfun,0,1.5)
x =
0.500014061731714
fv =
-1.999999998813617
fplot(@(x) (3-2.*x).^2. * x)