目录
数值数据
字符串数据
MATLAB数据类型(2)链接(结构数组 元胞数组 逻辑数组简单使用)
写在前面的话
在MATLAB中,当用户传入参数的时侯,MATLAB会自动确定数据类型。如果玩MATLAB只是把它当作一个计算器,那么大可不必深入了解MATLAB的数据类型。但是要想学习MATLAB的奇技淫巧,还是需要掌握MATLAB的数据类型这个基本功。
在正式开始之前,我们应当记住一个函数:class() 作用:确定变量的数据类型。
整型
整型类型 | 取值范围 | 类型标识符(转换函数) |
无符号8位整型 | uint8 | |
带符号8位整型 | int8 | |
无符号16位整型 | uint16 | |
带符号16位整型 | int16 | |
无符号32位整型 | uint32 | |
带符号32位整型 | int32 | |
无符号64位整型 | uint64 | |
带符号64位整型 | int64 |
说明:以无符号8位整型为例,8表示数据存储在内存中占8个bit即用8个二进制数来表示。由于没有符号,数据从0开始,因此最大能表示255,超过255时,数据会被自动赋值为255。这种数据类型在图像处理时非常常见。
在MATLAB中,类型标识符可以直接当函数来使用。
浮点型
浮点类型 | 占用内存大小 | 类型标识符(转换函数) |
单精度浮点型 | 4 bytes | single |
双精度浮点型 | 8 bytes | double |
1byte=8bits=8个二进制数
在MATLAB中,输入的数值数据默认类型为双精度型(double型)。
复数
MATLAB支持复数,但它默认被视为double类型的数。i,j 是系统默认的虚数单位,
a=1+5i或a=1+5*i表示同一个复数(i可以用j替换)。
相关函数 | 说明 | 用法 |
real() | 求复数实部 | real(val) |
imag() | 求复数虚部 | imag(val) |
abs() | 求复数模值 | abs(val) |
angle() | 求复数相角 | angle(val) |
complex() | 生成一个复数 | complex(val1,val2) |
在MATLAB中,字符用两个单引号将字符内容括起来定义。字符串被当作一个向量,它可以像数组一样被索引(引用)。
如:
>>x='beixifen';
>> class(x)
ans =
'char'
>> x(1:3)
ans =
'bei'
字符串的执行
eval(val) 函数把传入的字符串当作MATLAB语句来执行。例如:
>>a='1+1';
>>eval(a)
ans=
2
字符串的ASCII码
字符串在MATLAB中以ASCII码形式存储,使用abs(val)可以求得字符串(数组)对应的ASCII码数组。例如:
>> a='beixifen'
a =
'beixifen'
>> abs(a)
ans =
98 101 105 120 105 102 101 110
字符串连接
在MATLAB 中,可以用中括号将需要连接的字符串按需要的顺序排列,字符串之间可以用逗号,也可以用空格分隔开。例如:
>> a='beixifen';
>> b=[a,'123'] %逗号分隔
b =
'beixifen123'
>> c=[b '456'] %空格分隔
c =
'beixifen123456'
另外,MATLAB提供了专门用于字符连接的函数:strcat。例如:
%接上面的例子
>> d=strcat(c,a)
d =
'beixifen123456beixifen'
字符串的比较
字符串的比较可以利用关系运算,按对应位置字符ASCII码值大小比较,比较时字符串长度需要一致。例如:
>> 'abc'>='abd'
ans =
1×3 logical 数组
1 1 0
此外,MATLAB提供了字符串比较函数,见总结。
字符串的查找
findstr(str1,str2),返回在字符串str1中str2出现的开始位置。例如:
>> findstr('cat cup cut cat','cat')
ans =
1 13
字符串的替换
strrep(str1,str2,str3),将str1中str2替换为str3.例如:
>> strrep('beiduofen','duo','xi')
ans =
'beixifen'
字符串常见函数总结
函数 | 用法 | 作用 |
eval | eval(str) | 把传入的字符串当作MATLAB语句来执行 |
abs | abs(str) | 求得字符串(数组)对应的ASCII码数组 |
strcat | strcat(str1,str2,~,strn) | 将若干字符串连接起来 |
strcmp | strcmp(str1,str2) | 比较str1和str2,相等返回1,不等返回0 |
strncmp | strcmp(str1,str2,n) | 比较str1和str2前n个字符,相等返回1,不等返回0 |
strcmpi | strcmp(str1,str2) | 忽略大小写,比较str1和str2,相等返回1,不等返回0 |
strncmpi | strncmpi(str1,str2,n) | 忽略大小写,比较str1和str2前n个字符,相等返回1,不等返回0 |
findstr | findstr(str1,str2) | 返回在字符串str1中str2出现的开始位置 |
strrep | strrep(str1,str2,str3) | 将str1中str2替换为str3 |
https://blog.csdn.net/Bei_xifen/article/details/82765311