?? q_topoplot.m
字號:
function handle = q_topoplot(varargin)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%本函數功能為繪制腦電地形圖%要求輸入參數至少為兩個,第1個為繪圖數據序列,第2個為導聯位置矩陣%導聯位置矩陣要求為4列元胞矩陣,第1列為序號,第2,3列為極坐標的極角與極徑,第四列為導聯標志符號%極軸的取向為頂部至鼻尖,極角取值未頭部左半球負值,右半球正值,極徑的最大值為0.5%其他輸入參數定義為:% 繪制風格參數:style, 默認值為both% style取值:fill(塊填充),contour(僅等高線),surface(平滑過渡),both(等高線兼平滑過渡)% 等高線條數參數:CONTOURNUM,默認值為6% 頭皮電極繪制風格參數:electrode,默認值為'on'% electrode取值:開,'on';關,'off';符號標識,'labels';序號標識,'number'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%檢測輸入參數數量,必須包含繪圖數據及導聯位置矩陣,且其維度必須符合if nargin < 2 error('q_topoplot(): 輸入參數必須大于等于2');enddata_leads=varargin{1};loc_leads=varargin{2};[r,c] = size(data_leads);if r>1 & c>1, error('q_topoplot(): 繪圖數據必須為一維向量');endif size(loc_leads,2) < 3 error('q_topoplot(): 導聯位置矩陣要求至少為三列');end if length(data_leads)~=size(loc_leads{1},1) error('q_topoplot(): 繪圖數據與導聯位置矩陣格式不匹配');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%由繪圖數據進行插值,計算頭部各點的腦電數據Th = pi/180*loc_leads{2}; % 轉化為弧度Rd = loc_leads{3};[x,y] = pol2cart(Th,Rd); % 轉化為直角座標rmax = 0.5;ha = gca;clahold onGRID_SCALE = 100;xi = linspace(-0.5,0.5,GRID_SCALE); % x-axis description (row vector)yi = linspace(-0.5,0.5,GRID_SCALE); % y-axis description (row vector)[Xi,Yi,Zi] = griddata(y,x,data_leads,yi',xi,'invdist'); % 進行插值 % 屏蔽腦外的區域mask = (sqrt(Xi.^2+Yi.^2) <= rmax);ii = find(mask == 0);Zi(ii) = NaN; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 計算頭部輪廓繪制所需的坐標矩陣l = 0:2*pi/100:2*pi;basex = 0.18*rmax; tip = rmax*1.15; base = rmax-0.004;EarX = [.497 .510 .518 .5299 .5419 .54 .547 .532 .510 .489];EarY = [.0555 .0775 .0783 .0746 .0555 -.0055 -.0932 -.1313 -.1384 -.1199]; % Plot Head, Ears, NoseHCOLOR = [0 0 0];HLINEWIDTH = 2; %定義繪制頭部及耳朵和鼻子的線型、顏色及寬度plot(cos(l).*rmax,sin(l).*rmax,... 'color',HCOLOR,'Linestyle','-','LineWidth',HLINEWIDTH); %頭部plot([.18*rmax;0;-.18*rmax],[base;tip;base],... 'Color',HCOLOR,'LineWidth',HLINEWIDTH); %鼻子plot(EarX,EarY,'color',HCOLOR,'LineWidth',HLINEWIDTH) %右耳plot(-EarX,EarY,'color',HCOLOR,'LineWidth',HLINEWIDTH) %左耳%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 由插值完成的數據繪制頭部腦電地形圖 %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% % 定義繪制風格 % 繪制風格為fill(塊填充),contour(僅等高線),surface(平滑過渡),both (等高線兼平滑過渡)默認值為both STYLE = 'both'; CONTOURNUM = 10; % 等高線數量,默認值為6條 SHADING = 'flat'; % flat or interp delta = xi(2)-xi(1); % 網格寬度 % 檢測要求的繪制風格 for i=3:2:nargin if strcmp(lower(varargin{i}),'style') STYLE=varargin{i+1}; end if strcmp(lower(varargin{i}),'contournum') CONTOURNUM=varargin{i+1}; end end if strcmp(STYLE,'contour') contour(Xi,Yi,Zi,CONTOURNUM,'k'); elseif strcmp(STYLE,'both') surface(Xi-delta/2,Yi-delta/2,zeros(size(Zi)),Zi,'EdgeColor','none',... 'FaceColor',SHADING); contour(Xi,Yi,Zi,CONTOURNUM,'k'); elseif strcmp(STYLE,'surface') surface(Xi-delta/2,Yi-delta/2,zeros(size(Zi)),Zi,'EdgeColor','none',... 'FaceColor',SHADING); elseif strcmp(STYLE,'fill') contourf(Xi,Yi,Zi,CONTOURNUM,'k'); else error('Invalid style') end set(ha,'Xlim',[-rmax*1.3 rmax*1.3],'Ylim',[-rmax*1.3 rmax*1.3]) %確定顯示坐標范圍,將地形圖置于坐標軸正中 %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% %檢測圖形中是否要求繪出電極 ELECTRODE='on'; %電極繪出格式為:開,關,符號標識,數字標識,默認為開 for i=3:2:nargin if strcmp(lower(varargin{i}),'electrode') ELECTRODE=varargin{i+1}; end end % Plot Electrodes EMARKERSIZE = 6;EMARKER = '.';ECOLOR = [0 0 0]; EFSIZE = get(0,'DefaultAxesFontSize'); %電極繪制風格 if strcmp(ELECTRODE,'on') hp2 = plot(y,x,EMARKER,'Color',ECOLOR,'markersize',EMARKERSIZE); elseif strcmp(ELECTRODE,'labels') if size(loc_leads,2)<4 error('導聯位置矩陣中未含有導聯符號標識信息') else labels=loc_leads{4}; end for i = 1:size(labels,1) text(y(i),x(i),labels(i,:),'HorizontalAlignment','center',... 'VerticalAlignment','middle','Color',ECOLOR,'FontSize',EFSIZE) end elseif strcmp(ELECTRODE,'number') labels=loc_leads{1}; for i = 1:size(labels,1) text(y(i),x(i),int2str(labels(i)),'HorizontalAlignment','center',... 'VerticalAlignment','middle','Color',ECOLOR,'FontSize',EFSIZE) end end hold off;axis off;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -