Skip to content

Commit a5b80b1

Browse files
committed
Fix and update examples.
1 parent 7b040b8 commit a5b80b1

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

toolbox/dependencies/+bossapi

toolbox/examples/demo_amplitude_threshold_tracking.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,4 @@
114114
disp('Experiment finished');
115115

116116
%% Clean up
117-
bd.stop;
118-
bd.removeAllInstruments;
117+
bd.stop;

toolbox/examples/demo_phase_prediction_error_simple.m

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020

2121
%% Setting Filters to BOSS Device
2222
% this allows calibrating the oscillation analysis to an individual peak frequency
23-
bd.alpha.bpf_fir_coeffs = firls(70, [0 6 9 13 16 (500/2)]/(500/2), [0 0 1 1 0 0], [1 1 1]);
23+
% bd.alpha.bpf_fir_coeffs = firls(70, [0 6 9 13 16 (500/2)]/(500/2), [0 0 1 1 0 0], [1 1 1]);
2424
%fvtool(bd.alpha.bpf_fir_coeffs, 'Fs', 500) % visualize filter
2525

2626

2727
%% Configuring an instrument buffer to acquire data
2828
instObj = slrealtime.Instrument;
29-
instObj.addSignal('spf_sig_500Hz');
29+
instObj.addSignal('spf_sig');
3030
instObj.addSignal('osc','BusElement','alpha.ip');
3131
instObj.BufferData = true;
3232

@@ -42,27 +42,26 @@
4242
sigData = mapData.values;
4343

4444
% Extract data and downsample fast signal
45-
osc_alpha_ipData = sigData{1}.data;
46-
spf_sigData = squeeze(sigData{2}.data)';
45+
osc_alpha_ip = timetable(seconds(sigData{1}.time),sigData{1}.data(:,1));
46+
spf_sig = squeeze(sigData{2}.data)';
47+
spf_sig = timetable(seconds(sigData{2}.time),spf_sig(:,1));
4748

48-
% Compute sample frequency
49-
fs = 1/mean(diff(sigData{1}.time));
49+
syncedData = synchronize(osc_alpha_ip, spf_sig, 'first', 'nearest');
5050

5151
% Compensante offset in instantaneous predicted phase
5252
numSamples = bd.alpha.offset_samples;
53-
assert(numSamples >= 1)
54-
spf_sigData = spf_sigData(1+numSamples-1:end, 1);
55-
osc_alpha_ipData = osc_alpha_ipData(1:size(spf_sigData,1),end);
53+
assert(numSamples >= 1);
5654

5755

5856
%% Phase error using standard non-causal methods
5957
disp('Determining phase using standard non-causal methods...');
6058

61-
% Build zero phase band-pass filter
62-
PhaseErrorFilter = designfilt('bandpassfir', 'FilterOrder', round(fs), 'CutoffFrequency1', 9, 'CutoffFrequency2', 13, 'SampleRate', fs);
59+
% Obtain applied filter
60+
oscBPFcoeffs = bd.getparam('OSC/alpha', 'bpf_fir_coeffs');
6361

6462
% Compute phase prediction error
65-
[phaseError, meanError, meanDev] = bossapi.boss.computePhasePredictionError(PhaseErrorFilter, spf_sigData(:,1), osc_alpha_ipData(:,1));
63+
[phaseError, meanError, meanDev] = bossapi.boss.computePhasePredictionError(oscBPFcoeffs,...
64+
syncedData.Var1_spf_sig(1+numSamples:end), syncedData.Var1_osc_alpha_ip(1:end-numSamples));
6665

6766
disp('Done.');
6867

@@ -71,9 +70,9 @@
7170
polarhistogram(phaseError, 'Normalization', 'probability', 'BinWidth', pi/36);
7271
ax = gca;
7372
ax.ThetaZeroLocation = 'Top';
73+
ax.ThetaLim = [-180 180];
7474
title(sprintf('Circular mean = %.1f°\nCircular standard deviation = %.1f°', meanError, meanDev));
7575

7676

7777
%% Stop and reset instrumentation
78-
bd.stop;
79-
bd.removeInstrument(instObj);
78+
bd.stop;

0 commit comments

Comments
 (0)