上部分讲述到数据划分,以及划分过的数据进行处理,本部分讲数据输出
要达到类似结构体方式输出,需要解决序列问题,i
外层数据 total_i<=size(data0,1)
周期数据 period_i<=period(size(data0,1))
数据总行数dataline_i=total_i-sum(can_index)
输出行数数据 line_i=dataline_i+period_i*2
设定好固定输出格式
。。。。。。。。。分割线
上次考虑输出时思路有问题,保存到txt格式时候,总是考虑矩阵->txt格式,其实不然,可以考虑matlab本身自带的fprintf函数,采用如何格式编写:一个matlab实例
x = 0:.1:1;
A = [x; exp(x)];
fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);
这里周期I采用字符period_i表示,canid,时间,
关于周期的设置,如何能够确定某个数是于周期内第一次出现?设置逻辑判断,如果x==period(i)&&x==period(i-1)+1,那么x就是周期内第一次出现的数,否则就是另外一个判断,if x==period(i),以下面的代码给出逻辑判断。
if x==period(i)
if(x==period(i-1)+1)
fprintf(fileID,'周期 %d\n',period_i);
end
%这块为重点内容,此块填写第二部分CANid内容,第一块内容在下面部分填写
fprintf(fileID,'ID %s\n',s);
%
%
%
%加以判断,若下个周期要增加,则先对x增加1
if(x==period(i+1)-1)
x=x+1;
end
end
以上方式应用到了实际应用中,但是接下来处理字符串时候,大大增加了系统反应时间,加入新的自设函数,对十进制转化成16进制进行添加0这个功能,能够使界面看起来整洁。
function f=dec2hex00(x)
f=dec2hex(x);
if size(f,2)==1
f=strcat('0',f);
end