\def\title{Een testprogramma voor MWEB (Matlab Web)} \def\xwebContentsTop{\bfseries \hrule\par\medskip \centerline{\Large\title} \vspace{2cm} \centerline{\large Mark Potse} \vspace{2cm}} % this material will start the table of contents page \def\Nchannels{N_{{\rm channels}}} \par\medskip\hrule @* Test. Deze file dient voor het testen van {\tt MWEB} (Matlab Web). Het bevat geen zinvol programma, maar alleen veel verschillende matlab-structuren voor het testen van de parser van {\tt mweave}. % test the rebinder \gdef\1{This is the replacement text of \string\1} Mark Potse e-mail: potse@@amc.uva.nl @f maptype int @f maptype int @f maptype int @f maptype int @f maptype int @f maptype int @f maptype int @u x = [0 0 2 pi, 2*pi, 5, 4.5 20 9243857 inf]; a = 1; b = 2 c = pi/4; bs_ColourOpt = 1 @*2 if-elseif-else-end constructions. In the title of a ``starred section'' program text may not be used, but in the documentation it may: |if (a=2)|, |elseif|, |else| and |end|. inserted \string\1 here: \1 @u if (a ~= b) a = b; end; if (a ~= b) @< adjust baseline @> @; end ; if (a == b) a = some_lousy_variable_with_an_ExtraordinaryLongName text(2, 3, 'blah bla blah'); elseif ( a< b) text(5, 3, 'blah bla bla') elseif x if x == 1 y = x; elseif (x == 2) y = x + 1; else y = x + 3; end; else text(2, 3, 'blah bla blah'); text(10, 7, 'bla blah blah'); end; @ An |if| without braces: @u if a ~= b a = b; end; @ @; c = 2/3; @*2 for. Another example. @= for i = 1:10 % with a comment for j = 1:20 vect(i) = matrix(2*i+1,j); end; end; @ vervolg. @= for i = [1:10] vect(i) = 2*i+1; end; @* bs\_map. Het volgende is overgenomen uit {\tt bs\_map.m} @ For declarations like |clear|, |global| etc.: @u global PosInterval NegInterval bso_Fine ... bso_Points bs_BeginSampleNr bs_EndSampleNr ... bso_MapAxSize bso_Type bso_Shoulders ... bso_PlusMinSize bso_Grey bso_Nlevels ... @< parameter handling @> @< adjust baseline @> @< make a figure window and axes @> @< patient information @> @< Make the map @> @< print map info @> @< create menu's @> @ String handling: @< parameter handling @>= bso_ml('Display','no'); bso_map('Display','no'); @ @< parameter handling @>= if (bs_ColourOpt & (bso_Type=='p' | bso_Type=='c')) textcolour = 'y'; else textcolour = 'k'; end; @ In Matlab, the quote also serves as a transpose-operator: @u a = ones(3,3); c = b' c = 4'; c = (a+b)'; c = (a + 4i).' @ Quotes in a string. @u text(1, 2, 'He said: ''foo!''; '''' ') @*2 function calls. @d Nchannels = 64 @f Nchannels TeX @< adjust baseline @>= bs_Reg = ones(Nchannels,500); bs_rejected = zeros(Nchannels); bs_BaseLineAlgorithm = 1; bs_BaseLn1 = 200; bs_BaseLn2 = 400; bs_BaseLineWidth = 10; bs_BA_Reg = bs_adj( ... bs_Reg, bs_rejected, bs_BaseLineAlgorithm, ... bs_BaseLn1, bs_BaseLn2, bs_BaseLineWidth); @ @< make a figure window and axes @>= bs_map_winH = a4paper(bs_FigScale); bs_map_AX1 = axes( ... 'Units','normalized', ... 'Position',[0 0 1 1], ... 'Visible','off', ... 'XLim',[0, 21], ... 'YLim',[0 29.7], ... 'Clipping','off'); @ @< patient information @>= if (length(bs_infostring) >= 16) text(3, 28.5, bs_infostring(10:16), 'Color', textcolour); else text(3, 28.5, '?', 'Color', textcolour); end; text(7, 28.5, bs_filename, 'Color', textcolour); @ @< Make the map @>= vec = zeros(64,1); vec = bs_BA_Reg(1:64,bs_CurSampleNr); bs_Map = getmap(vec,bs_rejected); @< define axes @> @< call |bsm| @> @ @< define axes @>= bs_map_AX2 = axes( ... 'Units','normalized', ... 'Position',[4/21, 12/29.7, bso_MapAxSize/21, bso_MapAxSize/29.7], ... 'Clipping','off'); @ Genest inspringen: @< call |bsm| @>= @< define axes @> bsm(bs_Map, ... 'Type',bso_Type, ... 'Shoulders',bso_Shoulders, ... 'PlusMinSize',bso_PlusMinSize, ... 'Grey',bso_Grey, ... 'Fine',bso_Fine, ... 'Nlevels',bso_Nlevels, ... 'Leadnr',bso_Leadnr, ... 'Lead',(bs_BA_Reg(abs(bso_Leadnr),bso_Lead_Begin:bso_Lead_End)), ... 'Points',[bso_Points(1)-bso_Lead_Begin, ... bso_Points(2)-bso_Lead_Begin]); drawnow % Deze drawnow zorgt ervoor dat als er in het voorgaande een % sequence lost raakt het script daar niet op blijft hangen. @ @< print map info @>= @< define axes @> text (3, 6,['pos. contour interval: ', num2str(PosInterval)], ... 'Color', textcolour); text (3, 5,['neg. contour interval: ', num2str(NegInterval)], ... 'Color', textcolour); text (3, 4,['Sample: ', num2str(bs_CurSampleNr)], ... 'Color', textcolour); text (3, 3,['Baseline: ', ... num2str(bs_BaseLn1), ' ', ... num2str(bs_BaseLn2)], 'Color', textcolour); @ De extra ruimte wordt gegenereerd door dubbele newlines, die in MWEB equivalent zijn met \verb"@@#". @< create menu's @>= bs_bsmWin_PrintMenu = uimenu('Label','Print','Separator','on'); bs_bsmWin_PrintSubMenu = uimenu(bs_bsmWin_PrintMenu, ... 'Label',' ', ... 'Separator', 'on', ... 'Callback',[ 'print -dps -f', num2str(gcf)]); @ functiedefinities: @u function blah(arg1, arg2) a = function boeh(arg1) for i = 1:3 a = b + c(i) end bs_map_AX2 = axes( ... 'Units','normalized', ... 'Position',[4/21, 12/29.7, bso_MapAxSize/21, bso_MapAxSize/29.7], ... 'Clipping','off');