在matlab中从字符串中提取前4个字母
如何提取字符串的前4个或中间4个或最后4个字母示例:当字符串读取01 ED 01 F9 81 C6时?字符串被视为字符向量。试试这个:在matlab中从字符串中提取前4个字母,matlab,string,Matlab,String,如何提取字符串的前4个或中间4个或最后4个字母示例:当字符串读取01 ED 01 F9 81 C6时?字符串被视为字符向量。试试这个: >> string = '01 ED 01 F9 81 C6'; >> string(1:5), string(6:11), string(12:17) ans = 01 ED ans = 01 F9 ans = 81 C6 string在本例中是一个变量而不是一个方法string(1)返回数组(或向量)中名为string的
>> string = '01 ED 01 F9 81 C6';
>> string(1:5), string(6:11), string(12:17)
ans =
01 ED
ans =
01 F9
ans =
81 C6
string
在本例中是一个变量而不是一个方法string(1)
返回数组(或向量)中名为string
的第一个字符。如果只需要非空白字符,可以使用函数删除空白,然后使用字符数组索引来访问字符:
>> s = '01 ED 01 F9 81 C6';
>> s = s(~isspace(s))
s =
01ED01F981C6
>> s(1:4)
ans =
01ED
>> s(5:8)
ans =
01F9
>> s(9:end)
ans =
81C6
>>s='01 ED 01 F9 81 C6';
>>s=s(~i空间)
=
01ED01F981C6
>>s(1:4)
ans=
01ED
>>s(5:8)
ans=
01F9
>>s(9:完)
ans=
81C6
您可以将其展开以处理字符数组的多行,使用将空间删除的结果转换回二维数组,然后引用额外的维度:
s = ['01 ED 01 F9 81 C6'; 'F8 CA DD 04 44 3B']
s =
01 ED 01 F9 81 C6
F8 CA DD 04 44 3B
>> s = reshape(s(~isspace(s)), size(s, 1), 12)
s =
01ED01F981C6
F8CADD04443B
>> s(:,1:4)
ans =
01ED
F8CA
>> s(:,5:8)
ans =
01F9
DD04
>> s(:,9:end)
ans =
81C6
443B
s=['01 ED 01 F9 81 C6';'F8 CA DD 04 44 3B']
=
01 ED 01 F9 81 C6
F8 CA DD 04 44 3B
>>s=重塑(s(~isspace),大小(s,1),12)
=
01ED01F981C6
F8CADD0443B
>>s(:,1:4)
ans=
01ED
F8CA
>>s(:,5:8)
ans=
01F9
DD04
>>s(:,9:end)
ans=
81C6
443B
正如trolle3000和b3所提到的,您使用包含索引的括号来提取字符串的子集 为了回答关于如何处理字符串的附加问题,我建议在每个空格处拆分字符串,并将十六进制数转换为十进制数
s = '01 ED 01 F9 81 C6';
hex2dec(regexp(s, ' ', 'split'))
ans =
1
237
1
249
129
198
@trolle3000和b3:谢谢,但是如果文件中有一组值“C1 F3 81 F6 81 C5”“01 F0 41 F7 01 C6”“41 ED C1 F7 01 C6”,那么我该如何处理它呢?@Dilip:请看我上面编辑的答案,其中描述了如何处理多行。谢谢,但我的问题是我有一个包含4000行十六进制代码的文件,我想批量拆分它们,我该如何处理这样做?