Matlab内数据及数据类型转换
Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、⽇期和时间、结构数组、单元格数组以及函数句柄等。
1. 整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class)函数返回该类整型的最⼤值和最
⼩值,例如 intmax(‘int8’)=127;
int8()有符号,占⽤1个字节。向⽆穷⼤⽅向取整:正数向正⽆穷⼤⽅向,负数向负⽆穷⼤⽅向取整。
int16():有符号,占⽤2个字节。向⽆穷⼤⽅向取整:正数向正⽆穷⼤⽅向,负数向负⽆穷⼤⽅向取整。
int32():有符号,占⽤4个字节。向⽆穷⼤⽅向取整:正数向正⽆穷⼤⽅向,负数向负⽆穷⼤⽅向取整。
数组转换成字符串int64():有符号,占⽤8个字节。向⽆穷⼤⽅向取整:正数向正⽆穷⼤⽅向,负数向负⽆穷⼤⽅向取整。
uint8():⽆符号,占⽤1个字节。向0⽅向取整。
uint16():⽆符号,占⽤2个字节。向0⽅向取整。
uint32():⽆符号,占⽤4个字节。向0⽅向取整。
uint64():⽆符号,占⽤8个字节。向0⽅向取整。
⽤whos观察变量的数据类型
2. 浮点:(single;double)
浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最⼤值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最⼩值。
Matlab 取整函数有: fix, floor, ceil, round.
fix 朝零⽅向取整, fix(-1.3)=-1; fix(1.3)=1;
floor 朝负⽆穷⽅向取整,floor(-1.3)=-2; floor(1.3)=1;
ceil 朝正⽆穷⽅向取整, ceil(-1.3)=-1; ceil(1.3)=2;
round 四舍五⼊到最近的整数, round(-1.3)=-1;round(-1.52)=-2;
1.000 处理成 1 ⽤ floor round fix 都⾏ 但如果是去掉尾巴的取整,⽤ floor
3. 逻辑:(logical)
函数logical()将数值型数据转换成逻辑型数据。
下例是逻辑索引在矩阵操作中的应⽤,将5*5矩阵中⼤于0.5的元素设定为0: A = rand(5); A(A>0.5)=0;
4. 字符: (char)
Matlab中的输⼊字符需使⽤单引号。字符串存储为字符数组,每个元素占⽤⼀个ASCII字符。如⽇期字符:DateString=’9/16/2001’实际上是⼀个1⾏9列向量。构成矩阵或向量的⾏字符串长度必须相同。
可以使⽤char函数构建字符数组,使⽤strcat函数连接字符。
例如,命令name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使⽤char函数:char(‘abc’,’abcd’),Matlab⾃动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数.
例如size(char(‘abc’,’abcd’)) 返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某⼀字符元素,需要使⽤deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。
此外,Matlab同时提供⼀种更灵活的单元格数组⽅法,使⽤函数cellstr可以将字符串数组转换为单元格数组:
->? 4
cdata=cellstr(data)      length(cdata{1})
->?3```
**常⽤的字符操作函数**
blanks(n) 返回n个空字符
blanks(n) 返回n个空字符
deblank(s) 移除字符串尾部包含的空字符
(string) 将字符串作为命令执⾏
findstr(s1,s2) 搜索字符串
ischar(s) 判断是否字符串
isletter(s) 判断是否字母
lower(s) 转换⼩写
upper(s) 转换⼤写
strcmp(s1,s2) ⽐较字符串是否相同
strncmp(s1,s2,n) ⽐较字符串中的前n个字符是否相同
strrep(s1,s2,s3) 将s1中的字符s2替换为s3
int2str 将整数转换为字符串
lower 把字符串变成⼩写
mat2str 将数组转换为字符串
num2str 把数值转换为字符串
strcat 把多个串连接成长串
strcmp ⽐较字符串
strcmpi ⽐较字符串(忽略⼤⼩写)
strings MATLAB 中的字符串
strjust 字符串的对齐⽅式
strmatch 逐⾏搜索串
strnomp ⽐较字符串的前N 个字符
strncmpi ⽐较字符串的前N 个字符(忽略⼤⼩写)
strrep ⽤另⼀个串代替⼀个串中的⼦串
strtok 删除串中的指定⼦串
strvcat 创建字符串数组
str2mat 将字符串转换为含有空格的数组
str2num 将字符串转换为数值
5. ⽇期和时间
Matlab提供三种⽇期格式:⽇期字符串如’1996-10-02’,⽇期序列数如729300(0000年1⽉1⽇为1)以及⽇期向量如 1996 10 2 0 0 0,依次为年⽉⽇时分秒。
**常⽤的⽇期操作函数**
datestr(d,f) 将⽇期数字转换为字符串
datenum(str,f) 将字符串转换为⽇期数字
datevec(str) ⽇期字符串转换向量
weekday(d) 计算星期数
eomday(yr,mth) 计算指定⽉份最后⼀天
calendar(str) 返回⽇历矩阵
clock 当前⽇期和时间的⽇期向量
date 当前⽇期字符串
now 当前⽇期和时间的序列数
6. 结构
结构是包含已命名“数据容器”或字段的数组。结构中的字段可以包含任何数据。
**构建结构数组**
(1) 赋值⽅法
下⾯的赋值命令产⽣⼀个名为patient的结构数组,该数组包含三个字段:
`patient.name = 'John Doe';
patient.billing = 127.00;
%在命令区内输⼊patient可以查看结构信息:
name: 'John Doe'billing: 127test: [3x3 double]
%继续赋值可扩展该结构数组:
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
赋值后结构数组变为[1 2]。`
(2) 构建结构数组:struct函数函数基本形式为:
`strArray = struct('field1',val1,'field2',val2, ...)`
例如:
`weather(1) = struct('temp', 72,'rainfall', 0.0);
weather(2) = struct('temp', 71,'rainfall', 0.1);
weather = repmat(struct('temp', 72, 'rainfall', 0.0), 1, 3);
weather = struct('temp', {68, 80, 72}, 'rainfall', {0.2, 0.4, 0.0});`
(3) 访问结构数据
以下都是合法的结构数组访问命令:
mypatients = patient(1:2) 获取⼦结构数据
mypatients(1) 访问结构数据
patient(2).name 访问结构数据中的特定字段
patient(3).test(2,2) 访问结构数据中的特定字段(该字段为数组)
bills = [patient.billing] 访问多个结构
tests = {patient(1:2).test} 提取结构数据转换成单元格数组
**使⽤结构字段的动态名称**
通过structName.(expression_r_r_r)可以赋予结构字段名称并访问数据。例如字段名为expression_r_r_r、结构名为structName,访问其中第7⾏1⾄25列数据可以使⽤命令:`stru
`stru
型。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。