transform matrix to map dipole potencial to EEG potencial [Peeg] = vb_bem_inverse_eeg(D,IXeeg,BEM) D : Solid angle matrix for boundary surfaces [Nvertex x Nvertex] IXeeg : Vertex index for EEG sensor [Nsensor x 1] BEM.sigma = conductivity for each layer, 各領域の伝導率 = [sigma(1), ..., sigma(Nsurf), 0] BEM.Nvertex = # of vertex for each layer, 各境界面の頂点 = [ start_id(1) end_id(1) ; ... ; start_id(Nsurf) end_id(Nsurf) ] = [開始インデックス, 終了インデックス] Peeg : transform matrix to map dipole potencial to EEG potencial [Nsensor x Nvertex] Peeg : 双極子ポテンシャルからEEG センサポテンシャルへの変換行列 2004-02-06 Taku Yoshioka 2004-12-26 M. Sato modified 2007-12-16 M. Sato Input & output are changed 2008-10-8 M. Sato input is changed from 'Keeg' to 'BEM' 2009-10-8 M. Sato correct constant factor : 1/sigma(1) Copyright (C) 2011, ATR All Rights Reserved. License : New BSD License(see VBMEG_LICENSE.txt)
0001 function [Peeg] = vb_bem_inverse_eeg(D,IXeeg,BEM) 0002 % transform matrix to map dipole potencial to EEG potencial 0003 % [Peeg] = vb_bem_inverse_eeg(D,IXeeg,BEM) 0004 % D : Solid angle matrix for boundary surfaces [Nvertex x Nvertex] 0005 % IXeeg : Vertex index for EEG sensor [Nsensor x 1] 0006 % BEM.sigma = conductivity for each layer, 各領域の伝導率 0007 % = [sigma(1), ..., sigma(Nsurf), 0] 0008 % BEM.Nvertex = # of vertex for each layer, 各境界面の頂点 0009 % = [ start_id(1) end_id(1) ; 0010 % ... ; 0011 % start_id(Nsurf) end_id(Nsurf) ] 0012 % = [開始インデックス, 終了インデックス] 0013 % 0014 % Peeg : transform matrix to map dipole potencial to EEG potencial 0015 % [Nsensor x Nvertex] 0016 % Peeg : 双極子ポテンシャルからEEG センサポテンシャルへの変換行列 0017 % 0018 % 2004-02-06 Taku Yoshioka 0019 % 2004-12-26 M. Sato modified 0020 % 2007-12-16 M. Sato Input & output are changed 0021 % 2008-10-8 M. Sato input is changed from 'Keeg' to 'BEM' 0022 % 2009-10-8 M. Sato correct constant factor : 1/sigma(1) 0023 % 0024 % Copyright (C) 2011, ATR All Rights Reserved. 0025 % License : New BSD License(see VBMEG_LICENSE.txt) 0026 0027 % 変数の次元 0028 NS = length(IXeeg); % # of sensor 0029 NV = size(D,1); % # of vertex 0030 0031 % 境界面頂点からEEGセンサへの射影行列 0032 Proj = zeros(NS,NV); 0033 0034 for n=1:NS 0035 Proj(n,IXeeg(n)) = 1/(4*pi); 0036 end 0037 0038 % Peeg : 双極子ポテンシャル P0 からEEG センサポテンシャルへの変換行列 0039 % P : 求めたい境界面上のポテンシャル 0040 % P0 : 境界面上の双極子ポテンシャル 0041 % D : 境界面立体角係数行列 0042 % Keeg : 多層モデルポテンシャル(EEG) 補正係数 0043 % P(EEG) : EEG センサポテンシャル 0044 % Proj : EEG センサへの射影行列 0045 % 0046 % D * P = Keeg .* P0 0047 % P = inv(D) * (Keeg .* P0) 0048 % P(EEG) = Proj * P = (Proj * inv(D)) * (Keeg' .* P0) 0049 % = Peeg * P0 0050 % Peeg = (Proj * inv(D)) .* Keeg 0051 % 0052 0053 Peeg = Proj/D; 0054 0055 % 多層モデルの場合: 伝導率による補正 0056 if exist('BEM','var'), 0057 if isempty(BEM), return; end; 0058 0059 % 多層モデルの場合: 伝導率による補正 0060 0061 Nvertex = BEM.Nvertex; % 各境界面の頂点 0062 Nsurf = size(Nvertex,1); % 境界面の数 0063 sigma = BEM.sigma ; % 各領域の伝導率 0064 0065 if length(sigma)== Nsurf, sigma = [sigma(:); 0]; end; 0066 0067 Keeg = ones(1,NV); % EEG ポテンシャル 計算補正係数 0068 0069 % 境界面に関するループ 0070 for i=1:Nsurf, 0071 ix = Nvertex(i,1):Nvertex(i,2); 0072 0073 % ポテンシャル係数 0074 Keeg(ix) = 1/(sigma(i) + sigma(i+1)); 0075 %Keeg(ix) = sigma(1)/(sigma(i) + sigma(i+1)); 0076 %Keeg(ix) = 2*sigma(2)/(sigma(i) + sigma(i+1)); 0077 end 0078 0079 Peeg = vb_repmultiply(Peeg , Keeg); 0080 end; 0081