在matlab中从字符串中提取前4个字母

在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的

如何提取字符串的前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

的第一个字符。如果只需要非空白字符,可以使用函数删除空白,然后使用字符数组索引来访问字符:

>> 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行十六进制代码的文件,我想批量拆分它们,我该如何处理这样做?