# Matlab字符串 字符串数组 数据类型转换

26 篇文章 3 订阅
23 篇文章 1 订阅

## 字符串

https://ww2.mathworks.cn/help/matlab/characters-and-strings.html

chr = 'Hello, world'
chr =
'Hello, world'

MATLAB 文档中称为字符向量。
whos chr
Name Size Bytes Class Attributes
chr 1x12 24 char

newChr = 'You''re right'
newChr =
'You're right'
uint16 等函数将字符转换为其数值代码。
chrNumeric = uint16(chr)
chrNumeric =
1×12 uint16 row vector
72 101 108 108 111 44 32 119 111 114 108 100
char 函数将整数向量重新转换为字符。
chrAlpha = char([72 101 108 108 111 44 32 119 111 114 108 100])

• 应用 MATLAB 串联运算符 []。使用分号 (;) 分隔每一行。每一行都必须包含相同数量的字

devTitle = ['Thomas R. Lee'; ...
'Sr. Developer'; ...
'SFTware Corp.']
devTitle =
3×13 char array
'Thomas R. Lee'
'Sr. Developer'
'SFTware Corp.'

mgrTitle = ['Harold A. Jorgensen '; ...
'Assistant Project Manager'; ...
'SFTware Corp. ']

mgrTitle = char('Harold A. Jorgensen', ...
'Assistant Project Manager', 'SFTware Corp.')
mgrTitle =
3×25 char array
'Harold A. Jorgensen '
'Assistant Project Manager'
'SFTware Corp. '

• 应用 MATLAB 串联运算符 []。用逗号或空格分隔输入字符向量。此方法可保留输入数组中

name = 'Thomas R. Lee';
title = 'Sr. Developer';
company = 'SFTware Corp.';
fullName = [name ', ' title ', ' company]
MATLAB 返回
fullName =
'Thomas R. Lee, Sr. Developer, SFTware Corp.'

name = 'myname ';
domain = 'mydomain ';
ext = 'com ';
address = strcat(name, '@', domain, '.', ext)
'myname@mydomain.com'

ischar 确定输入是否为字符数组
isletter 查找输入字符数组中的所有英文字母
isspace 查找输入字符数组中的所有空格字符
isstrprop 查找特定类别的所有字符

chr = 'Find the space characters in this character vector';
% | | | | | | |
% 5 9 15 26 29 34 44
find(isspace(chr))
ans =
5 9 15 26 29 34 44

blanks 函数会创建一个包含空字符的字符向量。创建一个包含 15 个空格字符的向量。字符

chr = blanks(15)
chr =
' '

chr(6:10) = 'AAAAA'
chr =
' AAAAA '

chrLeft = strjust(chr,'left')
chrLeft =
'AAAAA '
chrRight = strjust(chr,'right')
chrRight =
' AAAAA'

chrDeblank = deblank(chr)
chrDeblank =
' AAAAA'

chrTrim = strtrim(chr)
chrTrim =
'AAAAA'

seq = 'GCTAGAATCC';
whos seq
Name Size Bytes Class Attributes
seq 1x10 20 char

seq(4)
ans =
'A'

seq2 = [seq 'ATTAGAAACC']
seq2 =
'GCTAGAATCCATTAGAAACC'

R2016b 中引入了字符串数组。字符串数组可存储文本片段，并提供一组用于将文本按数据进

MATLAB® 提供字符串数组来存储文本片段。字符串数组的每个元素都包含一个 1×n 字符序

t = "Hello, world";

q = "Something ""quoted"" and something else."
q =
"Something "quoted" and something else."

chr = 'Greetings, friend'
chr =
'Greetings, friend'
str = string(chr)
str =
"Greetings, friend"

str = ["Mercury","Gemini","Apollo";
"Skylab","Skylab B","ISS"]
str = 2x3 string array
"Mercury" "Gemini" "Apollo"
"Skylab" "Skylab B" "ISS"

C = {'Mercury','Venus','Earth'}
C = 1x3 cell array
{'Mercury'} {'Venus'} {'Earth'}
str = string(C)
str = 1x3 string array
"Mercury" "Venus" "Earth"

f = 71;
c = (f-32)/1.8;
tempText = "Temperature is " + c + "C"
tempText =
"Temperature is 21.6667C"

A = ["a","bb","ccc"; "dddd","eeeeee","fffffff"]
A =
2×3 string array

strlength(A)

X = [5 10 20 3.1416];
string(X)
ans = 1x4 string array
"5" "10" "20" "3.1416"

d = datetime('now');
string(d)
ans =
"03-Feb-2019 10:12:54"

str1 = ["Mercury","Gemini","Apollo"];
str2 = ["Skylab","Skylab B","ISS"];
str = [str1 str2]
str = 1x6 string array
"Mercury" "Gemini" "Apollo" "Skylab" "Skylab B" "ISS"

str1 = str1';
str2 = str2';
str = [str1 str2];
str = [["Mission:","Station:"] ; str]
str = 4x2 string array
"Mission:" "Station:"
"Mercury" "Skylab"
"Gemini" "Skylab B"
"Apollo" "ISS"

 string 字符串数组 strings 创建不包含字符的字符串数组 join 合并字符串

 char 字符数组 cellstr 转换为字符向量元胞数组 blanks 创建空白字符数组 newline 创建换行符

 compose 将数据格式化为多个字符串 sprintf 将数据格式化为字符串或字符向量 strcat 水平串联字符串 append 合并字符串

 convertCharsToStrings 将字符数组转换为字符串数组，其他数组不变 convertStringsToChars 将字符串数组转换为字符数组，其他数组不变 convertContainedStringsToChars 在元胞数组或结构体的任何级别转换字符串数组

 double 双精度数组 string 字符串数组 str2double 将字符串转换为双精度值 num2str 将数字转换为字符数组
 ischar 确定输入是否为字符数组 iscellstr 确定输入是否为字符向量元胞数组 isstring 确定输入是否为字符串数组 isStringScalar 确定输入是否为包含一个元素的字符串数组

 strlength 字符串长度 isstrprop 确定输入字符串中的哪些字符属于指定类别 isletter 确定哪些字符为字母 isspace 确定哪些字符是空白字符

 contains 确定字符串中是否有模式 count 计算字符串中模式的出现次数 endsWith 确定字符串是否以模式结尾 startsWith 确定字符串是否以模式开头 strfind 在其他字符串中查找字符串 sscanf 从字符串读取格式化数据

 replace 查找并替换一个或多个子字符串 replaceBetween 替换起点和终点之间的子字符串 strrep 查找并替换子字符串
 join 合并字符串 split 在分隔符处拆分字符串 splitlines 在换行符处拆分字符串 strjoin 联接数组中的字符串 strsplit 在指定分隔符处拆分字符串或字符向量 strtok 所选的字符串部分
 erase 删除字符串内的子字符串 eraseBetween 删除起点和终点之间的子字符串 extractAfter 提取指定位置后的子字符串 extractBefore 提取指定位置前的子字符串 extractBetween 提取起点和终点之间的子字符串 insertAfter 在指定的子字符串后插入字符串 insertBefore 在指定的子字符串前插入字符串 pad 为字符串添加前导或尾随字符 strip 删除字符串中的前导和尾随字符 lower 将字符串转换为小写 upper 将字符串转换为大写 reverse 反转字符串中的字符顺序 deblank 删除字符串末尾的尾随空白 strtrim 从字符串中删除前导和尾随空白 strjust 对齐字符串
 strcmp 比较字符串 strcmpi 比较字符串（不区分大小写） strncmp 比较字符串的前 n 个字符（区分大小写） strncmpi 比较字符串的前 n 个字符（不区分大小写）
 regexp 匹配正则表达式（区分大小写） regexpi 匹配正则表达式（不区分大小写） regexprep 使用正则表达式替换文本 regexptranslate 将文本转换为正则表达式

# 数值类型

MATLAB® 中的数值类包括有符号和无符号整数、单精度和双精度浮点数。

## 函数

 double 双精度数组 single 单精度数组 int8 8 位有符号整数数组 int16 16 位有符号整数数组 int32 32 位有符号整数数组 int64 64 位有符号整数数组 uint8 8 位无符号整数数组 uint16 16 位无符号整数数组 uint32 32 位无符号整数数组 uint64 64 位无符号整数数组
 cast 将变量转换为不同的数据类型 typecast 在不更改基础数据的情况下转换数据类型
 isinteger 确定输入是否为整数数组 isfloat 确定输入是否为浮点数组 isnumeric 确定输入是否为数值数组 isreal 确定数组是否为实数数组 isfinite 确定数组元素是否为有限值 isinf 确定数组元素是否为无限值 isnan 判断查询数组元素是否包含 NaN 值
 eps 浮点相对精度 flintmax 浮点格式的最大连续整数 Inf 创建所有值均为 Inf 的数组 intmax 指定整数类型的最大值 intmin 指定整数类型的最小值 NaN 创建所有值均为 NaN 的数组 realmax 最大的正浮点数 realmin 最小的标准正浮点数

MATLAB 默认情况下以双精度浮点形式 (double) 存储数值数据。要以整数形式存储数据，您需要从 double 转换为所需的整数类型。使用上表中所示的转换函数之一。

x = int16(325);


x = 325.499;
int16(x)
ans =

int16

325

x = x + .001;
int16(x)
ans =

int16

326  

str = 'Hello World';

int8(str)
ans =

1×11 int8 row vector

72   101   108   108   111    32    87   111   114   108   100

int32(NaN)
ans =

int32

0

5 位数的定标定点、浮点或这两种方式中的最佳方式

15 位数的定标定点、浮点或这两种方式中的最佳方式

Bank 表示法

format 参考页中列出了所有可用格式。

format hex
x = uint32(876543210)
x =
343efcea

format short e
x
x =
1.3333e+00   1.2345e-06

x = [4/3 1.2345e-6]
x =
1.3333    0.0000

whos x

xType = class(x);

isnumeric(x)

isa(x, 'integer')
isa(x, 'uint64')
isa(x, 'float')
isa(x, 'double')
isa(x, 'single')

isreal(x)

isnan(x)

isinf(x)

isfinite(x)

A = [int16(450) uint8(250) int32(1000000)]

A = [int16(5000) int8(50)]
A =
5000   50

B = [int8(50) int16(5000)]
B =
50   127

C = [int8(50); int16(5000)]
C =
50
127

A = [int8(-100) uint8(100)]
A =
-100   100

B = [uint8(100) int8(-100)]
B =
100   0

MATLAB 在将每个元素串联为一个合并数组之前计算每个元素。换句话说，在合并两个元素前，以下语句的计算结果为一个 8 位有符号整数（等于 50）和一个 8 位无符号整数（无符号的 -50 设为零）。按照该串联，第二个元素保留其零值，但采用无符号 int8 类型：

A = [int8(50), uint8(-50)]
A =
50    0

## 函数

 iscalendarduration 确定输入是否为日历持续时间数组 iscategorical 确定输入是否为分类数组 iscell 确定输入是否为元胞数组 iscellstr 确定输入是否为字符向量元胞数组 ischar 确定输入是否为字符数组 isdatetime 确定输入是否为日期时间数组 isduration 确定输入是否为持续时间数组 isenum 确定变量是否为枚举 isfloat 确定输入是否为浮点数组 isgraphics 对有效的图形对象句柄为 True isinteger 确定输入是否为整数数组 isjava 确定输入是否为 Java 对象 islogical 确定输入是否为逻辑数组 isnumeric 确定输入是否为数值数组 isobject 确定输入是否为 MATLAB 对象 isreal 确定数组是否为实数数组 isstring 确定输入是否为字符串数组 isstruct 确定输入是否为结构体数组 istable 确定输入是否为表 istimetable 确定输入是否为时间表
 is* 检测状态 isa 确定输入是否具有指定数据类型 class 对象的类 validateattributes 检查数组的有效性 whos 列出工作区中的变量及大小和类型

# 数据类型转换

