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

📄 makeshow.m

📁 信号实验常用的simulink模型和mfile,可直接在matlan下运行。
💻 M
📖 第 1 页 / 共 2 页
字号:
      SlideShowcmdS = char(SlideShowcmdS);
    else
      SlideShowcmdS='';
    end
    SlideShowcmdNum=size(SlideShowcmdS);   
    SlideShowtextStr=slideData.slide(SlideShowi).text;


    if length(SlideShowtextStr)==0
      SlideShowtextStr='';
    end
    % set up comments for text window, command window and slide label
    LocalSetTexts(slideData, SlideShowcmdS, SlideShowtextStr,'Text Window');
    sHndl=findobj(gcf, 'Type', 'uicontrol', 'Tag', 'slide');
    set(sHndl, 'String', ['Slide ', num2str(SlideShowi)]);
    % take comments out of the commands before eval them
    SlideShowNoCmt=SlideShowcmdS;
    if ~isempty(SlideShowcmdS)
     SlideShowNoCmt=LocalNoComments(SlideShowcmdS);
    end
    SlideShowerrorFlag=0;
    % add ',' at the end of each command 
    SlideShowcmdStemp=[SlideShowNoCmt char(','*ones(size(SlideShowcmdS,1),1))];
    % make SlideShowcmdStemp in one line for eval (it has to be that way with 'for' or 'if')
    SlideShowcmdStemp=SlideShowcmdStemp';
    % evaluate the whole command window's code
    eval(SlideShowcmdStemp(:)', 'SlideShowerrorFlag=1;');
    if SlideShowerrorFlag,
     LocalErrorProc(slideData, SlideShowcmdS);
    end     
    slideData.index=SlideShowi;
    set(gcf, 'UserData', slideData);   
    % clear all makeshow specific variables  
    clear SlideShowVars SlideShowcmdS SlideShowNoCmt SlideShowcmdStemp numSlides SlideShowi ichange 
    clear SlideShown SlideShowtextStr slideData SlideShowcmdNum
    % put variables into UserData workspace
    vars=who;
    for SlideShown=1:size(vars,1),
       vars{SlideShown,2}=eval(vars{SlideShown,1});
    end
    slideData=get(gcf, 'UserData');
    
    slideData.param(slideData.index).vars=vars;
    set(gcf, 'UserData', slideData);   

%==================================================
function NoComments=LocalNoComments(SlideShowcmdS)
% take out comments from command window commands
  SlideShowNoCmt=SlideShowcmdS;
  for SlideShowj=1:size(SlideShowcmdS,1)
     SlideShowCmt=find(SlideShowcmdS(SlideShowj,:)=='%');
     if ~isempty(SlideShowCmt)
         if SlideShowCmt(1)==1
          SlideShowNoCmt(SlideShowj,:)=';';
         else
          % check whether '%' is inside quotes
          SlideShowQut=find(SlideShowcmdS(SlideShowj,:)=='''');
          if ~isempty(SlideShowQut)
             str=SlideShowcmdS(SlideShowj,:);  %to find out % inside '', 
             a=(str=='''');
             b=1-rem(cumsum(a),2);
             c=(str=='%');
             d=b.*c;
             SlideShowCmt=find(d==1); 
             if isempty(SlideShowCmt),
              SlideShowCmt(1)=length(SlideShowcmdS(SlideShowj,:))+1;
             end
          end
          SlideShowNoCmt(SlideShowj,1:(SlideShowCmt(1)-1))=SlideShowcmdS(SlideShowj, 1:(SlideShowCmt(1)-1));
          SlideShowNoCmt(SlideShowj,SlideShowCmt(1):end)=' ';
         end   
     else
         SlideShowNoCmt(SlideShowj,:)=SlideShowcmdS(SlideShowj, :);
     end
  end
NoComments=SlideShowNoCmt;
%==================================================
function LocalSaveCallBack
% Callback for save button
    slideData=get(gcf,'UserData');
    numSlides=size(slideData.slide);
    [fname, fpath]=uiputfile;
    if isstr(fpath)&isstr(fname)
     fid=fopen([fpath, fname],'w');
     if fid~=-1 
      fprintf(fid, 'function slide=%s\n', fname(1:end-2));
      fprintf(fid, '%% This is a slideshow file for use with playshow.m and makeshow.m\n');
      fprintf(fid, '%% To see it run, type ''playshow %s'', \n\n', fname(1:end-2));
      fprintf(fid, '%% Copyright (c) 1984-98 by The MathWorks, Inc.\n');    
      fprintf(fid, 'if nargout<1,\n  playshow %s\nelse', fname(1:end-2));
      for j=1:numSlides(2)
        str=char(slideData.slide(j).code);
        target='''';
        totalen=size(str);
        fprintf(fid, '\n  %%========== Slide %d ==========\n\n', j);
        fprintf(fid, '  slide(%d).code={\n', j);
        if totalen(1)>0 
         
         for k=1:totalen(1)-1
             tempstr=str(k,:);
             outstr=LocalDoubleQuote(tempstr, target);
             fprintf(fid, '   ''%s'',\n', deblank(outstr));
         end
         tempstr=str(totalen(1),:);
         outstr=LocalDoubleQuote(tempstr, target);
         fprintf(fid, '   ''%s'' ', deblank(outstr));
        
        end
        fprintf(fid, '};\n');
      
        str=char(slideData.slide(j).text);
        totalen=size(str);
        fprintf(fid, '  slide(%d).text={\n', j);
        if totalen(1)>0           
           for k=1:totalen(1)-1
              tempstr=str(k,:);
              fprintf(fid, '   ''%s'',\n', deblank(LocalDoubleQuote(tempstr, target))');
           end 
           tempstr=str(totalen(1),:);
           fprintf(fid, '   ''%s''', deblank(LocalDoubleQuote(tempstr, target))');
        end 
        fprintf(fid, '};\n');             
      end
      fprintf(fid, 'end');
      status=fclose(fid);
     else
       disp(['can not save file ' fname ' file was not saved']);
     end
    end

%==================================================
function outStr=LocalDoubleQuote(inStr, target)
% add double quote to quoted string
    outStr=inStr(sort([1:length(inStr) find(inStr==target)]));

%==================================================
function LocalCmdChange(idx, slideData)  
% Callback when command is changed
    cmdHndl=findobj('Type', 'uicontrol', 'Tag', 'cmds');
    cmdHndl=slideData.cmdHandle;
    newcmd=get(cmdHndl, 'String');
    slideData.slide(idx).code={newcmd};
    set(gcf, 'UserData', slideData);
    LocalEnableBtns(idx, slideData);

%==================================================
function LocalTxtChange(idx, slideData)  
% Callback when text is changed
    txtHndl=slideData.txthandle;
    newtext=get(txtHndl, 'String');
    slideData.slide(idx).text=newtext;
    set(gcf, 'UserData', slideData);
    LocalEnableBtns(idx, slideData);

%==================================================
function LocalEnableBtns(i, slideData)
% control the enable property for Next and Prev. buttons
    numSlides=length(slideData.slide);
    nextHndl=slideData.nextHandle;
    backHndl=slideData.backHandle;
    delHndl=slideData.delhandle;
    if numSlides>0,
      set(delHndl, 'Enable', 'on');
    else
      set(delHndl, 'Enable', 'off');
    end
    
    if i==numSlides,
      set(nextHndl, 'Enable', 'off');
      set(backHndl, 'Enable', 'on');
    elseif i==1,
      set(backHndl, 'Enable', 'off');
      set(nextHndl, 'Enable', 'on');
    else
      set(nextHndl, 'Enable', 'on');
      set(backHndl, 'Enable', 'on');
        
    end

%==================================================
function LocalSetTexts(slideData, str1, str2, str3) 
% set comments for text window, command window and label
    mcwHndl=slideData.cmdHandle;
    textHndl=slideData.txthandle;
    lableHndl=slideData.lblhandle;
    set(mcwHndl,'String',str1);
    set(textHndl, 'String', str2);
    set(lableHndl, 'String', str3);

%==================================================
function uiHandle=LocalBuildUi(uiPos, uiStyle, uiCallback, promptStr, uiTag)
% build editable text 
    uiHandle=uicontrol( ...
        'Style',uiStyle, ...
        'HorizontalAlignment','left', ...
        'Units','normalized', ...
        'Max',20, ...
        'BackgroundColor',[1 1 1], ...
        'Position',uiPos, ...
        'Callback',uiCallback, ... 
        'Tag', uiTag, ...
        'String',promptStr);

%==================================================
function frmHandle=LocalBuildFrmTxt(frmPos, txtStr, uiStyle, txtTag)
% build frame and label
      frmHandle=uicontrol( ...
        'Style', uiStyle, ...
        'Units','normalized', ...
        'Position',frmPos, ...
        'BackgroundColor',[0.50 0.50 0.50], ...
        'ForegroundColor',[1 1 1], ...                  %generates an edge
        'String', txtStr, ...
        'Tag', txtTag);

%==================================================
function btHandle=LocalBuildBtns(btnNumber, labelStr, callbackStr, uiTag)
% build buttons or check boxes on the right panel

    labelColor=[0.8 0.8 0.8];
    top=0.9;
    left=0.80;
    btnWid=0.15;
    btnHt=0.06;
    bottom=0.05;
    % Spacing between the button and the next command's label
    spacing=0.03;

    yPos=top-(btnNumber-1)*(btnHt+spacing);
    if strcmp(labelStr, 'Close')==1
      yPos= bottom;
    elseif strcmp(labelStr, 'Info')==1
      yPos= bottom+btnHt+spacing; 
    else
      yPos=top-(btnNumber-1)*(btnHt+spacing)-btnHt;
    end
    % Generic button information
    btnPos=[left yPos btnWid btnHt];
    btHandle=uicontrol( ...
        'Style','pushbutton', ...
        'Units','normalized', ...
        'Position',btnPos, ...
        'String',labelStr, ...
        'Tag', uiTag, ...
        'Callback',callbackStr); 

%==================================================
function LocalErrorProc(slideData, oldCmds)
% error processing 
      editHndl=slideData.cmdHandle;
      set(editHndl,'ForegroundColor',[1 0 0]);
      % Pad "lasterr" with spaces for consistency
      lasterrStr=[32 lasterr];
      lasterrStr=strrep(lasterrStr,10,[13 10 32]);
      errorStr=str2mat(' Error Detected:',lasterrStr,' Resetting Input');
      set(editHndl,'String',errorStr);
      pause(3);
      set(editHndl,'String', oldCmds);
      set(editHndl,'ForegroundColor',[0 0 0]);

⌨️ 快捷键说明

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