CB-Frequency-Coding-of-Motor-Kinematics / Chirp / Apub_ChirpDetectPoint_v2.m
Apub_ChirpDetectPoint_v2.m
Raw
% Detect EP trigger points for chirp waves (local maximum)
% Step1: load .ns6 file
% Step2: load proper Chirp File.mat (should be correct in fs, frequencies and duration)
% Step3: output EPindex as the correct EP detect points. 

clear all; close all;
%% input parameters
Th=1000;
PlotFigure=1; % if ==1, plot figure (will be slow)
ChSig1=[136]; % EP channel
ChRef1=[0]; % if ==0, no reference.

EPChannel1=1; % if==1, EPChannelRaw=Signal1; ==2, EPchannelRaw=Signal2;

%%%%%%%%% Put input parameters into structure %%%%%%%%%%%%%
save temp.mat;
a_InputParameters=load('temp.mat');
delete temp.mat;
%% load data
[GetFileName GetFilePath]=uigetfile('*.ns*'); % get filename and path
NSx=openNSx([GetFilePath GetFileName]);

SourceFile=[NSx.MetaTags.Filename NSx.MetaTags.FileExt];
data=double(NSx.Data');
NSx=rmfield(NSx,'Data'); 
a_InputParameters.SourceFile=SourceFile;
fs=double(NSx.MetaTags.SamplingFreq);
a_InputParameters.fs=fs;
%% Re-asign channelID to legacy variables %%%%%%%%%%
 ChannelSignal1=find(NSx.MetaTags.ChannelID==ChSig1);
 if ChRef1==0; ChannelRef1=0; 
 else ChannelRef1=find(NSx.MetaTags.ChannelID==ChRef1);
 end
%% Assign channel %%%
    if ChannelRef1==0;
        Signal1=data(:,ChannelSignal1);
    else
        Signal1=data(:,ChannelSignal1)-data(:,ChannelRef1);
    end
    clear data;


%% load ChirpWaves
[C,D]=uigetfile('Chirp*.mat');
load([D,C],'ChirpWave');
a_InputParameters.ChirpFileSource=C;
clear C D;

%% Add threshold and find first chirp points
EPChannelRaw=Signal1;
clear Signal1;
A=find(EPChannelRaw<=Th);
EPChannelRaw(A)=0;
clear A;



=min(find(EPChannelRaw>0));
SigChirp(1:length(EPChannelRaw))=0;
SigChirp(X:X+length(ChirpWave)-1)=ChirpWave;
[A,EPindex]=findpeaks(SigChirp);


save('EPindex_ChirpWave','NSx','a_InputParameters','ChirpWave','SigChirp','EPindex','-v7.3');


%% plot
Tvec=0:1:(length(EPChannelRaw)-1);
%Tvec=Tvec/fs;

if PlotFigure==1;
   figure;
    H1=plot(Tvec,EPChannelRaw);

    figure;
    H2=plot(Tvec,[EPChannelRaw';SigChirp*3000]);

end