⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewedf.m

📁 matlab下实现
💻 M
📖 第 1 页 / 共 5 页
字号:
if nargin == 0  % determine which plugin to remove  if length(Data.EDF)==0    errordlg('No EDF-File is open!', 'Error');    return;  end  if length(Data.Plugin) == 0    errordlg('No Plugins are loaded!', 'Error');    return;  end  dlgh = dialog(...      'Name', 'Remove Plugin', ...      'CloseRequestFcn', 'set(gcf,''UserData'',''Cancel'');uiresume;');  dlgpos = get(dlgh, 'Position');  set(dlgh, 'Position', [dlgpos(1),dlgpos(2),200,100]);  PlugNames = {};  % get Plugin names  for i = 1:length(Data.Plugin)    PlugNames = {PlugNames{:}, [Data.Plugin(i).Label, ' (File ', ...            upper(Data.Plugin(i).Name), ')']};  end    poph = uicontrol(dlgh, ...      'Style', 'Popup', ...      'Units', 'Normalized', ...      'String', PlugNames, ...      'Value', 1, ...      'Position', [0.05, 0.5, 0.9, 0.35]);  % buttons  uicontrol(dlgh, ...      'Style', 'PushButton', ...      'Units', 'Normalized', ...      'String', 'Remove', ...      'Position', [0.1, 0.05, 0.3, 0.3], ...      'Callback', 'set(gco,''UserData'',''OK'');uiresume;');  uicontrol(dlgh, ...      'Style', 'PushButton', ...      'Units', 'Normalized', ...      'String', 'Cancel', ...      'Position', [0.6, 0.05, 0.3, 0.3], ...      'Callback', 'set(gco,''UserData'',''Cancel'');uiresume;');    drawnow;  uiwait(dlgh);  whichplugin = get(poph, 'Value');  selbutton = get(gco,'UserData');  delete(dlgh);  if strcmp(selbutton,'Cancel')    return  endenddelete(Data.Display.PluginMenu.Sub(whichplugin));for i = whichplugin:length(Data.Plugin)-1  Data.Display.PluginMenu.Sub(i) = Data.Display.PluginMenu.Sub(i+1);  set(Data.Display.PluginMenu.Sub(i), 'UserData', i);  Data.Display.Plugin(i) = Data.Display.Plugin(i+1);  Data.Plugin(i) = Data.Plugin(i+1);endind = length(Data.Plugin) - 1;if ind == 0  Data.Plugin = [];  Data.Display.Plugin = [];  Data.Display.PluginMenu.Sub = [];else  Data.Plugin = Data.Plugin(1:ind);  Data.Display.Plugin = Data.Display.Plugin(1:ind);  Data.Display.PluginMenu.Sub = Data.Display.PluginMenu.Sub(1:ind);endset(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);LocalRepaint;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LocalPluginMenu% Call plugin for setupfunction LocalPluginMenu()ind = get(gcbo, 'UserData');Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');[Data.Plugin(ind).EDF, Data.Plugin(ind).UserData] = ...    feval(Data.Plugin(ind).Name, Data.EDF(Data.Plugin(ind).EDFFile), ...    Data.Plugin(ind).UserData, 'Menu');% Uncomment to reset display properties after a call of the plugin-menu%Data.Display.Plugin(ind).ShowSignals = 1:Data.Plugin(ind).EDF.Head.NS;%Data.Display.Plugin(ind).DisplayMin = Data.Plugin(ind).EDF.Head.PhysMin;%Data.Display.Plugin(ind).DisplayMax = Data.Plugin(ind).EDF.Head.PhysMax;%Data.Display.Plugin(ind).StairPlot = ...%    zeros(1, Data.Plugin(ind).EDF.Head.NS);%Data.Display.Plugin(ind).UpDownPlot = ...%    zeros(1, Data.Plugin(ind).EDF.Head.NS);set(findobj('Tag', 'ViewEDFFigure'), 'UserData',Data);LocalRepaint(0);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalChangeRecord% Change displayed pagefunction LocalChangeRecord(increment, changetype)Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF) == 0  errordlg('No EDF-File is open!', 'Error');  return;endDur = LocalGetEDFInfo('Dur',Data.EDF);[MDur, MDInd] = max(Dur);FLen = max(LocalGetEDFInfo('FileDur', Data.EDF));[MFLen, MFInd] = max(FLen);RelInc = round(ones(size(Dur)) * max(Dur) ./ Dur);Inc = increment * RelInc;for i = 1:length(Data.EDF)  switch changetype    case 0 % incremental      Data.Display.EDF(i).ShowRecords(1) = Data.Display.EDF(i).ShowRecords(1) ...          + Inc(i) * Data.Display.EDF(MDInd).ShowRecords(2);     case 1 % absolute      Data.Display.EDF(i).ShowRecords(1) = Inc(i);  endend% check whether we are moving to fartemp = Data.Display.EDF(MDInd).ShowRecords(1);if temp < 0  for i = 1:length(Data.EDF)    Data.Display.EDF(i).ShowRecords(1) = Data.Display.EDF(i).ShowRecords(1) ...        - temp * RelInc(i);  endendtemp = sum(Data.Display.EDF(MFInd).ShowRecords(1:2)) - ...    Data.EDF(MFInd).Head.NRec; if temp > 0  temp = ceil(temp / RelInc(MFInd));  for i = 1:length(Data.EDF)    Data.Display.EDF(i).ShowRecords(1) = Data.Display.EDF(i).ShowRecords(1) - ...        temp * RelInc(i);   endend  for i=1:length(Data.EDF)  temp = sum(Data.Display.EDF(i).ShowRecords(1:2)) - ...      Data.EDF(i).Head.NRec;  whichrec(1) = Data.Display.EDF(i).ShowRecords(1);  if temp > 0    % do not read to much data    whichrec(2) = Data.Display.EDF(i).ShowRecords(2) - temp;    if (whichrec(2) < 0)      whichrec(2) = 0;    end    [temp, Data.EDF(i).Head] = LocalEDFRead(Data.EDF(i).Head, whichrec);    for j = 1:Data.EDF(i).Head.NS      Data.EDF(i).Record{j} = zeros(Data.Display.EDF(i).ShowRecords(2) * ...          Data.EDF(i).Head.SPR(j));      if ~isempty(temp)        Data.EDF(i).Record{j}(1:length(temp{j})) = temp{j};      end    end  else    [Data.EDF(i).Record, Data.EDF(i).Head] = ...        LocalEDFRead(Data.EDF(i).Head, Data.Display.EDF(i).ShowRecords);   endendset(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);LocalRepaint(1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalHSroll% Goto recordfunction LocalHScrollData = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');MaxVal = max(LocalGetEDFInfo('FileDur',Data.EDF));MaxDur = max(LocalGetEDFInfo('Dur', Data.EDF));pos = get(gcbo, 'Value');LocalChangeRecord(round(pos*MaxVal/MaxDur), 1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalGotoRecord% Goto recordfunction LocalGotoRecord(Pos)Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF)==0  errordlg('No EDF-File is open!', 'Error');  return;end[temp, ind] = max(LocalGetEDFInfo('Dur', Data.EDF));if (nargin == 0)  answer = inputdlg({'Select record'}, 'Change start record', 1, ...                    {int2str(Data.Display.EDF(ind).ShowRecords(1))});  if (length(answer) ~= 0)    answer = str2num(answer{1});    if ~isempty(answer)      LocalChangeRecord(answer, 1);    end  endelse  Pos = round(Pos);  if Pos >= 0    LocalChangeRecord(Pos, 1);  endend    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalGotoSecond% Goto secondfunction LocalGotoSecond(Pos)Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF)==0  errordlg('No EDF-File is open!', 'Error');  return;end[temp, ind] = max(LocalGetEDFInfo('Dur', Data.EDF));if (nargin == 0)  answer = inputdlg({'Select second'}, 'Change start time', 1, ...    {int2str(round(Data.Display.EDF(ind).ShowRecords(1) / ...
      Data.EDF(ind).Head.Dur))});  if (length(answer) ~= 0)    answer = str2num(answer{1});    if ~isempty(answer)      LocalChangeRecord(answer / Data.EDF(ind).Head.Dur, 1);    end  endelse  Pos = round(Pos / Data.EDF(ind).Head.Dur);  if Pos >= 0    LocalChangeRecord(Pos, 1);  endend    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalRecordProp% display channel propertiesfunction LocalRecordProp()Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF)==0  errordlg('No EDF-File is open!', 'Error');  return;endwhichbut = get(gcbo, 'UserData');Rec = whichbut{2};Num = whichbut{3};switch whichbut{1}  case 'EDF'    RecHead = Data.EDF(Num).Head;    RecDisp = Data.Display.EDF(Num);    DataType = 'EDF File';    TypeString = 'Filename :';    OptString = [Data.EDF(Num).Head.FILE.Name '.' Data.EDF(Num).Head.FILE.Ext];  case 'PLUGIN'    RecHead = Data.Plugin(Num).EDF.Head;    RecDisp = Data.Display.Plugin(Num);    DataType = 'Plugin';    TypeString = 'Name :';    OptString = Data.Plugin(Num).Label;enddlgh = dialog(...    'Name', 'Channel Information', ...    'CloseRequestFcn', 'set(gcf,''UserData'',''Cancel'');uiresume;');dlgpos = get(dlgh, 'Position');set(dlgh, 'Position', [dlgpos(1),dlgpos(2),350,300]);Fnthgt = LocalGetFontHeight;yinc = 0.085;% general informationlinenum=1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', [ 'Record read from ' DataType], ...    'Position', [0.02, 1-linenum*yinc, 0.96, Fnthgt ]);% filenamelinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', TypeString, ...    'Position', [0.02, 1-linenum*yinc, 0.96, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', OptString, ...    'Position', [0.35, 1-linenum*yinc, 0.63, Fnthgt]);% labellinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Label : ', ...    'Position', [0.02, 1-linenum*yinc, 0.96, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', RecHead.Label(Rec,:), ...    'Position', [0.35, 1-linenum*yinc, 0.63, Fnthgt]);% Transducerlinenum=linenum+1;uicontrol(dlgh, ...  'Style', 'Text', ...  'Units', 'Normalized', ...  'HorizontalAlignment', 'left', ...  'String', 'Transducer :', ...  'Position', [0.02, 1-linenum*yinc, 0.96, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', RecHead.Transducer(Rec, :), ...    'Position', [0.35, 1-linenum*yinc, 0.63, Fnthgt]);% Prefilterlinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Prefilter :', ...    'Position', [0.02, 1-linenum*yinc, 0.96, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', RecHead.PreFilt(Rec, :), ...    'Position', [0.35, 1-linenum*yinc, 0.63, Fnthgt]);% samples per recordslinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Samples per record  :', ...    'Position', [0.02, 1-linenum*yinc, 0.96, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', sprintf('%d', RecHead.SPR(Rec)), ...    'Position', [0.35, 1-linenum*yinc, 0.63, Fnthgt]);% physical minlinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Physical min :', ...    'Position', [0.02, 1-linenum*yinc, 0.45, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', sprintf('%f', RecHead.PhysMin(Rec)), ...    'Position', [0.25, 1-linenum*yinc, 0.25, Fnthgt]);% physical maxuicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Physical max :', ...    'Position', [0.52, 1-linenum*yinc, 0.45, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', sprintf('%f', RecHead.PhysMax(Rec)), ...    'Position', [0.77, 1-linenum*yinc, 0.25, Fnthgt]);% digital minlinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Digital min :', ...    'Position', [0.02, 1-linenum*yinc, 0.45, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'FontWeight', 'bold', ...    'String', sprintf('%d', RecHead.DigMin(Rec)), ...    'Position', [0.25, 1-linenum*yinc, 0.25, Fnthgt]);% digital maxuicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Digital max :', ...    'Position', [0.52, 1-linenum*yinc, 0.45, Fnthgt]);uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -