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

📄 viewedf.m

📁 matlab下实现
💻 M
📖 第 1 页 / 共 5 页
字号:
    'FontWeight', 'bold', ...    'String', sprintf('%d', RecHead.DigMax(Rec)), ...    'Position', [0.77, 1-linenum*yinc, 0.25, Fnthgt]);% display minlinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Display min :', ...    'Position', [0.02, 1-linenum*yinc, 0.2, Fnthgt]);dminh = uicontrol(dlgh, ...    'Style', 'Edit', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'BackGroundColor', [1 1 1], ...    'String', sprintf('%f', RecDisp.DisplayMin(Rec)), ...    'Position', [0.25, 1-linenum*yinc, 0.20, Fnthgt+0.02]);LocalResizeUI(dminh, [NaN 1.1 0 0]);% display maxuicontrol(dlgh, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'String', 'Display max :', ...    'Position', [0.52, 1-linenum*yinc, 0.2, Fnthgt]);dmaxh = uicontrol(dlgh, ...    'Style', 'Edit', ...    'Units', 'Normalized', ...    'HorizontalAlignment', 'left', ...    'BackGroundColor', [1 1 1], ...    'String', sprintf('%f', RecDisp.DisplayMax(Rec)), ...    'Position', [0.77, 1-linenum*yinc, 0.20, Fnthgt+0.02]);LocalResizeUI(dmaxh, [NaN 1.1 0 0]);% Plot-typelinenum=linenum+1;ploth = uicontrol(dlgh, ...    'Style', 'CheckBox', ...    'Units', 'Normalized', ...    'String', '  Stairstep-Plot', ...    'Value', RecDisp.StairPlot(Rec), ...    'Position', [0.02, 1-linenum*yinc, 0.7, Fnthgt]);LocalResizeUI(ploth, [1 1 0.05 0]);% Invert plotupdownh = uicontrol(dlgh, ...    'Style', 'CheckBox', ...    'Units', 'Normalized', ...    'String', '  Plot upside down', ...    'Value', RecDisp.UpDownPlot(Rec), ...    'Position', [0.52, 1-linenum*yinc, 0.7, Fnthgt]);LocalResizeUI(updownh, [1 1 0.05 0]);% buttonslinenum=linenum+1;uicontrol(dlgh, ...    'Style', 'PushButton', ...    'Units', 'Normalized', ...    'String', 'OK', ...    'Position', [0.05, 0.02, 0.3, 0.08], ...    'Callback', 'set(gco,''UserData'',''OK'');uiresume;');uicontrol(dlgh, ...    'Style', 'PushButton', ...    'Units', 'Normalized', ...    'String', 'Apply to all', ...    'Position', [0.4, 0.02, 0.2, 0.08], ...    'Callback', 'set(gco,''UserData'',''ApplyAll'');uiresume;');uicontrol(dlgh, ...    'Style', 'PushButton', ...    'Units', 'Normalized', ...    'String', 'Cancel', ...    'Position', [0.65, 0.02, 0.3, 0.08], ...    'Callback', 'set(gco,''UserData'',''Cancel'');uiresume;');drawnow;uiwait(dlgh);changed = 0;if ~strcmp(get(gco,'UserData'),'Cancel')  dmin = str2num(get(dminh, 'String'));  dmax = str2num(get(dmaxh, 'String'));  stplot = get(ploth, 'Value');  udplot = get(updownh, 'Value');  if (length(dmin) == 1) & (length(dmax) == 1) & (dmin < dmax)    changed = 1;    if strcmp(get(gco,'UserData'),'OK')      switch(whichbut{1})       case 'EDF'        Data.Display.EDF(Num).DisplayMin(Rec) = dmin;        Data.Display.EDF(Num).DisplayMax(Rec) = dmax;        Data.Display.EDF(Num).StairPlot(Rec) = stplot;        Data.Display.EDF(Num).UpDownPlot(Rec) = udplot;       case 'PLUGIN'        Data.Display.Plugin(Num).DisplayMin(Rec) = dmin;        Data.Display.Plugin(Num).DisplayMax(Rec) = dmax;        Data.Display.Plugin(Num).StairPlot(Rec) = stplot;        Data.Display.Plugin(Num).UpDownPlot(Rec) = udplot;      end    else      % set all files      for fnum = 1:length(Data.Display.EDF)        for rec = 1:length(Data.Display.EDF(fnum).DisplayMin)          Data.Display.EDF(fnum).DisplayMin(rec) = dmin;          Data.Display.EDF(fnum).DisplayMax(rec) = dmax;          Data.Display.EDF(fnum).StairPlot(rec) = stplot;          Data.Display.EDF(fnum).UpDownPlot(rec) = udplot;        end      end      if isfield(Data.Display, 'Plugin')        for fnum = 1:length(Data.Display.Plugin)          for rec = 1:length(Data.Display.Plugin(fnum).DisplayMin)            Data.Display.Plugin(fnum).DisplayMin(rec) = dmin;            Data.Display.Plugin(fnum).DisplayMax(rec) = dmax;            Data.Display.Plugin(fnum).StairPlot(rec) = stplot;            Data.Display.Plugin(fnum).UpDownPlot(rec) = udplot;          end        end      end    end  endenddelete(dlgh);if changed  set(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);  LocalRepaint;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalRescale% change range of a plotfunction LocalRescale(Mode)Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');whichbut = get(gcbo, 'UserData');Rec = whichbut{2};Num = whichbut{3};switch(whichbut{1})  case 'EDF'    DisData = Data.Display.EDF(Num);    [DisData.DisplayMin(Rec), DisData.DisplayMax(Rec)] = ...        LocalCalcNewRange(DisData.DisplayMin(Rec), DisData.DisplayMax(Rec), ...        Mode);    Data.Display.EDF(Num) = DisData;  case 'PLUGIN'    DisData = Data.Display.Plugin(Num);    [DisData.DisplayMin(Rec), DisData.DisplayMax(Rec)] = ...        LocalCalcNewRange(DisData.DisplayMin(Rec), DisData.DisplayMax(Rec), ...        Mode);    Data.Display.Plugin(Num) = DisData;endset(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);LocalRepaint;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalRescaleAll% change range of all plotsfunction LocalRescaleAll(Mode)Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF)==0  return;end% EDF filesfor i=1:length(Data.EDF)  DisData = Data.Display.EDF(i);  [DisData.DisplayMin, DisData.DisplayMax] = ...      LocalCalcNewRange(DisData.DisplayMin, DisData.DisplayMax, Mode);  Data.Display.EDF(i) = DisData;end% pluginsfor i=1:length(Data.Plugin)  DisData = Data.Display.Plugin(i);  [DisData.DisplayMin, DisData.DisplayMax] = ...      LocalCalcNewRange(DisData.DisplayMin, DisData.DisplayMax, Mode);  Data.Display.Plugin(i) = DisData;endset(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);LocalRepaint;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalCalcNewRange% calculate new range for plotsfunction [ResMin, ResMax] = LocalCalcNewRange(PMin, PMax, Mode)dmean = (PMin+PMax) / 2;switch Mode  case 'up'    ResMin = (PMin - dmean)*0.5 + dmean;    ResMax = (PMax - dmean)*0.5 + dmean;  case 'down'    ResMin = (PMin - dmean)*2 + dmean;    ResMax = (PMax - dmean)*2 + dmean;  otherwise    ResMin = PMin;    ResMax = PMax;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalToggleUpdatePlugin% Toggle flag for updating plugin-results function LocalToggleUpdatePlugin()Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');Data.UpdatePlugin = ~Data.UpdatePlugin;if Data.UpdatePlugin  set(gcbo, 'Checked', 'on');else  set(gcbo, 'Checked', 'off');endset(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalToggleShowRange% Toggle flag for showing plot rangesfunction LocalToggleShowRange()Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');Data.ShowRange = ~Data.ShowRange;if Data.ShowRange  set(gcbo, 'Checked', 'on');else  set(gcbo, 'Checked', 'off');endset(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);LocalRepaint;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalToggleShowCursor% Toggle flag for showing cursor function LocalToggleShowCursor()figure(findobj('Tag', 'ViewEDFFigure'));Data = get(gcf, 'UserData');Data.ShowCursor = ~Data.ShowCursor;if Data.ShowCursor  set(gcbo, 'Checked', 'on');  set(gcf, 'WindowButtonDownFcn', 'viewedf MoveCursor Down');  Data.Display.Cursor = LocalDrawCursor(Data.Display);else  delete(Data.Display.Cursor.Line(:));  delete(Data.Display.Cursor.Menu.Text);  delete(Data.Display.Cursor.Menu.Menu);  Data.Display.Cursor = [];  set(gcbo, 'Checked', 'off');  set(gcf, 'WindowButtonMotionFcn', '', ...           'WindowButtonDownFcn', '', ...           'WindowButtonUpFcn', '');endset(gcf, 'UserData', Data);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalDrawCursor% Show cursorfunction Cursor = LocalDrawCursor(DisplayData, NewPos, TimeStr)if nargin ~= 3  % find good placement for lines  Cursor.Pos = 0.5;  Cursor.Menu.Menu = uicontextmenu;  Cursor.Menu.Text  = uimenu(Cursor.Menu.Menu, ...                             'Label', '', ...                             'Callback', '');  % generate lines  for i=1:length(DisplayData.Axes)    Cursor.AxesLim(i, :) = get(DisplayData.Axes(i).Plot, 'XLim');    XPos = Cursor.AxesLim(i,1) + (Cursor.AxesLim(i,2) - Cursor.AxesLim(i,1)) ...           * Cursor.Pos;    Cursor.Line(i) = line('Parent', DisplayData.Axes(i).Plot, ...                          'XData', [XPos XPos], ...                          'YData', get(DisplayData.Axes(i).Plot, 'YLim'), ...                          'EraseMode', 'xor', ...                          'UIContextMenu', Cursor.Menu.Menu, ...                          'Color', [1 0.2 0.2]);    Cursor.AxesPos(i, :) = get(DisplayData.Axes(i).Plot, 'Position');  endelse  Cursor = DisplayData.Cursor;  Cursor.Pos = NewPos;  for i=1:length(DisplayData.Axes)    XPos = Cursor.AxesLim(i,1) + (Cursor.AxesLim(i,2) - Cursor.AxesLim(i,1)) ...           * Cursor.Pos;    set(Cursor.Line(i), 'XData', [XPos XPos]);  end  set(Cursor.Menu.Text, 'Label', TimeStr);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalMoveCursor% Move cursorfunction LocalMoveCursor(Option)Data = get(gcf, 'UserData');CurrPt = get(gcf, 'CurrentPoint');% check if click was in axisAxPos = Data.Display.Cursor.AxesPos;temp = CurrPt(1) > AxPos(:,1) & CurrPt(1) < (AxPos(:,1) + AxPos(:,3)) & ...       CurrPt(2) > AxPos(:,2) & CurrPt(2) < (AxPos(:,2) + AxPos(:,4));if ~any(temp)  return;end% find axis under pointer and calculate positionax = find(temp);Pos = get(Data.Display.Axes(ax).Plot, 'CurrentPoint');Pos = Pos(2,1);Pos = (Pos - Data.Display.Cursor.AxesLim(ax,1)) / (Data.Display.Cursor.AxesLim(ax,2) ...                                                  - Data.Display.Cursor.AxesLim(ax,1));tsec = Data.EDF(1).Head.Dur * Data.Display.EDF(1).ShowRecords(1) + ...       Data.EDF(1).Head.Dur * Data.Display.EDF(1).ShowRecords(2) * Pos;tmin = floor(tsec/60);tsec = rem(tsec,60);th = floor(tmin/60);tmin = rem(tmin, 60);TimeStr = sprintf('%02d:%02d:%02.1f', th,tmin,tsec);switch Option case 'Down'  Data.Display.Cursor = LocalDrawCursor(Data.Display, Pos, TimeStr);  set(gcf, 'WindowButtonMotionFcn', 'viewedf MoveCursor Move', ...           'WindowButtonUpFcn', 'viewedf MoveCursor Up'); case 'Move'  Data.Display.Cursor = LocalDrawCursor(Data.Display, Pos, TimeStr); case 'Up'  set(gcf, 'WindowButtonMotionFcn', '');endset(gcf, 'UserData', Data);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LocalResizeUI% resize UI control according to label sizefunction uihandle = LocalResizeUI(uihandle, options)if nargin < 2  options = [1 1 0 0];endext = get(uihandle, 'Extent');pos = get(uihandle, 'Position');if ~isnan(options(1))  pos(3) = ext(3)*options(1) + options(3);endif ~isnan(options(2))  pos(4) = ext(4)*options(2) + options(4);endset(uihandle, 'Position', pos);  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalNumRecords% select the number of records to be shown simultaniouslyfunction LocalNumRecords()Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF) == 0  errordlg('No EDF-File is open!', 'Error');  return;endDur = LocalGetEDFInfo('Dur', Data.EDF);[MaxDur, MDInd] = max(Dur);answer = inputdlg({'Select number of records'}, ...    'Number of records on screen', 1, ...    {int2str(Data.Display.EDF(MDInd).ShowRecords(2))});if (length(answer) ~= 0)  answer = str2num(answer{1});  if ~isempty(answer)    for i=1:length(Data.EDF)      Data.Display.EDF(i).ShowRecords(2) = answer * MaxDur / Dur(i);        [Data.EDF(i).Record, Data.EDF(i).Head] = ...          LocalEDFRead(Data.EDF(i).Head, Data.Display.EDF(i).ShowRecords);     end    set(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);    LocalRepaint(0);  endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalFileInfo% display information about current filefunction LocalFileInfo(Update)if nargin == 0  Data=get(findobj('Tag', 'ViewEDFFigure'), 'UserData');  if length(Data.EDF)==0    errordlg('No EDF-File is open!', 'Error');    return;  end  dlgh = dialog(...      'Name', 'EDF-File information', ...      'CloseRequestFcn', 'set(gcf,''UserData'',''Cancel'');uiresume;');  dlgpos = get(dlgh, 'Position');  set(dlgh, 'Position', [dlgpos(1),dlgpos(2),450,250]);  fnthght = LocalGetFontHeight;  Local.EDFNames = {};  % get filenames  for i = 1:length(Data.EDF)    Local.EDFNames = {Local.EDFNames{:}, Data.EDF(i).Head.FileName};    Local.EDFInfo{i,1} = Data.EDF(i).Head.Version;    Local.EDFInfo{i,2} = Data.EDF(i).Head.PID;    Local.EDFInfo{i,3} = Data.EDF(i).Head.RID;    Local.EDFInfo{i,4} = sprintf('%02d/%02d/%02d', Data.EDF(i).Head.TO([3 2 1]));    Local.EDFInfo{i,5} = sprintf('%02d:%02d:%02d', Data.EDF(i).Head.TO([4 5 6]));    Local.EDFInfo{i,6} = sprintf('%d', Data.EDF(i).Head.NS);    Local.EDFInfo{i,7} = sprintf('%d', Data.EDF(i).Head.NRec);  end    Local.poph = uicontrol(dlgh, ...      'Style', 'Popup', ...      'Units', 'Normalized', ...      'String', Local.EDFNames, ...      'Value', 1, ...      'Position', [0.05, 0.9, 0.9, 0.1], ...      'Callback', 'viewedf FileInfo Update');  LocalResizeUI(Local.poph, [NaN 1.1 0 0]);  %HeaderVersion  num = 1;  yinc = (1 - 4*fnthght) / 8;  ystart = 0.9;  uicontrol(dlgh, ...      'Style', 'Text', ...

⌨️ 快捷键说明

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