-
Notifications
You must be signed in to change notification settings - Fork 3
/
Digiducer_Data_Analyzer.m
794 lines (667 loc) · 33 KB
/
Digiducer_Data_Analyzer.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
function varargout = Digiducer_Data_Analyzer(varargin)
% DIGIDUCER_DATA_ANALYZER MATLAB code for Digiducer_Data_Analyzer.fig
% DIGIDUCER_DATA_ANALYZER, by itself, creates a new DIGIDUCER_DATA_ANALYZER or raises the existing
% singleton*.
%
% H = DIGIDUCER_DATA_ANALYZER returns the handle to a new DIGIDUCER_DATA_ANALYZER or the handle to
% the existing singleton*.
%
% DIGIDUCER_DATA_ANALYZER('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in DIGIDUCER_DATA_ANALYZER.M with the given input arguments.
%
% DIGIDUCER_DATA_ANALYZER('Property','Value',...) creates a new DIGIDUCER_DATA_ANALYZER or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Digiducer_Data_Analyzer_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Digiducer_Data_Analyzer_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Digiducer_Data_Analyzer
% Last Modified by GUIDE v2.5 23-Feb-2015 10:59:53
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Digiducer_Data_Analyzer_OpeningFcn, ...
'gui_OutputFcn', @Digiducer_Data_Analyzer_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Digiducer_Data_Analyzer is made visible.
function Digiducer_Data_Analyzer_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Digiducer_Data_Analyzer (see VARARGIN)
% Choose default command line output for Digiducer_Data_Analyzer
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Digiducer_Data_Analyzer wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Digiducer_Data_Analyzer_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% % --- Executes on selection change in blockSize.
function blockSize_Callback(hObject, eventdata, handles)
% % hObject handle to blockSize (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles structure with handles and user data (see GUIDATA)
%
% % Hints: contents = cellstr(get(hObject,'String')) returns blockSize contents as cell array
% % contents{get(hObject,'Value')} returns selected item from blockSize
% blockSize = 2^(5+get(handles.blockSize, 'Value'));
% --- Executes during object creation, after setting all properties.
function blockSize_CreateFcn(hObject, eventdata, handles)
% hObject handle to blockSize (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: listbox controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%set up options for block size
set(hObject, 'String', {'64', '128', '256', '512', '1024', '2048', '4096', '8192', '16384', '32768', '65536'});
%initialize block size to 1024
set(hObject, 'Value', 5);
% --- Executes on selection change in windowType.
function windowType_Callback(hObject, eventdata, handles)
% hObject handle to windowType (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns windowType contents as cell array
% contents{get(hObject,'Value')} returns selected item from windowType
% --- Executes during object creation, after setting all properties.
function windowType_CreateFcn(hObject, eventdata, handles)
% hObject handle to windowType (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%set up options for window type
set(hObject, 'String', {'flattop', 'hanning', 'hann', 'hamming', 'blackman-harris'});
% --- Executes on button press in clear.
function clear_Callback(hObject, eventdata, handles)
% hObject handle to clear (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%resets and clears all output boxes, input boxes, and graphs
set(handles.windowType, 'Value', 1);
set(handles.blockSize, 'Value', 5);
set(handles.liveDataSampleRate, 'Value', 1);
set(handles.wavOutput, 'String', '');
set(handles.percentOverlap, 'Value', 1);
set(handles.avgpeakFreqA, 'String', '');
set(handles.avgpeakFreqB, 'String', '');
set(handles.avgpeakMagA, 'String', '');
set(handles.avgpeakMagB, 'String', '');
set(handles.instpeakFreqA, 'String', '');
set(handles.instpeakFreqB, 'String', '');
set(handles.instpeakMagA, 'String', '');
set(handles.instpeakMagB, 'String', '');
set(handles.expFilterResponse, 'Value', 1);
cla(handles.timeData);
cla(handles.instSpectrum);
cla(handles.avgSpectrum);
% --- Executes on button press in analysis.
function analysis_Callback(hObject, eventdata, handles)
% hObject handle to analysis (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%initialize stop to off (0)
set(handles.stop, 'UserData', 0);
%grab data from buttons after being pushed to determine if live data or wav
%file read was pushed first
x = cell2mat(get(handles.analysis, 'Value'));
%decide which button was pushed and run based on parameters
%if wav analysis was pushed
if x(2) == 2
%read in wav file
[FileName, canc] = uigetfile('*.wav', 'Select the WAV file');
%error if no wav file selected or canceled
if canc == 0
errordlg('No wav file was selected. ABORT!');
end
%decode file for wav file specifics
[CalDate, SN, CalA, CalB, returnVal] = wavFileDecoder(FileName);
device.version = 1;
%convert SN to string so that it can be displayed easier later if there
%is no SN
SN = num2str(SN);
%determine if there is calibration information
if returnVal == 0
%ask for specific calibration information
sensitivityPrompt = {sprintf('The sensor you are using does not contain calibration information. Please input the following in order to proceed with the analysis (nominal values shown).\n\nChannel A sensitivity (counts/(m/s^2)): '), 'Channel B sensitivity (counts/(m/s^2)): '};
%set up the prompt specifics
dlg_title = 'Sensitivity Input';
num_lines = 1;
%initialize the sensitivities
def = {'33000', '65000'};
sensitivity = inputdlg(sensitivityPrompt, dlg_title, num_lines, def); %detect cancel
%convert from string to double
[CalA, CalB] = sensitivity{:};
CalA = str2double(CalA);
CalB = str2double(CalB);
%get out of loop and continue callback
returnVal = 1;
end
%determine if the wav file is properly formatted
if returnVal == -1
errordlg('This wav file is not properly formatted');
else
%the wav file has Cal Data and is properly formatted
info = audioinfo(FileName);
sampleRate = info.SampleRate;
nbits = info.BitsPerSample;
end
%if live data was pushed
elseif x(1) == 2
%set up structure for recording
continuousMode = true;
%decode the information on the sensor
devices = DigiDecoder();
device = devices(1);
if length(devices) > 1
msgbox(sprintf('Warning, multiple 333D0''s/485b39''s detected.\nDefaulting to %s, serial number %i.',device.model, device.SN),'More than one device','warn','modal');
end
%determine if there is a cal date
if device.version < 1
device.CalDate = 'Not Available';
end
CalDate=device.CalDate;
CalA=device.CalA;
CalB=device.CalB;
SN=device.SN;
end
%bring in user input specifics
expFilterResponseArray = [0.25, 0.5, 0.75];
expFilterResponse = expFilterResponseArray(get(handles.expFilterResponse, 'Value'));
percentOverlapArray = [1, 0.25, 0.5, 0.75];
percentOverlap = percentOverlapArray(get(handles.percentOverlap, 'Value'));
blockSize = 2^(5+get(handles.blockSize, 'Value'));
windowTypeArray = {'Flattop', 'Hanning', 'Hann', 'Hamming', 'Blackman-harris'};
windowType = char(windowTypeArray(get(handles.windowType, 'Value')));
%decide specifics regarding live data or wav data
if x(1) == 2
sampleRateArray = [8000, 11025, 16000, 22050, 32000, 44100, 48000];
sampleRate = sampleRateArray(get(handles.liveDataSampleRate, 'Value'));
deviceReader = audioDeviceReader(sampleRate,blockSize,'Device',device.ID,...
'BitDepth','24-bit integer','NumChannels',2);
setup(deviceReader);
elseif x(2) == 2
info = audioinfo(FileName);
siz = info.TotalSamples;
secLength = siz(1)/sampleRate;
end
%initialize structure variables
sample = 1;
%create axes for graphing
xtaxis = (1/sampleRate)*(0:blockSize-1);
xfaxis = (sampleRate/(blockSize))*(0:(blockSize/2)-1);
%initialize count
numofBlocks = 1;
gcf;
%continue loop until the stop button is pushed
while get(handles.stop,'UserData') ~= 1
%% Frequency display
if x(1) == 2
%reads in the live data
y=deviceReader();
if ~continuousMode
release(deviceReader);
end
elseif x(2) == 2
%reads in wav data
y = audioread(FileName, [sample, sample + blockSize-1]);
end
%uses the sensitivity to convert to readable units (g's or Volts)
if device.version == 2 || device.version == 3 % Vpeak
yA = (2^23)/(CalA)*y(:,1);
yB = (2^23)/(CalB)*y(:,2);
else % g's
yA = (2^23)/(9.80665*CalA)*y(:,1);
yB = (2^23)/(9.80665*CalB)*y(:,2);
end
%sets to timeData axes
axes(handles.timeData);
%creates wav plot
if x(2) == 2
p1(1) = plot(yA(1:blockSize));
p1(2) = plot(yB(1:blockSize));
xlabel('Sample #');
xlim([0 blockSize]);
ylim([-1 1]);
grid on
end
%first time only
if numofBlocks == 1
%creates live plot for first time
if x(1) == 2
p1 = plot(xtaxis, yA, xtaxis, yB);
xlabel('Time (s)');
xlim([0 max(xtaxis)]);
grid on
end
title('Time Signal');
if device.version == 2 || device.version == 3
ylabel(sprintf('Voltage'));
else
ylabel(sprintf('Acceleration\n(g''s)'));
end
else
if x(1) == 2
set(p1(1), 'XData', xtaxis, 'YData', yA);
set(p1(2), 'Xdata', xtaxis, 'YData', yB);
grid on
end
end
%get time data for channel A
% Compute spectrum for channel A
xs1=spectralcalc(yA,1,blockSize-1,windowType); % scaling the halved channel to get the correct vibration amplitude
% get time data for channel B
% Compute spectrum for channel B
xs2=spectralcalc(yB,1,blockSize-1,windowType);
% averaging
%sets to new graph
axes(handles.instSpectrum);
%determines dB
xs1Mag = xs1.Magnitude(:)';
xs2Mag = xs2.Magnitude(:)';
if numofBlocks == 1
% Channel average for first sample is itself
xavgsum1 = xs1Mag;
xavgsum2 = xs2Mag;
%math and graph
g2 = semilogx(xfaxis,20.*log10(xs1Mag),xfaxis,20.*log10(xs2Mag));
xlabel('Frequency (Hz)');
title(handles.instSpectrum, 'Instantaneous Frequency Spectrum');
grid on;
xlim([0 sampleRate/2]);
ylim([-160 60]);
else
%graphs after first time
set(g2(1),'XData',xfaxis,'YData',20.*log10(xs1.Magnitude));
set(g2(2),'XData',xfaxis,'YData',20.*log10(xs2.Magnitude));
grid on
end
if device.version == 2 || device.version == 3
ylabel(handles.instSpectrum, sprintf('Instantaneous Voltage\n(dB V)\nBlock #: %i',numofBlocks));
else
ylabel(handles.instSpectrum, sprintf('Instantaneous Acceleration\n(dB g)\nBlock #: %i',numofBlocks));
end
%Compute peak statistics to adjust display
%finds the top dB peak
[~,peakFreqInd] = max(xs2(1).Magnitude);
peakFreq = xfaxis(peakFreqInd);
peakFreqMag = xs2(1).Magnitude(peakFreqInd);
%sets to new graph, avgSpectrum
axes(handles.avgSpectrum);
%averages
xavgsum1 = (expFilterResponse*xs1Mag+(1-expFilterResponse)*xavgsum1);
xavgsum2 = (expFilterResponse*xs2Mag+(1-expFilterResponse)*xavgsum2);
%first time avg Spectrum
if numofBlocks == 1
%determines average based on exponential filter response
p2 = semilogx(xfaxis,20.*log10(xavgsum1),xfaxis,20.*log10(xavgsum2));
xlabel('Frequency (Hz)');
title(handles.avgSpectrum, 'Average Frequency Spectrum');
grid on;
xlim([0 sampleRate/2]);
ylim([-160 60]);
else
%graphs after first time
set(p2(1),'XData',xfaxis,'YData',20.*log10(xavgsum1));
set(p2(2),'XData',xfaxis,'YData',20.*log10(xavgsum2));
grid on
end
if device.version == 2 || device.version == 3
ylabel(handles.avgSpectrum, sprintf('Average Voltage\n(dB V)\nAvg #: %i',numofBlocks));
else
ylabel(handles.avgSpectrum, sprintf('Average Acceleration\n(dB g)\nAvg #: %i',numofBlocks));
end
%in order to update figure and execute callbacks
drawnow();
%determine overlap for wav data
if percentOverlap == 1
%if overlap is 0, make sure there is no overlap
jump = blockSize*percentOverlap;
sample = sample+jump;
else
jump = blockSize*(1-percentOverlap);
sample = sample + jump;
end
%determine max freq and dB for average
[~,avgPeakFreqInd1] = max(xavgsum1);
[~,avgPeakFreqInd2] = max(xavgsum2);
avgpeakFreqA = xfaxis(avgPeakFreqInd1);
avgpeakFreqB = xfaxis(avgPeakFreqInd2);
avgpeakMagA = 20*log10(max(xavgsum1));
avgpeakMagB = 20*log10(max(xavgsum2));
%displays in text boxes in GUI
set(handles.avgpeakFreqA, 'String', avgpeakFreqA);
set(handles.avgpeakFreqB, 'String', avgpeakFreqB);
set(handles.avgpeakMagA, 'String', avgpeakMagA);
set(handles.avgpeakMagB, 'String', avgpeakMagB);
%dtermines max freq and dB for instantaneous
[~,instPeakFreqInd1] = max(xs1.Magnitude);
[~,instPeakFreqInd2] = max(xs2.Magnitude);
instpeakFreqA = xfaxis(instPeakFreqInd1);
instpeakFreqB = xfaxis(instPeakFreqInd2);
instpeakMagA = 20*log10(max(xs1.Magnitude));
instpeakMagB = 20*log10(max(xs2.Magnitude));
%displays in text boxes in GUI
set(handles.instpeakFreqA, 'String', instpeakFreqA);
set(handles.instpeakFreqB, 'String', instpeakFreqB);
set(handles.instpeakMagA, 'String', instpeakMagA);
set(handles.instpeakMagB, 'String', instpeakMagB);
%print out results accordingly
serialNumberText = sprintf('Serial Number: %i\n', SN);
calibrationDateText = sprintf('Calibration Date: %s\n', CalDate);
sampleRateText = sprintf('Sample Rate (Hz): %i\n', sampleRate);
numberOfBlocksText = sprintf('Number of Blocks: %i\n',numofBlocks-1);
if x(1) == 2
modelText = sprintf('Device: %s\n',device.model);
versionText = sprintf('Encoding version: %i\n', device.version);
waveFileInfoText = '';
if device.version == 0 || device.version == 1
sensitivityText = sprintf('Channel A Sensitivity (counts/(m/s^2)): %i\nChannel B Sensitivity (counts/(m/s^2): %i\n', CalA, CalB);
elseif device.version == 2 || device.version == 3
sensitivityText = sprintf('Channel A Sensitivity (counts/Volts-Pk): %i\nChannel B Sensitivity (counts/Volts-Pk): %i\n', CalA, CalB);
else
serialNumberText = sprintf('Serial Number: Not Available\n');
sensitivityText = sprintf('Channel A Sensitivity (counts/(m/s^2)): %i\nChannel B Sensitivity (counts/(m/s^2)): %i\n', CalA, CalB);
end
elseif x(2) == 2
modelText = sprintf('WAV File Read: %s\n', FileName);
sensitivityText = sprintf('Channel A Sensitivity (counts/(m/s^2)): %i\nChannel B Sensitivity (counts/(m/s^2): %i\n', CalA, CalB);
serialNumberText = sprintf('Serial Number: %s\n', SN);
versionText = sprintf('Encoding version: %i\n', device.version);
waveFileInfoText = sprintf('Number of Bits: %i\nLength of Time (s): %f\n', nbits, secLength);
end
message = [modelText serialNumberText versionText calibrationDateText sensitivityText waveFileInfoText sampleRateText numberOfBlocksText];
set(handles.wavOutput, 'String', message);
%determine if there is more data from wav file to fit block size
if x(2) == 2
%if no more data, exit
if (sample + blockSize - 1) >= siz(1)
numberOfBlocksText = sprintf('Number of Blocks: %i\n',numofBlocks-1);
message = [modelText serialNumberText versionText calibrationDateText sensitivityText waveFileInfoText sampleRateText numberOfBlocksText];
set(handles.wavOutput, 'String', message);
return
end
end
numofBlocks = numofBlocks +1;
pause(0.000001)
end
function wavOutput_Callback(hObject, eventdata, handles)
% % hObject handle to wavOutput (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of wavOutput as text
% str2double(get(hObject,'String')) returns contents of wavOutput as a double
% Sample_Rate = get(hObject, 'String');
% --- Executes during object creation, after setting all properties.
function wavOutput_CreateFcn(hObject, eventdata, handles)
% hObject handle to wavOutput (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes during object creation, after setting all properties.
function timeData_CreateFcn(hObject, eventdata, handles)
% hObject handle to timeData (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate timeData
% --- Executes on selection change in percentOverlap.
function percentOverlap_Callback(hObject, eventdata, handles)
% hObject handle to percentOverlap (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns percentOverlap contents as cell array
% contents{get(hObject,'Value')} returns selected item from percentOverlap
% --- Executes during object creation, after setting all properties.
function percentOverlap_CreateFcn(hObject, eventdata, handles)
% hObject handle to percentOverlap (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%set options for percent overlap
set(hObject, 'String', {'0', '25', '50', '75'});
function sensitivityA_Callback(hObject, eventdata, handles)
% hObject handle to sensitivityA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of sensitivityA as text
% str2double(get(hObject,'String')) returns contents of sensitivityA as a double
% --- Executes during object creation, after setting all properties.
function sensitivityA_CreateFcn(hObject, eventdata, handles)
% hObject handle to sensitivityA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function instpeakMagA_Callback(hObject, eventdata, handles)
% hObject handle to instpeakMagA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of instpeakMagA as text
% str2double(get(hObject,'String')) returns contents of instpeakMagA as a double
% --- Executes during object creation, after setting all properties.
function instpeakMagA_CreateFcn(hObject, eventdata, handles)
% hObject handle to instpeakMagA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function avgpeakFreqA_Callback(hObject, eventdata, handles)
% hObject handle to avgpeakFreqA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of avgpeakFreqA as text
% str2double(get(hObject,'String')) returns contents of avgpeakFreqA as a double
% --- Executes during object creation, after setting all properties.
function avgpeakFreqA_CreateFcn(hObject, eventdata, handles)
% hObject handle to avgpeakFreqA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function instpeakMagB_Callback(hObject, eventdata, handles)
% hObject handle to instpeakMagB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of instpeakMagB as text
% str2double(get(hObject,'String')) returns contents of instpeakMagB as a double
% --- Executes during object creation, after setting all properties.
function instpeakMagB_CreateFcn(hObject, eventdata, handles)
% hObject handle to instpeakMagB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function instpeakFreqB_Callback(hObject, eventdata, handles)
% hObject handle to instpeakFreqB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of instpeakFreqB as text
% str2double(get(hObject,'String')) returns contents of instpeakFreqB as a double
% --- Executes during object creation, after setting all properties.
function instpeakFreqB_CreateFcn(hObject, eventdata, handles)
% hObject handle to instpeakFreqB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function instpeakFreqA_Callback(hObject, eventdata, handles)
% hObject handle to instpeakFreqA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of instpeakFreqA as text
% str2double(get(hObject,'String')) returns contents of instpeakFreqA as a double
% --- Executes during object creation, after setting all properties.
function instpeakFreqA_CreateFcn(hObject, eventdata, handles)
% hObject handle to instpeakFreqA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function avgpeakMagA_Callback(hObject, eventdata, handles)
% hObject handle to avgpeakMagA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of avgpeakMagA as text
% str2double(get(hObject,'String')) returns contents of avgpeakMagA as a double
% --- Executes during object creation, after setting all properties.
function avgpeakMagA_CreateFcn(hObject, eventdata, handles)
% hObject handle to avgpeakMagA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function sensitivityB_Callback(hObject, eventdata, handles)
% hObject handle to sensitivityB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of sensitivityB as text
% str2double(get(hObject,'String')) returns contents of sensitivityB as a double
% --- Executes during object creation, after setting all properties.
function sensitivityB_CreateFcn(hObject, eventdata, handles)
% hObject handle to sensitivityB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function avgpeakFreqB_Callback(hObject, eventdata, handles)
% hObject handle to avgpeakFreqB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of avgpeakFreqB as text
% str2double(get(hObject,'String')) returns contents of avgpeakFreqB as a double
% --- Executes during object creation, after setting all properties.
function avgpeakFreqB_CreateFcn(hObject, eventdata, handles)
% hObject handle to avgpeakFreqB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function avgpeakMagB_Callback(hObject, eventdata, handles)
% hObject handle to avgpeakMagB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of avgpeakMagB as text
% str2double(get(hObject,'String')) returns contents of avgpeakMagB as a double
% --- Executes during object creation, after setting all properties.
function avgpeakMagB_CreateFcn(hObject, eventdata, handles)
% hObject handle to avgpeakMagB (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in liveDataSampleRate.
function liveDataSampleRate_Callback(hObject, eventdata, handles)
% hObject handle to liveDataSampleRate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns liveDataSampleRate contents as cell array
% contents{get(hObject,'Value')} returns selected item from liveDataSampleRate
% --- Executes during object creation, after setting all properties.
function liveDataSampleRate_CreateFcn(hObject, eventdata, handles)
% hObject handle to liveDataSampleRate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%set up options for live data sample rate
set(hObject, 'String', {'8000', '11025', '16000', '22050', '32000', '44100', '48000'});
set(hObject, 'Value', 1);
% --- Executes on button press in stop.
function stop_Callback(hObject, eventdata, handles)
% hObject handle to stop (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%if clicked, set stop equal to 1 and stop the analyze callback
set(handles.stop, 'UserData', 1);
guidata(hObject, handles);
% --- Executes on selection change in expFilterResponse.
function expFilterResponse_Callback(hObject, eventdata, handles)
% hObject handle to expFilterResponse (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns expFilterResponse contents as cell array
% contents{get(hObject,'Value')} returns selected item from expFilterResponse
% --- Executes during object creation, after setting all properties.
function expFilterResponse_CreateFcn(hObject, eventdata, handles)
% hObject handle to expFilterResponse (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%set up options for the exponential filter response and initialize to slow
set(hObject, 'String', {'Slow', 'Medium', 'Fast'});
set(hObject, 'Value', 1);