Skip to content

Instantly share code, notes, and snippets.

@jsnyder
Created June 22, 2011 00:32
Show Gist options
  • Select an option

  • Save jsnyder/1039278 to your computer and use it in GitHub Desktop.

Select an option

Save jsnyder/1039278 to your computer and use it in GitHub Desktop.
data_acq_triggered
% ME224 Basic Data Acquisition Script
% Clear out old handles for devices
try
stop(ai)
delete(ai)
catch
end
% Settings
Fs = 1221; % Number of samples to collect per second
time_length = 10; % length of time to capture samples (seconds)
samples = 500; % How many samples of data to get
channels = [0]'; % Channels to get data on
% Get Handle for Analog Input Device
daqinfo = daqhwinfo('nidaq');
daqid = find(ismember(daqinfo.BoardNames, 'USB-6218')==1);
ai= analoginput('nidaq', daqinfo.InstalledBoardIds{daqid});
% Apply settings to device
addchannel(ai,channels,'in');
setverify(ai.Channel,'InputRange',[-5 5]);
setverify (ai,'SampleRate',Fs);
setverify(ai,'TriggerType','HwDigital');
setverify(ai,'TriggerCondition','PositiveEdge');
setverify(ai,'InputType','SingleEnded');
setverify(ai,'SamplesPerTrigger', samples);
%setverify(ai,'TriggerRepeat', 20);
setverify(ai,'ClockSource','ExternalScanCtrl');
setverify(ai,'ExternalScanClockSource','PFI0');
%setverify(ai,'ChannelSkewMode','Manual');
%setverify(ai,'ChannelSkew',4e-6);
%Collect Data
start(ai);
wait(ai,time_length+2);
[data, dtime, abstime,events]= getdata(ai, samples);
flushdata(ai); % get rid of any queued data
% evts = find(isnan(data));
% mean_data = [];
% mean_time = [];
% std_data = [];
% cur_time = 0;
% for evt = evts'
% cur_data = data(evt+2:evt+10);
% cur_time = dtime(evt+2:evt+10);
% mean_time = [mean_time; mean(cur_time)];
% mean_data = [mean_data; mean(cur_data)];
% std_data = [std_data; std(cur_data)];
% end
% figure(1);
% plot(mean_time,mean_data);
% std(mean_data)
% figure(2);
% plot(data(evt+1:evt+10))
%%
figure(2); clf;
udata = data - mean(data);
sdata = smooth(udata,0.01);
windowSize = 200;
sdata = filtfilt(ones(1,windowSize)/windowSize,1,udata);
figure(1);
subplot(2,1,1);
plot(dtime,udata);
subplot(2,1,2);
plot(dtime,sdata);
max(sdata) - min(sdata)
max(udata) - min(udata)
udata = sdata;
Fs = 1220.7;
L = length(udata);
NFFT = 2^nextpow2(L);
UDATA = fft(udata,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(2); clf;
plot(f,2*abs(UDATA(1:NFFT/2+1)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment