matlab导出数据

时间:2011-03-17 11:58:51

标签: matlab file-io

我有一张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); 

1 个答案:

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