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

📄 viewedf.m

📁 matlab下实现
💻 M
📖 第 1 页 / 共 5 页
字号:
    Opt.ValidHeight)  / TotPlots - Opt.YSpace;Opt.TxtHeight = min([(Opt.FigHeight-Opt.YSpace)/2, Opt.TxtHeight]);Opt.ButHeight = min([(Opt.FigHeight-Opt.YSpace)/2, Opt.ButHeight]);Opt.XPixels = 4*xpix;Opt.ShowRange = Data.ShowRange;% clear old buttons and labelsif ~KeepOldPlots & ~isempty(Data.Display.Axes)   delete(Data.Display.HScrollBar);  if ~isempty(Data.Display.Cursor);     delete(Data.Display.Cursor.Line(:));    delete(Data.Display.Cursor.Menu.Text);    delete(Data.Display.Cursor.Menu.Menu);    Data.Display.Cursor = [];  end  delete(Data.Display.Axes(:).RecButton);  delete(Data.Display.Axes(:).ScaleUpButton);  delete(Data.Display.Axes(:).ScaleDownButton);  delete(Data.Display.Axes(:).RecLabel);  delete(Data.Display.Axes(:).MaxLabel);  delete(Data.Display.Axes(:).MinLabel);  delete(Data.Display.Axes(:).DimLabel);  delete(Data.Display.Axes(:).PlotLine);  delete(Data.Display.Axes(:).Plot);  Data.Display.Axes = [];end% draw HScrollBarFileDur = LocalGetEDFInfo('FileDur',Data.EDF);[MaxVal, MFInd] = max(FileDur);
