2011-03-17 90 views
0

我有一个daq卡,从中每隔100毫秒连续采集数据。现在我想创建一个包含所有数据的txt文件。这个txt文件还应该有一个时间戳 ,应该有5个列标题 - zeit,channel1,channel2 .... channel4。matlab导出数据

这是我可以编写的代码,但我很困惑如何在标题后打印数据。 同样在每隔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

如果您不关闭文件,没有理由打开它两次。两个连续的fprintfs会让你在第一个fopen之后开始:

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中表示的数据形状相同。请记住关闭这些文件,否则可能会遇到错误。

+0

Oki所以基本上你的意思是我需要一个循环,它首先写入标题,然后退出循环,然后写入数据,但我怎么知道数据正在正确的标题下写入时间戳。你能不能把前卫编排好。 – user664270 2011-03-21 12:52:04