我有一张daq卡,每100毫秒连续获取一次数据。现在我想创建一个包含所有数据的txt文件。这个txt文件也应该有时间 邮票,应该有5个列标题 - zeit,channel1,channel2 .... channel4。
这是我可以编写的代码,但我很困惑如何在标题后打印数据。 此外,每隔100毫秒,新数据就会出现,并且必须将其附加到文件末尾。时间戳采用特定格式,因为稍后我需要搜索数字。
% Time stamp
A = datestr(now, 'mmmm dd, yyyy HH:MM:SS.FFF ')
format short g
datevec(A)
fid = fopen('acq.txt','w');
fprintf(fid,'%s\t',A)
A = 'Zeit';
dataName = 'channel';
fid = fopen('acq.txt','w');
fprintf(fid,'%s\t',A)
%# loop to write the rest of the header
x=5
for iModel = 1:x
fprintf(fid,'%s_%i\t',dataName,iModel);
end
data = rand( 10,10);
fprintf( 'acq.txt' , '%i' ,data);
答案 0 :(得分:0)
如果您不关闭文件,则没有理由将其打开两次。在第一次fopen之后,两个连续的fprintf会让你开始:
fprintf(fid,'%s\t',datestr(now, 'mmmm dd, yyyy HH:MM:SS.FFF '))
fprintf(fid,'%s\t%s1\t%s2\t%s3\t%s4\t','Zeit',dataName,dataName,dataName,dataName)
设置标题。此时请记住使用fclose(fid)。您现在可以在每次读取数据时循环浏览,并打开文件以追加fida = fopen('acq.txt','a');
,然后输入格式化数据:
fprintf(fida,'%f %f %f %f %f %f %f %f %f %f\n',data')
由于某些原因,matlab首先在第一行显示数据,因此转置它会使其与matlab中表示的数据形状相同。请记住关闭这些文件,否则可能会遇到错误。