Dur = LocalGetEDFInfo('Dur', Data.EDF);[MaxDur, MDInd] = max(Dur);Len = Data.Display.EDF(MFInd).ShowRecords(1);if ~KeepOldPlots  Data.Display.HScrollBar = uicontrol(gcf, ...      'Style', 'Slider', ...      'Units', 'Normalized', ...      'Position', [Data.Display.DrawRect(1), 0, ...        Data.Display.DrawRect(3), LocalGetFontHeight], ...      'SliderStep', [MaxDur/MaxVal 5*MaxDur/MaxVal] * ...      Data.Display.EDF(MDInd).ShowRecords(2), ...      'Min', 0, ...      'Max', 1, ...      'Value', Data.Display.EDF(MFInd).ShowRecords(1)/MaxVal*Dur(MFInd), ...      'CallBack', 'viewedf HScroll');else  set(Data.Display.HScrollBar, ...      'Value', Data.Display.EDF(MFInd).ShowRecords(1)/MaxVal*Dur(MFInd)); end%create new buttons, plots and labelscnt = 0;for j=1:length(Data.EDF)  for i=1:length(Data.Display.EDF(j).ShowSignals)    cnt = cnt+1;    showsig = Data.Display.EDF(j).ShowSignals(i);    if ~KeepOldPlots        % make new plots, buttons, labels      Opt.YPos = Opt.FigY - Opt.YSpace*(cnt-1) - Opt.FigHeight * cnt;      Opt.DisplayMin = Data.Display.EDF(j).DisplayMin(showsig);      Opt.DisplayMax = Data.Display.EDF(j).DisplayMax(showsig);      Opt.UserData = { 'EDF', showsig, j};      Opt.Label = Data.EDF(j).Head.Label(showsig,:);      Opt.YLabel = deblank(Data.EDF(j).Head.PhysDim(showsig,:));      yd = Data.EDF(j).Record{showsig};      if (length(yd) ~= 1)        yd = [yd(:); NaN];      end            Temp = ...          LocalPlotNewData(yd, ...          Data.Display.EDF(j).UpDownPlot(showsig), ...          Data.Display.EDF(j).StairPlot(showsig), Opt);      if cnt == 1          Data.Display.Axes = Temp;      else          Data.Display.Axes(cnt) = Temp;      end    else      % set new ydata      yd = Data.EDF(j).Record{showsig} * ...          (Data.Display.EDF(j).UpDownPlot(showsig)-0.5) * -2;      if (length(yd) == 1)        yd = yd([1 1]);      else        yd = yd(1:ceil(length(yd)/Opt.XPixels):length(yd));        yd = [yd(:); NaN];        if Data.Display.EDF(j).StairPlot(showsig)          yd = yd(floor(1:0.5:length(yd)));        end      end      set(Data.Display.Axes(cnt).PlotLine, 'YData', yd);    end  endend% plot plugin-datafor j = 1:length(Data.Plugin)  for i=1:length(Data.Display.Plugin(j).ShowSignals)    cnt = cnt+1;    showsig = Data.Display.Plugin(j).ShowSignals(i);    if ~KeepOldPlots      % make new plots, buttons, labels      Opt.YPos = Opt.FigY - Opt.YSpace*(cnt-1) - Opt.FigHeight * cnt;      Opt.DisplayMin = Data.Display.Plugin(j).DisplayMin(showsig);      Opt.DisplayMax = Data.Display.Plugin(j).DisplayMax(showsig);      Opt.UserData = { 'PLUGIN', showsig, j};      Opt.Label = Data.Plugin(j).EDF.Head.Label(showsig,:);      Opt.YLabel = deblank(Data.Plugin(j).EDF.Head.PhysDim(showsig,:));      yd = Data.Plugin(j).EDF.Record{showsig};      if (length(yd) ~= 1)        yd = [yd(:); NaN];      end      Data.Display.Axes(cnt) = ...          LocalPlotNewData(yd, ...          Data.Display.Plugin(j).UpDownPlot(showsig), ...          Data.Display.Plugin(j).StairPlot(showsig), Opt);    else      yd = Data.Plugin(j).EDF.Record{showsig} * ...          (Data.Display.Plugin(j).UpDownPlot(showsig)-0.5) * -2;      if (length(yd) == 1)        yd = yd([1 1]);      else        yd = yd(1:ceil(length(yd)/Opt.XPixels):length(yd));        yd = [yd(:); NaN];                if Data.Display.Plugin(j).StairPlot(showsig)          yd = yd(floor(1:0.5:length(yd)));        end      end      set(Data.Display.Axes(cnt).PlotLine, 'YData', yd);    end  endend% change size of all stringsset(Data.Display.Strings.CurrTime, ...    'Position', [Opt.TextX, 0, Opt.TextWidth, fhght]);pos = get(Data.Display.Strings.TotTime, 'Position');set(Data.Display.Strings.TotTime, ...    'Position', [pos(1), 1 - 1.25 * fhght, pos(3), fhght]);pos = get(Data.Display.Strings.DispTime, 'Position');set(Data.Display.Strings.DispTime, ...    'Position', [pos(1), 1 - 1.25 * fhght, pos(3), fhght]);pos = get(Data.Display.Strings.FileName, 'Position');ext = get(Data.Display.Strings.FileName, 'Extent'); set(Data.Display.Strings.FileName, ...    'Position', [pos(1), 1 - 1.25 * fhght, ext(3) + 0.01, fhght]);% change size of HScrollBarpos = get(Data.Display.HScrollBar, 'Position');set(Data.Display.HScrollBar, ...    'Position', [pos(1) pos(2) pos(3) fhght]); % draw cursorif Data.ShowCursor & ~KeepOldPlots  Data.Display.Cursor = LocalDrawCursor(Data.Display);end% display timetsec = Data.EDF(1).Head.Dur * Data.Display.EDF(1).ShowRecords(1);tmin = floor(tsec/60);tsec = rem(tsec,60);th = floor(tmin/60);tmin = rem(tmin,60);set(Data.Display.Strings.CurrTime, 'String', ...    sprintf('Time %02d:%02d:%02d', th,tmin,tsec));tsec = Data.EDF(1).Head.Dur * Data.Display.EDF(1).ShowRecords(2);tmin = floor(tsec/60);tsec = rem(tsec,60);th = floor(tmin/60);tmin = rem(tmin,60);set(Data.Display.Strings.DispTime, 'String', ...    sprintf('Displayed : %02d:%02d:%02d', th,tmin,tsec));set(gcf, 'UserData', Data);drawnow;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LocalPlotNewData% plots a single data vectorfunction [ploth] =  LocalPlotNewData(Data, UpDownPlot, StairPlot, Opt)len = length(Data);ploth.Plot = subplot('Position', ...    [Opt.FigX + Opt.LabelWidth, Opt.YPos, Opt.FigWidth - Opt.LabelWidth, ...      Opt.FigHeight - Opt.YSpace]);if (len == 1)  xd = [1 2];  yd = Data([1 1]);else  yd = Data(1:ceil(len/Opt.XPixels):len);  len = length(yd);  if StairPlot     xd = ceil(1:0.5:len);    yd = yd(floor(1:0.5:len));  else    xd = 1:len;  endendif UpDownPlot  yd = yd * -1;  tmp = Opt.DisplayMin;  Opt.DisplayMin = -Opt.DisplayMax;  Opt.DisplayMax = -tmp;endploth.PlotLine = plot(xd, yd);set(gca, ...    'XLim', [1 max([2, len])], ...    'YLim', [Opt.DisplayMin Opt.DisplayMax]);if ~Opt.ShowRange   set(gca, ...      'XTickLabel', '', ...      'YTickLabel', '', ...      'XTick', [], ...      'YTick', []);  ploth.MaxLabel = [];  ploth.MinLabel = [];  ploth.DimLabel = [];else  % get TickLabels used by MatLab   set(gca, ...      'YTick', [Opt.DisplayMin Opt.DisplayMax]);  labelstr = get(gca, 'YTickLabel');  labelstr = {deblank(labelstr(1,:)) deblank(labelstr(2,:))};    if UpDownPlot    for i=1:2      if labelstr{i}(1) == '-'        labelstr{i} = labelstr{i}(2:length(labelstr{i}));      else        labelstr{i} = ['-' labelstr{i}];      end    end  end      set(gca, 'YTickLabel', '');  % place TickLabels   ploth.MinLabel = text(0, 0, ...      labelstr{1}, ...      'Parent', gca, ...      'HorizontalAlignment', 'right', ...      'VerticalAlignment', 'baseline', ...      'Units', 'normalized');  ploth.MaxLabel = text(0, 1, ...      labelstr{2}, ...      'Parent', gca, ...      'HorizontalAlignment', 'right', ...      'VerticalAlignment', 'cap', ...      'Units', 'normalized');  % place physical dimension  ploth.DimLabel = text(0, 0.5, ...      ['[' Opt.YLabel ']'], ...      'Parent', gca, ...      'HorizontalAlignment', 'right', ...      'VerticalAlignment', 'middle', ...      'Units', 'normalized');endButWidth = Opt.TextWidth / 3;ploth.RecButton = uicontrol(gcf, ...    'Style', 'PushButton', ...    'Units', 'Normalized', ...    'String', '?', ...    'Position', [Opt.TextX, Opt.YPos, ButWidth, Opt.ButHeight], ...    'Callback', 'viewedf RecordProp', ...    'UserData', Opt.UserData);ploth.ScaleUpButton = uicontrol(gcf, ...    'Style', 'PushButton', ...    'Units', 'Normalized', ...    'String', '+', ...    'Position', [Opt.TextX+ButWidth, Opt.YPos, ButWidth, Opt.ButHeight], ...    'Callback', 'viewedf ScaleUp', ...    'UserData', Opt.UserData);ploth.ScaleDownButton = uicontrol(gcf, ...    'Style', 'PushButton', ...    'Units', 'Normalized', ...    'String', '-', ...    'Position', [Opt.TextX+2*ButWidth, Opt.YPos, ButWidth, Opt.ButHeight], ...    'Callback', 'viewedf ScaleDown', ...    'UserData', Opt.UserData);ploth.RecLabel = uicontrol(gcf, ...    'Style', 'Text', ...    'Units', 'Normalized', ...    'String', Opt.Label, ...    'Position', [Opt.TextX, Opt.YPos + Opt.FigHeight - Opt.YSpace - ...      Opt.TxtHeight, Opt.TextWidth, Opt.TxtHeight]);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LocalAssignMat% Save display to Matrixfunction LocalAssignMat()Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF)==0  errordlg('No EDF-File is open!', 'Error');  return;endanswer = inputdlg({'Target name'}, 'Save to cell-array', 1, {''});if (length(answer) == 0)  return;endcnt = 0;for j=1:length(Data.EDF)  for i=1:length(Data.Display.EDF(j).ShowSignals)    cnt = cnt+1;    showsig = Data.Display.EDF(j).ShowSignals(i);    res{cnt} = Data.EDF(j).Record{showsig};  endendfor j=1:length(Data.Plugin)  for i=1:length(Data.Display.Plugin(j).ShowSignals)    cnt = cnt+1;    Data.Plugin(j)    showsig = Data.Display.Plugin(j).ShowSignals(i);    res{cnt} = Data.Plugin(j).EDF.Record{showsig};  endendassignin('base', answer{1}, res);      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LocalGetEDFInfo% get information of all open EDF filesfunction [res] = LocalGetEDFInfo(Which, EDF)temp = cat(1,EDF(:).Head);switch Which  case 'NRec'    res = cat(1,temp(:).NRec);  case 'Dur'    res = cat(1,temp(:).Dur);  case 'SPR'    res = cat(1,temp(:).SPR);  case 'FileDur'    res = cat(1,temp(:).NRec) .* cat(1,temp(:).Dur);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LocalAddPlugin% Add plugin functionfunction LocalAddPlugin()Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');if length(Data.EDF)==0  errordlg('No EDF-File is open!', 'Error');  return;endres=inputdlg({ 'Enter Plugin name','Label (Optional)', ...    'Parameters (Optional)'}, 'Select Plugin', 1, { '', '', ''});if isempty(res)  return;endplugname = res{1};pluglabel = res{2};plugopt = res{3};if isempty(pluglabel)  pluglabel = plugname;endif ~exist(plugname, 'file');  errordlg(sprintf('Plugin %s can not be found in standard search path', ...      upper(plugname)), 'Plugin Error');  returnend;% select EDF file if several files are openinfile = 1;if (length(Data.EDF) > 1)  [infile, cancelled] = LocalSelectEDFFile({'EDF-data passed to plugin', ...        'Select'}, Data.EDF);  if cancelled    return  endend% set all variablesind = length(Data.Plugin) + 1;Data.Plugin(ind).Name = plugname;Data.Plugin(ind).Label = pluglabel;Data.Plugin(ind).UserData = plugopt;Data.Plugin(ind).EDFFile = infile;LocalWatchOn;[Data.Plugin(ind).EDF, Data.Plugin(ind).UserData] = ...    feval(Data.Plugin(ind).Name, Data.EDF(infile), ...    Data.Plugin(ind).UserData, 'Reset');LocalWatchOff;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);MaxDur = max(LocalGetEDFInfo('Dur', Data.EDF));Data.Display.Plugin(ind).ShowRecords = [0 ...      round(Data.Plugin(ind).EDF.Head.Dur / MaxDur)];% Add menu entry to options menuData.Display.PluginMenu.Sub(ind) = uimenu(Data.Display.PluginMenu.Main, ...    'Label', [pluglabel, ' (File ', upper(plugname), ')'], ...    'UserData', ind, ...    'Callback', 'viewedf PluginMenu');set(findobj('Tag', 'ViewEDFFigure'), 'UserData', Data);LocalRepaint(0);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LocalRemovePlugin% Remove plugin functionfunction LocalRemovePlugin(whichplugin)Data = get(findobj('Tag', 'ViewEDFFigure'), 'UserData');

⌨️ 快捷键说明

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