• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: eeg  plv  

资源简介

脑电信号不同通道之间相位所定值,计算脑电不同电极之间的PLV

资源截图

代码片段和文件信息

function [plv] = pn_eegPLV(eegData srate filtSpec dataSelectArr)
% Computes the Phase Locking Value (PLV) for an EEG dataset.
%
% Input parameters:
%   eegData is a 3D matrix numChannels x numTimePoints x numTrials
%   srate is the sampling rate of the EEG data
%   filtSpec is the filter specification to filter the EEG signal in the
%     desired frequency band of interest. It is a structure with two
%     fields order and range. 
%       Range specifies the limits of the frequency
%     band for example put filtSpec.range = [35 45] for gamma band.
%       Specify the order of the FIR filter in filtSpec.order. A useful
%     rule of thumb can be to include about 4 to 5 cycles of the desired
%     signal. For example filtSpec.order = 50 for eeg data sampled at
%     500 Hz corresponds to 100 ms and contains ~4 cycles of gamma band
%     (40 Hz).
%   dataSelectArr (OPTIONAL) is a logical 2D matrix of size - numTrials x
%     numConditions. For example if you have a 250 trials in your EEG
%     dataset and the first 125 correspond to the ‘attend‘ condition and
%     the last 125 correspond to the ‘ignore‘ condition then use
%     dataSelectArr = [[true(125 1); false(125 1)]...
%       [false(125 1); true(125 1)]];
%
% Output parameters:
%   plv is a 4D matrix - 
%     numTimePoints x numChannels x numChannels x numConditions
%   If ‘dataSelectArr‘ is not specified then it is assumed that there is
%   only one condition and all trials belong to that condition.
%
%--------------------------------------------------------------------------
% Example: Consider a 28 channel EEG data sampled @ 500 Hz with 231 trials
% where each trial lasts for 2 seconds. You are required to plot the phase
% locking value in the gamma band between channels Fz (17) and Oz (20) for
% two conditions (say attend and ignore). Below is an example of how to
% use this function.
%
%   eegData = rand(28 1000 231); 
%   srate = 500; %Hz
%   filtSpec.order = 50;
%   filtSpec.range = [35 45]; %Hz
%   dataSelectArr = rand(231 1) >= 0.5; % attend trials
%   dataSelectArr(: 2) = ~dataSelectArr(: 1); % ignore trials
%   [plv] = pn_eegPLV(eegData srate filtSpec dataSelectArr);
%   figure; plot((0:size(eegData 2)-1)/srate squeeze(plv(: 17 20 :)));
%   xlabel(‘Time (s)‘); ylabel(‘Plase Locking Value‘);
%
% NOTE:
% As you have probably noticed in the plot from the above example the PLV 
% between two random signals is spuriously large in the first 100 ms. While 
% using FIR filtering and/or hilbert transform it is good practice to 
% discard both ends of the signal (same number of samples as the order of 
% the FIR filter or more).

% Also note that in order to extract the PLV between channels 17 and 20 
% use plv(: 17 20 :) and NOT plv(: 20 17 :). The smaller channel 
% number is to be used first.
%--------------------------------------------------------------------------

% Reference:
%   Lachaux J P E Rodriguez J Martinerie and F J Varela. 
%

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1337  2011-08-16 10:49  license.txt
     文件        4698  2011-05-29 03:59  pn_eegPLV.m

评论

共有 条评论