58 lines
1.6 KiB
Matlab
58 lines
1.6 KiB
Matlab
%%
|
|
clear all
|
|
close all
|
|
clc
|
|
|
|
%% Import Data
|
|
load('data.mat');
|
|
|
|
%% Example: Plot the raw signal
|
|
signal=Flex.signal;
|
|
labels=Flex.trigger;
|
|
TRIG = gettrigger(labels,0.5);
|
|
TRIGend = gettrigger(-labels,-0.5);
|
|
|
|
figure('units','normalized','Position',[0.1,0.1,0.7,0.4])
|
|
plot((1:length(signal))./fs,zscore(signal));
|
|
hold on;
|
|
plot((1:length(signal))./fs,zscore(labels),'y');
|
|
stem(TRIG./fs,ones(length(TRIG),1)*max(zscore(labels)),'Color','g');
|
|
stem(TRIGend./fs,ones(length(TRIG),1)*max(zscore(labels)),'Color','r');
|
|
grid on; grid minor;
|
|
xlim([0,length(signal)./fs])
|
|
xlabel('Time (s)')
|
|
ylabel('Amplitude (uV)')
|
|
title('Raw VF signal with labels for stimulation periods')
|
|
|
|
%% Example: PSD estimates
|
|
figure('units','normalized','Position',[0.1,0.1,0.5,0.5])
|
|
[rows_act,cols_act,values_act] = find(labels>0);
|
|
[rows_rest1,cols_rest,values_rest] = find(labels==0);
|
|
notOfInterest = signal(rows_rest1);
|
|
signalOfInterest=signal(rows_act);
|
|
h = spectrum.welch; % creates the Welch spectrum estimator
|
|
SOIf=psd(h,signalOfInterest,'Fs',fs); % calculates and plot the one sided PSD
|
|
plot(SOIf); % Plot the one-sided PSD.
|
|
temp =get(gca);
|
|
temp.Children(1).Color = 'b';
|
|
|
|
% %% Bandpass Filtering
|
|
%
|
|
% fc1 = 0; % first cutoff frequency in Hz
|
|
% fc2 = 100; % second cutoff frequency in Hz
|
|
%
|
|
% % normalize the frequencies
|
|
% Wp = [fc1 fc2]*2/fs;
|
|
|
|
% Build a Butterworth bandpass filter of 4th order
|
|
% check the "butter" function in matlab
|
|
|
|
% Filter data of both classes with a non-causal filter
|
|
% Hint: use "filtfilt" function in MATLAB
|
|
% filteredSignal = ;
|
|
|
|
%%
|
|
|
|
|
|
|