Как непрерывно регистрировать данные и наносить на график данные с помощью Data Aquisition Toolbox в MATLAB
Я собираю данные с помощью Data Acquisition Toolbox. Данные собираются в фоновом режиме. Я собираю данные от 8 термопар и могу звонить своему слушателю, чтобы постоянно обновлять свой график. Тем не менее, мне также нужно сохранить файл, массив или какой-то журнал регистрации собранных данных. Вот мой код:
daq.getDevices;
s = daq.createSession('ni');
s.Rate = 1.8;
s.DurationInSeconds = 60;
ch1 = addAnalogInputChannel(s,'cDAQ1Mod1','ai0','Thermocouple');
ch2 = addAnalogInputChannel(s,'cDAQ1Mod1','ai1','Thermocouple');
ch3 = addAnalogInputChannel(s,'cDAQ1Mod1','ai2','Thermocouple');
ch4 = addAnalogInputChannel(s,'cDAQ1Mod1','ai3','Thermocouple');
ch5 = addAnalogInputChannel(s,'cDAQ1Mod1','ai4','Thermocouple');
ch6 = addAnalogInputChannel(s,'cDAQ1Mod1','ai5','Thermocouple');
ch7 = addAnalogInputChannel(s,'cDAQ1Mod1','ai6','Thermocouple');
ch8 = addAnalogInputChannel(s,'cDAQ1Mod1','ai7','Thermocouple');
ch1.ThermocoupleType = 'T';
ch2.ThermocoupleType = 'T';
ch3.ThermocoupleType = 'T';
ch4.ThermocoupleType = 'T';
ch5.ThermocoupleType = 'T';
ch6.ThermocoupleType = 'T';
ch7.ThermocoupleType = 'T';
ch8.ThermocoupleType = 'T';
fid1 = fopen('log.bin','w');
lh = addlistener(s,'DataAvailable', @plotData);
lh1 = addlistener(s,'DataAvailable',@(src, event)logData(src, event, fid1));
s.NotifyWhenDataAvailableExceeds = 20;
s.startBackground();
fclose(fid1);
fid2 = fopen('log.bin','r');
[data,count] = fread(fid2,[8,inf],'double');
fclose(fid2);
Функция plotData имеет вид:
function plotData(src,event)
plot(event.TimeStamps, event.Data)
legend('Outside Sensor 1','Middle Sensor 1','Middle Sensor 2','Middle Sensor 4', ...
'External Sensor 2','Outside Sensor 2','Middle Sensor 3','External Sensor 1')
end
Функция logData имеет вид:
function logData(src, evt, fid)
data = [evt.TimeStamps, evt.Data]' ;
fwrite(fid,data,'double');
end
Любая идея о том, как вести непрерывный журнал обновлений данных по мере их сбора, одновременно обновляя файл журнала всех собранных точек данных?
1 ответ
MATLAB не хранит данные, если вы не сообщите их. В этом случае вы должны предварительно выделить переменную, структуру или файл для записи ваших данных.
См. Эту ссылку MathWorks для получения справки по созданию и записи в файл журнала: получение непрерывных и фоновых данных с помощью устройств NI.