用matlab编程,在一大堆十六进制数中,寻找特定的数据,遇到特定数据是输出下面的,再遇下一个换行输出

初始数据如:4127FFD2B1FFAAB1095C···6303FFAAB10A6472···03E45CFFAAB10B···很多数据。寻找FFAAB1为开头的数据,... 初始数据如:41 27 FF D2 B1 FF AA B1 09 5C ··· 63 03 FF AA B1 0A 64 72 ··· 03 E4 5C FF AA B1 0B ···很多数据。
寻找FF AA B1为开头的数据,输出此数据及后面的数据,遇到下一个FF AA B1 之前换行,再输出。
输出结果图。用matlab编程实现。
求高手,谢谢了。
有什么问题可以问我。
展开
 我来答
greatdju
2011-06-14 · TA获得超过2.2万个赞
知道大有可为答主
回答量:2486
采纳率:50%
帮助的人:4278万
展开全部
假设Zone1.txt数据如下
02 06 2E FF AA B1 09 37 84 60 FF AA FF AA B1 2E 33 86 FF AA B1 FF AA B1 7B 2A 8D FF AA B1 7B 3F 24 FF AA B1 8C 47 84 60 FF AA B1 38 0C 86 FF FF AA B1 B2 B3 B4 FF AA B1 11 22

f=fopen('Zone1.txt');
A=char(fread(f,'char'))';%A即是文本文件中的内容
fclose(f);
B=regexp(A,'\<FF\s+AA\s+B1.*?(?=FF\s+AA\s+B1)','match')%B即提取了所要的内容
char(B)%显示结果如下

ans =

FF AA B1 09 37 84 60 FF AA
FF AA B1 2E 33 86
FF AA B1
FF AA B1 7B 2A 8D
FF AA B1 7B 3F 24
FF AA B1 8C 47 84 60
FF AA B1 38 0C 86 FF
FF AA B1 B2 B3 B4
追问
由于数据量很大。输出结果怎么直接保存到txt文本中,谢啦
追答
加一句
dlmwrite('zone2.txt',char(B),'')
名字自己改即可
____________________________________________
关于最后一个FF AA B1 11 22没有的问题,这是因为正则表达式是要找FF AA B1前的内容,但因为这里已经到了文档最后了,没有FF AA B1结尾,所以就没有提取出来。可以如下改进
f=fopen('Zone1.txt');
A=strcat(char(fread(f,'char'))',' FF AA B1');%在最后加上特征内容
fclose(f);
B=regexp(A,'\<FF\s+AA\s+B1.*?(?=FF\s+AA\s+B1)','match')%B即提取了所要的内容
char(B)%显示结果如下
ruifengcao
2011-06-14 · TA获得超过9493个赞
知道大有可为答主
回答量:3579
采纳率:33%
帮助的人:2170万
展开全部
假设Zone1.txt数据如下
02 06 2E FF AA B1 09 37 84 60 FF AA FF AA B1 2E 33 86 FF AA B1 FF AA B1 7B 2A 8D FF AA B1 7B 3F 24 FF AA B1 8C 47 84 60 FF AA B1 38 0C 86 FF FF AA B1 B2 B3 B4 FF AA B1 11 22

f=fopen('Zone1.txt');
A=char(fread(f,'char'))';%A即是文本文件中的内容
fclose(f);
B=regexp(A,'\<FF\s+AA\s+B1.*?(?=FF\s+AA\s+B1)','match')%B即提取了所要的内容
C=char(B)%显示结果如下

f=fopen('Zone1.txt');
fwrite(f,C)
fclose(f);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不二大熊熊
2011-06-14 · TA获得超过161个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:91.5万
展开全部
若不是自己感兴趣,绝对不会为了这50分编这样一个小时(在下能力有限)。
测试结果如下:

output =

'09 5C 63 03 FF AA B1 '
'0A 64 72 03 E4 5C FF AA B1 '
'0B '

clc
clear
a='41 27 FF D2 B1 FF AA B1 09 5C 63 03 FF AA B1 0A 64 72 03 E4 5C FF AA B1 0B';
a=[a ' '];
b=length(a)/3;
A=reshape(a,3,b);
time=0;
flag=0;
outputenable=0;
k=1;
for N=1:b
if flag==3
outputenable=1;
end
if outputenable==1;
if time==0
output{k,1}=a([3*N-2:3*N]);
time=1;
else
output{k,1}=[output{k,1} a([3*N-2:3*N])];
end
end

switch A([1:2],N)
case ['F';'F']
flag=1;
case ['A';'A']
if flag==1
flag=2;
else flag=0;
end
case ['B';'1']
if flag==2
flag=3;
else flag=0;
end
otherwise flag=0;
end
if flag==3
if outputenable==1
k=k+1;
output{k,1}=[];
end
end
end
output
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式