Home > vbmeg > functions > brain > vb_extract_peak.m

vb_extract_peak

PURPOSE ^

extract multiple local peak current

SYNOPSIS ^

function [ix_peak] = vb_extract_peak(J,ix_J,ix_area,nextDD,nextIX,Rs,Re)

DESCRIPTION ^

 extract multiple local peak current
   [ix_peak] = vb_extract_peak(J,ix_J,ix_area,nextDD,nextIX,Rsearch,Rpeak)
 --- Input
 J(n,t)         : n-th vertex 、時間 t の電流
 ix_J(n)        : J(n,t) に対応する頂点の全脳インデックス
 ix_area{Npeak} : 領域ix_area{i}周辺の電流強度ピークを探索する
 Rsearch        : 領域ix_area{i}から半径 Rsearch [m] 以内の領域でピーク探索
 Rpeak          : ピーク点から半径 Rpeak [m] 以内の点をix_peak{i}に抽出
 nextDD,nextIX  : 全脳モデル近傍情報

 --- Output
 推定電流強度のピーク点を Npeak 個 抽出する

 ix_peak{i}: ix_area{i}のピーク点とその近傍点の頂点インデックス (i=1:Npeak)
 ix_peak{i}(1) は ix_area{i} のピーク点インデックスとなる。

 --- Example
 ix_area = {[1:100], [1:100], [200:300]};
 [nextDD,nextIX] = vb_load_cortex_neighbour(brainfile) 
 [ix_peak] = vb_extract_peak(Jact, ix_act, ix_area, nextDD, nextIX, 0, 0.006)

 インデックス [1:100] の点から、最大ピーク点と第2ピーク点を探し、
 インデックス [200:300] の点から、最大ピーク点を探す。
 また、それぞれのピーク点から半径6mm 以内の近傍点インデックスを抽出
 第2ピーク点探索時には、最大ピーク点から 6mm 以内の点は除外される。

 --- Notes
 * i番目のピークを抽出する際、
   ix_peak{j} (j < i) に含まれる頂点は探索範囲から除外される。

 2003-03-08 Taku Yoshioka
 2006-9-18 M. Sato

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ix_peak] = vb_extract_peak(J,ix_J,ix_area,nextDD,nextIX,Rs,Re)
0002 % extract multiple local peak current
0003 %   [ix_peak] = vb_extract_peak(J,ix_J,ix_area,nextDD,nextIX,Rsearch,Rpeak)
0004 % --- Input
0005 % J(n,t)         : n-th vertex 、時間 t の電流
0006 % ix_J(n)        : J(n,t) に対応する頂点の全脳インデックス
0007 % ix_area{Npeak} : 領域ix_area{i}周辺の電流強度ピークを探索する
0008 % Rsearch        : 領域ix_area{i}から半径 Rsearch [m] 以内の領域でピーク探索
0009 % Rpeak          : ピーク点から半径 Rpeak [m] 以内の点をix_peak{i}に抽出
0010 % nextDD,nextIX  : 全脳モデル近傍情報
0011 %
0012 % --- Output
0013 % 推定電流強度のピーク点を Npeak 個 抽出する
0014 %
0015 % ix_peak{i}: ix_area{i}のピーク点とその近傍点の頂点インデックス (i=1:Npeak)
0016 % ix_peak{i}(1) は ix_area{i} のピーク点インデックスとなる。
0017 %
0018 % --- Example
0019 % ix_area = {[1:100], [1:100], [200:300]};
0020 % [nextDD,nextIX] = vb_load_cortex_neighbour(brainfile)
0021 % [ix_peak] = vb_extract_peak(Jact, ix_act, ix_area, nextDD, nextIX, 0, 0.006)
0022 %
0023 % インデックス [1:100] の点から、最大ピーク点と第2ピーク点を探し、
0024 % インデックス [200:300] の点から、最大ピーク点を探す。
0025 % また、それぞれのピーク点から半径6mm 以内の近傍点インデックスを抽出
0026 % 第2ピーク点探索時には、最大ピーク点から 6mm 以内の点は除外される。
0027 %
0028 % --- Notes
0029 % * i番目のピークを抽出する際、
0030 %   ix_peak{j} (j < i) に含まれる頂点は探索範囲から除外される。
0031 %
0032 % 2003-03-08 Taku Yoshioka
0033 % 2006-9-18 M. Sato
0034 %
0035 % Copyright (C) 2011, ATR All Rights Reserved.
0036 % License : New BSD License(see VBMEG_LICENSE.txt)
0037 
0038 Npeak = length(ix_area); % 抽出ピーク数
0039 
0040 %
0041 % 探索範囲の決定
0042 %
0043 ix_search = cell(Npeak,1);
0044 
0045 for i = 1:Npeak
0046   if isempty(ix_area{i})
0047     ix_search{i} = '';
0048   else
0049     ix_search{i} = [];
0050     for j = 1:length(ix_area{i})
0051       ix_tmp = find(nextDD{ix_area{i}(j)}<=Rs);
0052       ix_search{i} = [ix_search{i}; nextIX{ix_area{i}(j)}(ix_tmp)];
0053     end
0054     ix_search{i} = unique(ix_search{i});
0055   end
0056 end
0057 
0058 %
0059 % 電流分布のピークを抽出
0060 %
0061 JJ = sum(abs(J),2);
0062 ix_peak = cell(Npeak,1);
0063 n_peak  = 0;
0064 
0065 for i = 1:Npeak
0066   % transform to relative index within 'ix_J'
0067   [jx , jx_all]= vb_index2indexsub(ix_search{i}, ix_J);
0068   if isempty(jx), continue; end;
0069   
0070   % Find maximum vertex
0071   [tmp,ix_max] = max(JJ(jx));
0072   
0073   % Absolute index for maximum vertex
0074   ix_max = jx_all(ix_max);
0075   
0076   % Neighbor index within Radius 'Re'
0077   n_peak  = n_peak + 1;
0078   ix_next = find( nextDD{ix_max} <= Re );
0079   ix_peak{n_peak} = nextIX{ix_max}(ix_next);
0080   
0081   % Eliminate previous peak points
0082   kx = vb_index2indexsub(ix_peak{n_peak}, ix_J);
0083   JJ(kx) = 0;
0084 end
0085 
0086

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005