2011-03-17 69 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