无法在Matlab中以正确的格式保存NiDaq数据

时间:2018-10-15 15:33:09

标签: matlab

我正在尝试使用Matlab保存NiDaq数据。我有5个通道,必须在后台获取它们,以在Daq获取时运行其他代码。考虑到我使用的是1000 Hz采集速率,20 s长的采集时间,并且我有5个通道,因此我的数据应该是20000 x 5矩阵。取而代之的是,我得到的是2 x 37300矩阵,其中我的通道信号似乎混在这两个向量中。 这是代码

function acquireData

daqreset
devID = 'Dev1';
niOI = daq.createSession('ni');
niOI.Rate = 1000;
aI = niOI.addAnalogInputChannel( devID , 1:5 , 'Voltage' );
for i = 1:5
    aI(i).InputType = 'SingleEnded';
end
niOI.DurationInSeconds = 20;
prepare(niOI);

fid = fopen('log.dat','w');
lh = niOI.addlistener('DataAvailable',@(src,event)saveData(fid,event));
niOI.startBackground();

%%% Code that does something else %%%
Panel_com('set_pattern_id', 11); 
Panel_com('set_position',[(round(rand*96)+1) 1]);
pause(1); 
Panel_com('set_mode', [4 4]); 
Panel_com('set_posfunc_id',[1 2]);
Panel_com('set_posfunc_id',[2 2]);
Panel_com('start');
pause(5)
Panel_com('stop');
Panel_com('set_position',[(round(rand*96)+1) 1]);
Panel_com('start');
pause(5)
Panel_com('stop');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

niOI.IsDone 
delete(lh)


function saveData(fid,event)
      time = event.TimeStamps;
      data = event.Data;
      plot(time,data)
      fprintf(fid,'%f,%\n',time,data)
end


end

我还尝试使用fwrite代替fprintf:

fwrite(fid,data,'double')

但是这给了我一个文件,文件中的字符不是数字,也不是正确的矩阵大小。

0 个答案:

没有答案