## 函数

 char 字符数组 cellstr 转换为字符向量元胞数组 int2str 将整数转换为字符 mat2str 将矩阵转换为字符 num2str 将数字转换为字符数组 str2double 将字符串转换为双精度值 str2num 将字符数组或字符串转换为数值数组 native2unicode 将数值字节转换为 Unicode 字符表示形式 unicode2native 将 Unicode 字符表示形式转换为数值字节
 base2dec 将以 N 为基数表示数字的文本转换为十进制数字 bin2dec 将用文本表示的二进制数字转换为十进制数字 dec2base 将十进制数字转换为以 N 为基数的数字的字符向量 dec2bin 将十进制数字转换为表示二进制数字的字符向量 dec2hex 将十进制数字转换为表示十六进制数字的字符向量 hex2dec 将十六进制数字的文本表示形式转换为十进制数字 hex2num 将 IEEE 十六进制字符串转换为双精度数字 num2hex 将单精度和双精度值转换成 IEEE 十六进制字符串
 table2array 将表转换为同构数组 table2cell 将表转换为元胞数组 table2struct 将表转换为结构体数组 array2table 将同构数组转换为表 cell2table 将元胞数组转换为表 struct2table 将结构体数组转换为表
 cell2mat 将元胞数组转换为基础数据类型的普通数组 cell2struct 将元胞数组转换为结构体数组 mat2cell 将数组转换为在元胞中包含子数组的元胞数组 num2cell 将数组转换为相同大小的元胞数组 struct2cell 将结构体转换为元胞数组

 函数 说明 示例 char 将正整数转换为等效的字符。（截断任何小数部分。） [72 105] → 'Hi' string 将包含双精度值的数组转换为字符串数组。 [72 105] → "72" "105" [3.1416 2.178] → "3.1416" "2.178" int2str 将正整数或负整数转换为字符类型。（对任何小数部分 四舍五入。） [72 105] → '72 105' num2str 将数值类型转换为指定精度和格式的字符类型。 [72 105] → '72/105/' （格式设置为 %1d/） mat2str 将数值类型转换为指定精度的字符类型，并返回 MATLAB 可以计算的字符向量。 [72 105] → '[72 105]' dec2hex 将正整数转换为字符类型的十六进制基数。 [72 105] → '48 69' dec2bin 将正整数转换为字符类型的二进制基数。 [72 105] → '1001000 1101001' dec2base 将正整数转换为字符类型的数字，基数可从 2 到 36。 [72 105] → '110 151'

char 函数将整数转换为 Unicode 字符代码，并返回由对等字符构成的字符数组：
6 字符和字符串
6-56x = [77 65 84 76 65 66];
char(x)
ans =
'MATLAB'

int2str、 num2str 和 mat2str 函数将数值表示为文本，其中每个字符表示输入值中一位单

num2str 为绘图的 x 轴准备自动化标签：
function plotlabel(x, y)
plot(x, y)
chr1 = num2str(min(x));
chr2 = num2str(max(x));
out = ['Value of f from ' chr1 ' to ' chr2];

 函数 说明 示例 uintN（例如 uint8） 将字符转换为表示该字符的整数代码。 'Hi' → 72 105 str2num 将字符类型转换为数值类型。 '72 105' → [72 105] str2double 与 str2num 类似，但提供更佳的性能，用于处理 字符串数组和字符向量元胞数组。 "72" "105" → [72 105] {'72' '105'} → [72 105] hex2num 将数值类型转换为指定精度的字符类型，并返回 MATLAB 可以计算的字符数组。 'A' → '-1.4917e-154' hex2dec 将数值类型的十六进制基数转换为正整数。 'A' → 10 bin2dec 将字符类型的二进制数字转换为十进制数字。 '1010' → 10 base2dec 将字符类型的 2 到 36 内任何进制的数字转换为十 进制数字。 '12' → 10 （如果 base == 8）

hex2dec、 bin2dec 或 base2dec。
hex2num 和 hex2dec 函数都接受十六进制（以 16 为基数）输入，但 hex2num 返回它表

04-25 1467

03-16 1616
09-07 165
11-25 6223
02-25 9749
07-20 1048
07-03 1万+
03-21 125
05-24 47
12-28 5万+
01-04 1万+

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

liang890319

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。