14.09.2013 Views

Matlab Toolbox - Applicaties Helpdesk Water

Matlab Toolbox - Applicaties Helpdesk Water

Matlab Toolbox - Applicaties Helpdesk Water

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Matlab</strong> <strong>Toolbox</strong><br />

versie 1.0<br />

augustus 1999<br />

a d v i e s


<strong>Matlab</strong> <strong>Toolbox</strong><br />

versie 1.0, augustus 1999<br />

Opdrachtgever: Rijksinstituut voor Kust en Zee / RIKZ<br />

Project: NAUTILUS<br />

Samenstelling: ir P.J. Dekker, Xi advies<br />

Inhoudsopgave<br />

Xi advies bv<br />

cairostraat 13<br />

2622 cv delft<br />

tel 015 2572516<br />

fax 015 2572566<br />

1. <strong>Matlab</strong> <strong>Toolbox</strong> ......................................................................................................................................... 5<br />

2


2. Funkties...................................................................................................................................................... 6<br />

2.1 bullet .................................................................................................................................................... 6<br />

2.2 but_list ................................................................................................................................................. 6<br />

2.3 capital................................................................................................................................................... 6<br />

2.4 clr_uvdb ............................................................................................................................................... 7<br />

2.5 clrspace ................................................................................................................................................ 7<br />

2.6 clw........................................................................................................................................................ 7<br />

2.7 clwna.................................................................................................................................................... 8<br />

2.8 color_br................................................................................................................................................ 8<br />

2.9 dcomment............................................................................................................................................. 8<br />

2.10 deblanka............................................................................................................................................. 8<br />

2.11 deblankl.............................................................................................................................................. 9<br />

2.12 deblankr ............................................................................................................................................. 9<br />

2.13 dist_vld .............................................................................................................................................. 9<br />

2.14 door_vld............................................................................................................................................. 9<br />

2.15 drs_lijn............................................................................................................................................. 10<br />

2.16 dum2nan .......................................................................................................................................... 10<br />

2.17 elements ........................................................................................................................................... 10<br />

2.18 find_mn............................................................................................................................................ 11<br />

2.19 findnnan ........................................................................................................................................... 11<br />

2.20 findsinm........................................................................................................................................... 11<br />

2.21 findsnim........................................................................................................................................... 12<br />

2.22 fstrrep............................................................................................................................................... 12<br />

2.23 grid_rct............................................................................................................................................. 12<br />

2.24 grid_vld............................................................................................................................................ 13<br />

2.25 grid2vld............................................................................................................................................ 13<br />

2.26 lijn2vld............................................................................................................................................. 13<br />

2.27 make_axs ......................................................................................................................................... 13<br />

2.28 make_uvdb....................................................................................................................................... 14<br />

2.29 nan2zero........................................................................................................................................... 15<br />

2.30 new................................................................................................................................................... 15<br />

2.31 nicetime............................................................................................................................................ 15<br />

2.32 num_str ............................................................................................................................................ 15<br />

2.33 num2time ......................................................................................................................................... 16<br />

2.34 pijlpunt............................................................................................................................................. 16<br />

2.35 plot_nan ........................................................................................................................................... 17<br />

2.36 rand_vld ........................................................................................................................................... 17<br />

2.37 rand2vld ........................................................................................................................................... 17<br />

2.38 read_cmp.......................................................................................................................................... 17<br />

2.39 redblue ............................................................................................................................................. 18<br />

2.40 redgreen ........................................................................................................................................... 18<br />

2.41 remove ............................................................................................................................................. 18<br />

2.42 roteer................................................................................................................................................ 18<br />

2.43 rotr ................................................................................................................................................... 19<br />

2.44 spacesl.............................................................................................................................................. 19<br />

2.45 split_ln ............................................................................................................................................. 19<br />

2.46 splitxln ............................................................................................................................................. 19<br />

2.47 str2labl ............................................................................................................................................. 20<br />

2.48 str2vec.............................................................................................................................................. 20<br />

2.49 strcmpci............................................................................................................................................ 20<br />

3


2.50 text2str ............................................................................................................................................. 20<br />

2.51 venwlogo.......................................................................................................................................... 21<br />

2.52 xi_logo ............................................................................................................................................. 21<br />

2.53 zero2nan........................................................................................................................................... 21<br />

2.54 z_interfaces...................................................................................................................................... 21<br />

4


1. <strong>Matlab</strong> <strong>Toolbox</strong><br />

In het verleden zijn door Xi, tijdens de ontwikkeling van programmatuur voor RIKZ, functies, die door<br />

hun algemene karakter mogelijkerwijs ook door anderen gebruikt zouden kunnen worden, in een aparte<br />

directory sources ondergebracht.<br />

Niet iedere functie is volledig uitontwikkeld. Soms is alleen die functionaliteit die voor de betreffende<br />

GUI noodzakelijk of nuttig was uitgewerkt, en zijn de meer algemene moeglijkheden slechts rudimentair<br />

ontwikkeld.<br />

Daarnaast zijn er voor de GUIMAKER, een soort vertaalmechanisme voor GUI commando’s, een aantal<br />

specifieke functies gebouwd. Door de ontwikkeling binnen <strong>Matlab</strong> van onder andere GUIDE, de GUI<br />

Editor, is de GUIMAKER in onbruik geraakt. De nog bruikbare functionaliteit zou daarom beter in<br />

andere, meer algemene functies kunnen worden ondergebracht. Voor de volledigheid worden deze<br />

functies wel genoemd, en kort toegelicht.<br />

In het nu volgende hoofdstuk zijn alle functies opgenomen die in de directories sources van de Modellen<br />

en de WAQAD GUI staan. In de documentatie van de betreffende GUI’s is aangegeven welke functies<br />

daadwerkelijk worden gebruikt.<br />

5


2. Funkties<br />

2.1 bullet<br />

function h_bullet = bullet(x,y,r,b_color,handle_axes)<br />

%BULLET Place a bullet at position (x,y) with radius r.<br />

% CALL<br />

% BULLET(X,Y,R,B_COLOR,HANDLE_AXES) places a bullet with color B_COLOR<br />

% at position (X,Y) with radius R in the axes with handle HANDLE_AXES.<br />

Met bullet wordt een gevulde cirkel getekend op plaats (x,y) in een axes, met straal r, in de<br />

coördinaten van de axes. Wordt bijvoorbeeld gebruikt in de WAQAD GUI bij het tekenen van stations.<br />

2.2 but_list<br />

function handle_butlist = but_list(list_pos,number,list_string,handle_figure);<br />

%BUT_LIST Generate a list of radio buttons with an all on/off push button.<br />

% CALL<br />

% HANDLE_BUTLIST = BUT_LIST(LIST_POS,NUMBER,LIST_STRING,HANDLE_FIGURE)<br />

% creates a list of Check boxes at position LIST_POS.<br />

% LIST_POS contains the position (X,Y), width W and heigth H.<br />

% Number of list items is NUMBER. Strings are given with LIST_STRING,<br />

% which has length 1 or NUMBER.<br />

% The position (X,Y) lies in the figure with handle HANDLE_FIGURE.<br />

% Default is GCF.<br />

% The return handle is HANDLE_BUTLIST, which is in fact a list of<br />

% handles to the check boxes, from top to bottom.<br />

% This can be used to set CallBacks for the<br />

% UiControls and switch visability on/off.<br />

%<br />

% Layout: [ 1 ] [n/2+1]<br />

% [ ... ] [.....]<br />

% [ n/2 ] [ n ]<br />

% [ sel/clr all ]<br />

%<br />

% See also: BOX_LIST<br />

In de Modellen GUI is het mogelijk om één of meerdere lagen te selecteren. Het aantal lagen wordt in het<br />

.def bestand van het scenario vastgelegd. De GUI genereert vervolgens met but_list een lijst van<br />

radiobuttons, ter lengte van het aantal lagen, met een bijbehorende [select/clear all] knop, waarmee in één<br />

keer alle lagen aan of uit kunnen worden gezet. Er wordt nog geen CallBack voor de knoppen<br />

gedefinieerd.<br />

2.3 capital<br />

function out = capital(in)<br />

%CAPITAL Lower all characters in string, but capitalize first<br />

% CALL<br />

% CAPITAL(S) lowers all characters in a string and<br />

% capitalizes the first character.<br />

%<br />

% EXAMPLE<br />

% CAPITAL('coLOr') returns 'Color'<br />

6


capital werd gebruikt in de GUIMAKER.<br />

2.4 clr_uvdb<br />

function clr_uvdb(h_video);<br />

%CLR_UVDB Clear ultimate video bar<br />

% CALL<br />

% CLR_UVDB(H_VIDEO) delete's all abjects off the Ultimate ViDeo Bar<br />

%<br />

% See also: MAKE_UVDB, MAKE_VDB, MAKE_XVDB, BUT_LIST, BOX_LIST<br />

% INPUT<br />

% HANDLE_VIDEO - STRUCT with handles of video bar elements<br />

% XVDBTXT - text field<br />

% SLIDER - slider<br />

% MINVAL - text field for minimum value of slider<br />

% CURVAL - text field for current value of slider<br />

% MAXVAL - text field for maximum value of slider<br />

% DIREC - toggle button for direction<br />

% BACK - pushbutton for one step back<br />

% RESET - pushbutton for reset<br />

% FWD - pushbutton for one step forward<br />

% PLAY - pushbutton for play all<br />

clr_uvdb verwijdert de objecten van de Ultimate ViDeo Bar. Zie make_uvdb.<br />

2.5 clrspace<br />

function s_out = clrspace(s_in)<br />

%CLRSPACE Remove all blanks (ASCII 32) from a (matrix of) string(s).<br />

% CALL<br />

% S_OUT = CLRSPACE(S_IN) removes all blanks (ASCII character 32)<br />

% from a string or matrix of strings S_IN.<br />

%<br />

% See also ISSPACE, SETSTR, ISSTR, STRINGS.<br />

% INPUT<br />

% S_IN - string<br />

% OUTPUT<br />

% S_OUT - string<br />

% EXAMPLE<br />

% CLRSPACE(' Thank you ') returns 'Thankyou'.<br />

clrspace werd gebruikt in de GUIMAKER.<br />

2.6 clw<br />

function clw(handle_window)<br />

%CLW Delete all objects, except UIMENU, from window.<br />

% CALL<br />

% CLW(HANDLE_WINDOW) deletes all objects (axes, images, patches,<br />

% surfaces, texts, lines and uicontrols) from the current window.<br />

% Only uimenus are saved. Default window GCF.<br />

%<br />

% See also CLWNA, CLA, CLF, RESET, HOLD.<br />

Het commando clf verwijdert alle objecten uit een figure, inclusief de uimenu’s. clw laat deze laatste<br />

staan.<br />

7


2.7 clwna<br />

function clwna(handle_window)<br />

%CLWNA CLear Window, Not Axes.<br />

% CALL<br />

% CLWNA deletes all objects (lines, text, patches, surfaces,<br />

% images) of axes but NOT axes itself from the current window.<br />

% Uimenus en uicontrols are also saved.<br />

% CLWNA(handle_window) does the same for the figure<br />

% with handle HANDLE_WINDOW.<br />

%<br />

% See also CLW, CLA, CLF, RESET, HOLD.<br />

clwna is vergelijkbaar met clw, maar nu wordt alleen de inhoud van alle in het figure aanwezige axes<br />

verwijderd, en blijven de axes, uimenu’s en uicontrol’s van het figure behouden.<br />

2.8 color_br<br />

function h_cb = color_br(cb_map, cb_label, cb_title, cb_font_size, handle_axes)<br />

%COLOR_BR Alternative colorbar for nonlinear colormap, independent of CAXIS.<br />

% CALL<br />

% H_CB = COLOR_BR(CB_MAP, CB_LABEL, CB_TITLE, CB_FONT_SIZE, HANDLE_AXES)<br />

% draws an alternative colorbar in the axes with handle HANDLE_AXES.<br />

% Default axes is GCA.<br />

% It does NOT use the colormap associated to the figure in which the axes<br />

% is drawn, but merely plots the colormap defined by the (mx3) matrix<br />

% CB_MAP.<br />

% If the label-vector CB_LABEL has (m+1) elements, those are used,<br />

% else a default number of 7 is applied. CB_TITLE and<br />

% CB_FONT_SIZE are obvious.<br />

De functie color_br maakt een alternatief soort colorbar. De standaard functie colorbar van <strong>Matlab</strong><br />

geeft de colormap van het current figure weer, en het bereik wordt bepaald door de instelling van caxis.<br />

color_br geeft een colormap weer, die in feite onafhankleijk van de colormap van de figure kan zijn,<br />

alhoewel dit niet zinvol is. De functie wordt veelal gebruikt wanneer de data nog nabewerkt moet worden,<br />

bijvoorbeeld door er de logaritme van te nemen. Het is dan mogelijk om zelf de titel van de colorbar, de<br />

labels van de scheidingswaarden, de grootte van het font en de plaats in te stellen. De colorbar wordt<br />

vullend in een axes geplaatst. De colormaps kunnen bijvoorbeeld met de ColorMap Editor van de<br />

Modellen GUI worden aangemaakt.<br />

2.9 dcomment<br />

function s_uit = dcomment(s_in)<br />

%DCOMMENT Verwijder commentaar uit string.<br />

% AANROEP<br />

% S_UIT = DCOMMENT(S_IN) verwijdert het commentaar uit een string.<br />

% Commentaar is alles vanaf het %-teken tot het einde van de string.<br />

2.10 deblanka<br />

function s1 = deblanka(s)<br />

%DEBLANKA Strip blanks and nulls from begin and end of a string.<br />

% CALL<br />

% DEBLANKA(S) combines functions DEBLANKL and DEBLANKR,<br />

% which respectively remove beginning and trailing blanks<br />

% from a string.<br />

%<br />

% See also DEBLANKL, DEBLANKR.<br />

8


2.11 deblankl<br />

function s1 = deblankl(s)<br />

%DEBLANKL Strip blanks from begin of a string.<br />

% CALL<br />

% DEBLANKL(S) removes the blanks and any null characters from<br />

% the beginning of a string S. A null character is one that<br />

% has an absolute value of 0.<br />

%<br />

% See also DEBLANKR, DEBLANKA, DEBLANK.<br />

2.12 deblankr<br />

function s1 = deblankr(s)<br />

%DEBLANKR Strip trailing blanks from end of a string.<br />

% DEBLANKR(S) removes the trailing blanks and any null characters from<br />

% a string S. A null character is one that has an absolute value of 0.<br />

%<br />

% See also DEBLANKL, DEBLANKA, DEBLANK.<br />

Deze funkties werden gebruikt door de GUIMAKER. De werking spreekt voor zich, het zijn variaties op<br />

de <strong>Matlab</strong> funktie deblank.<br />

2.13 dist_vld<br />

function [u_veld,v_veld] = dist_vld(x_veld, y_veld)<br />

%DIST_VLD Compute distances between points in parametric grid.<br />

% CALL<br />

% [U_VELD, V_VELD] = DIST_VLD(X_VELD, Y_VELD) computes the distances<br />

% between the points of a parametric grid, given by the matrices<br />

% X_VELD and Y_VELD.<br />

% If these are (mxn) matrices then output is two (m-1xn-1) matrices<br />

% U_VELD and V_VELD with respectively the distances in X- and<br />

% Y-direction.<br />

% A nice side-effect: for vectors U_VELD and V_VELD are the same,<br />

% the function can be called with one output parameter.<br />

De afstanden tussen de punten van een parametrisch grid worden bepaald door<br />

2 2<br />

d = u + v<br />

Met dist_vld worden alle afstanden in u- en v- richting in twee regels berekend.<br />

2.14 door_vld<br />

function z_interp = door_vld(z_mat,z_veld,aant_laag,poly_graad)<br />

%DOOR_VLD Interpolatie van waarden naar de z-interfaces voor verticale doorsnede<br />

% AANROEP<br />

% Z_INTERP = DOOR_VLD(Z_MAT,Z_VELD,AANT_LAAG,POLY_GRAAD)<br />

% berekent de geinterpoleerde waarden op de scheidingsvlakken voor een<br />

% vertikale doorsnede van een model. De graad van het polynoom kan<br />

% als invoerparameter meegegeven worden.<br />

% INVOER<br />

% Z_MAT - matrix met scheidingsvlakken of z-interfaces<br />

% Z_VELD - matrix met waarde van het veld per laag<br />

% AANT_LAAG - aantal lagen<br />

% POLY_GRAAD - graad van het polynoom voor interpolatie, default 3<br />

% UITVOER<br />

% Z_INTERP - geinterpoleerde waarden van de velden<br />

9


Bij het tekenen van een vertikale doorsnede van een veld wordt gebruik gemaakt van de functie<br />

surface. Hierdoor wordt het de doorsnede één cel kleiner in beide richtingen. Om dit te corrigeren<br />

worden de waarden in de lagen van het model naar de scheidingsvlakken of z-interfaces geïnterpoleerd<br />

met de functie door_vld.m.<br />

2.15 drs_lijn<br />

function uit = drs_lijn(door_mn,x_veld,y_veld,ori,handle_axes)<br />

%DRS_LIJN Teken doorsnedelijnen over kromlijnig grid.<br />

% AANROEP<br />

% DRS_LIJN(DOOR_MN, X_VELD, Y_VELD, ORI, HANDLE_AXES)<br />

% tekent op een kromlijnig grid bij horizontale of vertikale<br />

% langsdoorsneden behorende lijnen.<br />

% INVOER<br />

% DOOR_MN - lijst met indices<br />

% X_VELD - matrix met x-coordinaten<br />

% Y_VELD - matrix met y-coordinaten<br />

% ORI - orientatie: horizontaal of vertikaal<br />

% HANDLE_AXES - handle van de axes waarin de lijnen getekend<br />

% moeten worden. Default GCA<br />

In de Modellen GUI kan een verticale doorsnede van een curvelineair grid berekend worden. De<br />

gebruiker klikt met de muis een aantal punten aan (in xy-coordinaten), waarna deze vervolgens tot een<br />

lijst van mn-coordinaten wordt omgewerkt (zie ook find_mn). Met drs_lijn wordt de mncoordinaten<br />

tot één lijn over het xy-grid samengevoegd. De parameter ori wordt nog niet gebruikt. Het<br />

is met dezelfde methode namelijk mogelijk ook een horizontaal gebied (gesloten, maar niet convex) in te<br />

voeren, er wordt dan een gesloten ‘rechthoek’ getekend.<br />

2.16 dum2nan<br />

function y = dum2nan(x,dummy_value)<br />

%DUM2NAN Convert the dummyvalues in a variable to Not-a-Numbers.<br />

% CALL<br />

% Y = DUM2NAN(X,DUMMY_VALUE) converts all dummy values of<br />

% X to NaN's, which is useful when plotting X.<br />

% EXAMPLE<br />

% X = [-999 1 -999 ; 2 1 2 ; 2 -999 2];<br />

% DUM2NAN(X,-999) returns<br />

% [NaN 1 NaN ;<br />

% 2 1 2 ;<br />

% 2 NaN 2 ]<br />

Een algemene versie van zero2nan; allebei de functies zijn bedoeld om dummy waarden in een matrix<br />

door NaN’s te vervangen, ten behoeve van het plotten.<br />

2.17 elements<br />

function [elts,nelt]=elements(x)<br />

%ELEMENTS Elements of a matrix in set theoretic sense.<br />

% ELEMENTS(X) is a row vector containing the<br />

% distinct elements of X.<br />

% [ELTS,NELT] = ELEMENTS(X) produces<br />

% the elements of X in ELTS and<br />

% the corresponding count of the elements in NELT.<br />

% X is treated as 1 set and may contain NaN's and Inf's<br />

% (which are counted also). Complex arrays as well as<br />

% sparse matrices and text strings are handled properly.<br />

10


% ELTS is sorted.<br />

% Enter 'elements' for a demo.<br />

% Author: J. Rodney Jee, rodjee@delphi.com, 28-JAN-95<br />

Een uiterst nuttige non-Xi utility om alle verschillende elementen van een vector te vinden.<br />

2.18 find_mn<br />

function uit_mn = find_mn(x,y,xveld,yveld)<br />

%FIND_MN Bereken (mn)coordinaten van (xy) in kromlijnig grid (XY).<br />

% AANROEP<br />

% UIT_MN = FIND_MN(X, Y, XVELD, YVELD) berekent de (matrix)<br />

% mn-coordinaten van het punt (X,Y) in de matrices XVELD en YVELD.<br />

% INVOER<br />

% X - x-coordinaat<br />

% Y - y-coordinaat<br />

% XVELD - matrix met x-coordinaten<br />

% YVELD - matrix met y-coordinaten<br />

% UITVOER<br />

% UIT_MN - mn-coordinaat<br />

Bij het aanklikken van punten in een xy-grid met de muis resulteren xy-coordinaten (mbv de <strong>Matlab</strong><br />

funktie ginput). Om lijnen te kunnen tekenen en doorsneden te kunnen berekenen moeten de mncoordinaten<br />

bepaald worden. Het minimum van alle afstanden van (x,y) tot het xy-grid wordt berekend<br />

met<br />

met x en y het grid, en (xxy,yxy) de coordinaten van het punt.<br />

2.19 findnnan<br />

function y = findnnan(x)<br />

%FINDNNAN Zoek (mn) coordinaten van niet-NaN's in matrix.<br />

% AANROEP<br />

% Y = FINDNNAN(X) genereert een matrix Y met als kolommen<br />

% achtereenvolgens het rij-nummer, het kolom-nummer en<br />

% de waarde van de niet-NaN entries van X.<br />

% Deze notatie is gelijk aan FIND voor sparse matrices.<br />

% INVOER<br />

% X - matrix of vector (full)<br />

% UITVOER<br />

% Y - matrix met 3 kolommen<br />

% VOORBEELD<br />

% X = [ 1 NaN ;<br />

% NaN 4 ;<br />

% 0 NaN ]<br />

% geeft als uitvoer<br />

% Y = [ 1 1 1 ;<br />

% 3 1 0 ;<br />

% 2 2 4 ]<br />

De functie findnnan maakt het mogelijk een matrix met naast 0 ook NaN om te zetten naar de sparse<br />

representatie.<br />

2.20 findsinm<br />

min( ( x − x ) + ( y − y )<br />

2 2<br />

xy xy<br />

function row_idx = findsinm(s,m)<br />

%FINDSINM Find row index of a string in a matrix of strings.<br />

11


% CALL<br />

% ROW_IDX = FINDSINM(S,M) returns the row index of<br />

% a string S in a matrix M of strings. The occurrence<br />

% of S does not have to be unique.<br />

% FINDSINM is case insensitive.<br />

%<br />

% See also FINDSTR, STRCMP.<br />

%<br />

% EXAMPLE<br />

% m = ['Wombat '; ...<br />

% 'Badger '; ...<br />

% 'Rabbit ';<br />

% 'Squirrel'];<br />

% s = 'badger';<br />

% findsinm(s,m) returns 2.<br />

Nuttige zoekfunctie naar een string in een lijst van strings.<br />

2.21 findsnim<br />

function row_idx = findsnim(s,m)<br />

%FINDSNIM Find rows where a string does NOT occur in a matrix of strings.<br />

% CALL<br />

% ROW_IDX = FINDSNIM(S,M) returns the row indices of<br />

% a matrix M where a string S does NOT occur.<br />

%<br />

% See also FINDSINM, FINDSTR, STRCMP.<br />

%<br />

% EXAMPLE<br />

% m = ['Wombat '; ...<br />

% 'Badger '; ...<br />

% 'Rabbit ';<br />

% 'Squirrel'];<br />

% s = 'Badger';<br />

% findsnim(s,m) returns [1 3 4]<br />

Nuttige zoekfunctie naar niet voorkomen van een string in een lijst van strings.<br />

2.22 fstrrep<br />

function fstrrep(file_in,file_out, s_search, s_replace)<br />

%FSTRREP<br />

% Replace all occurrences of the elements of a matrix of strings<br />

% in a file by the elements of another matrix of strings.<br />

%<br />

% FSTRREP(FILE_IN,FILE_OUT, S_SEARCH, S_REPLACE)<br />

Funktie voor GUIMAKER<br />

2.23 grid_rct<br />

function [x,y] = grid_rct(m,n);<br />

%GRID_RCT Create rectangular grid for curve linear surface plot<br />

% CALL<br />

% [X,Y] = GRID_RCT(M,N) creates matrices X and Y for a rectangular<br />

% grid in curvelinear plots. Matrices have size MxN.<br />

Funktie voor met name de WAQAD GUI, om bij een rechthoekig model toch over een ‘xy’-grid te<br />

kunnen beschikken. De funktie creëert twee matrices met de in feite de indices van een mxn matrix met<br />

de oorsprong in de linkeronderhoek in plaats van de linkerbovenhoek.<br />

12


2.24 grid_vld<br />

function grid_vld(x,y,c_back,c_grid,handle_axes)<br />

%GRID_VLD Teken alleen de gridlijnen van een kromlijnig veld.<br />

% AANROEP<br />

% GRID_VLD(X,Y,C_BACK,C_GRID,HANDLE_AXES) tekent gridlijnen<br />

% met kleur C_GRID over een kromlijnig veld met kleur C_BACK,<br />

% in de axes met handle HANDLE_AXES. Default axes is GCA.<br />

%<br />

% Voor het tekenen van gridlijnen OVER een bestaand veld:<br />

% zie GRID2VLD<br />

Functie om een curvelineair grid te tekenen, bijvoorbeeld om de gebruiker in staat te stellen een punt<br />

hieruit te selecteren met de muis.<br />

2.25 grid2vld<br />

function grid2vld(handle_axes,g_color)<br />

%GRID2VLD Teken de gridlijnen over een kromlijnig veld.<br />

% AANROEP<br />

% GRID2VLD(HANDLE_AXES,G_COLOR) tekent gridlijnen over een<br />

% kromlijnig veld in de axes met handle HANDLE_AXES in de<br />

% kleur G_COLOR. Default kleur is wit.<br />

% Default axes is GCA.<br />

%<br />

% Voor het tekenen van ALLEEN gridlijnen:<br />

% zie GRID_VLD<br />

Voeg gridlijnen toe aan een curvelineair grid.<br />

2.26 lijn2vld<br />

function h_lijn = lijn2vld(door_mn,x_veld,y_veld,ori,lijn_kleur,handle_axes)<br />

%LIJN2VLD Teken een lijn over een kromlijnig dataveld of grid<br />

% AANROEP<br />

% H_LIJN = LIJN2VLD(DOOR_MN,X_VELD,Y_VELD,ORI,LIJN_KLEUR,HANDLE_AXES)<br />

% tekent een lijn gegeven door DOOR_MN over een kromlijnig dataveld of<br />

% grid, beschreven met X_VELD en Y_VELD, in de axes met<br />

% handle HANDLE_AXES. Default axes is GCA.<br />

% De parameter ORI, 'v' of 'h', bepaalt of er alleen lijnen of<br />

% een gesloten contour getekend wordt.<br />

% INVOER<br />

% DOOR_MN - lijst met indices<br />

% X_VELD - matrix met x-coordinaten<br />

% Y_VELD - matrix met y-coordinaten<br />

% ORI - string met orientatie:<br />

% 'h' - horizontaal, 'v' - vertikaal<br />

% LIJN_KLEUR - kleur van de lijnen, RGB-vector<br />

% HANDLE_AXES - handle van de axes waarin de lijnen getekend<br />

% moeten worden. Default GCA<br />

% UITVOER<br />

% H_LIJN - handle van de lijn<br />

Vrijwel gelijk aan drs_lijn, alleen nu met instelbare kleur voor de lijn. Wordt onder andere gebruikt<br />

door de SLIB_GUI’s.<br />

2.27 make_axs<br />

function handle_lst = make_axs(numb,handle_fig);<br />

13


%MAKE_AXS Create a number of axes in a figure.<br />

% CALL<br />

% HANDLE_LST = MAKE_AXS(NUMB, HANDLE_FIG) creates NUMB axes in<br />

% the figure with handle HANDLE_FIG. Default handle is GCF.<br />

% Handles of axes are stored in HANDLE_LST.<br />

%<br />

% NUMB can be a single number, in which case the axes are made as:<br />

% 1 - 0 2 - 00 3 - 000<br />

%<br />

% 4 - 00 5 - 000 6 - 000<br />

% 00 00 000<br />

%<br />

% 7 - 0000 8 - 000 9 - 000<br />

% 000 000 000<br />

% 00 000<br />

% or a (2x1)-vector [VER,HOR], where VER is the vertical and HOR<br />

% the horizontal number of axes.<br />

% Axes are numbered from top-left to bottom-right.<br />

Wanneer er in de Modellen GUI meerdere lagen tegelijk getoond moeten worden in één figure, dan wordt<br />

voor ieder surface een aparte axes aangemaakt met make_axs. In de help sectie is te zien hoe de axes<br />

over het figure verdeeld worden. Er wordt boven, onder en rechts in het figure ruimte gelaten voor<br />

respectievelijk een titel, de datum en tijd, en de colorbar of color_br van het gehele figure.<br />

2.28 make_uvdb<br />

function handle_video = make_uvdb(axes_pos, handle_figure);<br />

%MAKE_UVDB Generate ultimate video bar: [slider] +<br />

[direc][back][reset][forward][play]<br />

% CALL<br />

% HANDLE_VIDEO = MAKE_UVDB(AXES_POS,HANDLE_FIGURE) creates an axes<br />

% with an ultimate video bar. AXES_POS contains the position (X,Y),<br />

% width W and heigth H.<br />

% Axes lies in the figure with handle HANDLE_FIGURE. Default is GCF.<br />

% The return handle is HANDLE_VIDEO, which is in fact a struct of<br />

% handles to the slider and buttons. This can be used to set<br />

% CallBacks for the UIControls and switch visability on/off.<br />

%<br />

% Layout:<br />

% [ video control bar ]<br />

% [[start][ curr][ end ]]<br />

% [[]]<br />

% [[->][< ][ o ][ >][->]]<br />

%<br />

% See also: MAKE_VDB, MAKE_XVDB, BUT_LIST, BOX_LIST<br />

% INPUT<br />

% AXES_POS - vector with position and size of axes<br />

% HANDLE_FIGURE - handle of figure for ultimate video bar<br />

% OUTPUT<br />

% HANDLE_VIDEO - STRUCT with handles of video bar elements<br />

% XVDBTXT - text field<br />

% SLIDER - slider<br />

% MINVAL - text field for minimum value of slider<br />

% CURVAL - text field for current value of slider<br />

% MAXVAL - text field for maximum value of slider<br />

% DIREC - toggle button for direction<br />

% BACK - pushbutton for one step back<br />

% RESET - pushbutton for reset<br />

% FWD - pushbutton for one step forward<br />

% PLAY - pushbutton for play all<br />

De ultimate video bar is een combinatie van knoppen en een slider waarmee een animatie bestuurd kan<br />

worden.<br />

14


De uitvoer van make_uvdb is een lijst van handles van de objecten. De gebruiker dient zelf de juiste<br />

CallBack’s hieraan te koppelen.<br />

2.29 nan2zero<br />

function y = nan2zero(x)<br />

%NAN2ZERO Convert the Not-a-Numbers and the Infinites in a variable to zeros.<br />

% CALL<br />

% Y = NAN2ZERO(X) converts all NAN and Inf entries of X to zeros,<br />

% which is useful if X is a matrix for a parametric grid.<br />

% EXAMPLE<br />

% X = [NaN 1 0 ; 2 1 2 ; 2 Inf 2];<br />

% NAN2ZERO(X) returns<br />

% [ 0 1 0 ;<br />

% 2 1 2 ;<br />

% 2 0 2 ]<br />

Inverse versie van zero2nan.<br />

2.30 new<br />

%NEW Clear all variables, close all figures and files, clear command window.<br />

Uiterst handige utility om in één klap: alle variabelen, alle figures, alle functions, alle files te sluiten en te<br />

verwijderen uit het geheugen, en het command window te resetten.<br />

2.31 nicetime<br />

function str = nicetime(time,itdate);<br />

%NICETIME Format time (minutes) since start of simulation and startdate nicely<br />

% CALL<br />

% STR = NICETIME(TIME,ITDATE);<br />

% M. Verlaan, 1997<br />

Samenvoeging van alle functies van Martin Verlaan (RIKZ) om een ‘nette tijd’ te creeren aan de hand<br />

van de start van een simulatie en een startdatum. Omvat de functies: str2dat, julian, gregor,<br />

dat2str, div. Zie de functie zelf voor exacte functionaliteit van deze sub functions.<br />

2.32 num_str<br />

Figuur 1 Ultimate Video Bar<br />

function s = num_str(x)<br />

%NUM_STR Vector to string conversion, with one space between elements.<br />

% CALL<br />

% S = NUM_STR(X) converts the vector X into a string<br />

% representation S, with spaces between the elements of X.<br />

%<br />

15


% See also NUM2STR, INT2STR, SPRINTF, FPRINTF.<br />

Compactere uitvoer dan de <strong>Matlab</strong> functie num2str genereert.<br />

2.33 num2time<br />

function time_string = num2time(time_num)<br />

%NUM2TIME Convert a numerical value to a time string.<br />

% CALL<br />

% TIME_STRING = NUM2TIME(TIME_NUM) converts the numerical<br />

% time value TIME_NUM to a string TIME_STRING. Time is computed<br />

% modulo 24 hours.<br />

% Input can be a vector. Output will be a matrix of strings.<br />

%<br />

% EXAMPLE<br />

% NUM2TIME(1.25) gives '01:15',<br />

% NUM2TIME(37.17) gives '13:10'.<br />

Conversie van een ‘decimale’ tijd naar een hh:mm formaat. Lijkt op de <strong>Matlab</strong> functie datestr, maar<br />

nu is de invoer niet een aantal dagen, maar een aantal uren.<br />

2.34 pijlpunt<br />

function h_pijl = pijlpunt(x,y,ang,mag,kleur_rand,kleur_fill,handle_axes)<br />

%PIJLPUNT Teken pijlpunten over kromlijnig grid.<br />

% AANROEP<br />

% H_PIJL = PIJLPUNT(X,Y,ANG,MAG,KLEUR_RAND,KLEUR_FILL,HANDLE_AXES)<br />

% tekent pijlpunten op de punten (X,Y)<br />

% gedraaid over een hoek ANG. De lengte van de pijlpunt is MAG,<br />

% in eenheden van de assen. De pijlpunten worden getekend in de<br />

% axes met handle HANDLE_AXES. Default axes is GCA.<br />

% INVOER<br />

% X - matrix met x-coordinaten<br />

% Y - matrix met y-coordinaten<br />

% ANG - matrix met hoekwaarden<br />

% MAG - lengte van de pijlpunt<br />

% KLEUR_RAND - kleur van rand, [] is none<br />

% KLEUR_FILL - kleur van de pijl, [] is none<br />

% HANDLE_AXES - axes waarin de pijlpunten getekend worden.<br />

% UITVOER<br />

% H_PIJL - vector met handle van de pijlen<br />

Met de functie pijlpunt wordt een aantal driehoekige pijlpunten gegenereerd, van de volgende vorm:<br />

Figuur 2 Een pijlpunt<br />

Als invoer is nodig: een matrix of vector x- en y-coordinaten, de matrix of vector ang met de<br />

respectievelijke hoekverdraaingen, en mag, een scalar met de grootte van de pijlpunten, relatief ten<br />

opzichte van de grootte van de axes waarin het veld getekend wordt.<br />

16


Bij het tekenen wordt er van uitgegaan het oosten de nulrichting is en dat de tegenwijzerzin positief is.<br />

2.35 plot_nan<br />

function plot_nan(x,handle_figure)<br />

%PLOT_NAN Teken de NaN's van een (m,n) matrix.<br />

% AANROEP<br />

% PLOT_NAN(X,HANDLE_FIGURE) maakt een image-plot (plot in matrix<br />

% coordinaten) van de matrix X in de figure met handle<br />

% HANDLE_FIGURE. Default is GCF.<br />

Functie om de lay-out van een curvelineair grid te inspecteren. De landpunten (dummy waarden) moeten<br />

door NaN’s zijn vervangen.<br />

2.36 rand_vld<br />

function randlijn = rand_vld(x_veld,y_veld)<br />

%RAND_VLD Compute a STRUCT of edges for a curvelinear grid.<br />

% CALL<br />

% RANDLIJN = RAND_VLD(X_VELD,Y_VELD)<br />

Functie om aan de hand van een curvelineair grid de randlijnen te vinden. In ontwikkeling.<br />

2.37 rand2vld<br />

function rand2vld(randlijn,line_color,handle_axes)<br />

%RAND2VLD Add contour lines to curvelinear grid<br />

% CALL<br />

% RAND2VLD(RANDLIJN,LINE_COLOR,HANDLE_AXES)<br />

% INPUT<br />

% RANDLIJN - STRUCT met lijnelementen, bestaande uit 2 vectoren<br />

% LINE_COLOR - RGB vector met kleur voor randlijn<br />

% HANDLE_AXES - handle van de axes voor de randlijn<br />

Funktie om een met rand_vld gegenereerde struct met randlijnstukken over een grid of surface te<br />

plaatsen.<br />

2.38 read_cmp<br />

function var_out = read_cmp(cmp_name,var_type);<br />

%READ_CMP Read colormap or separator value vector from .CMP file<br />

% CALL<br />

% VAR_OUT = READ_CMP(CMP_NAME,VAR_TYPE) reads a colormap<br />

% from the file CMP_NAME. VAR_TYPE defines whether the<br />

% colormap itself or its separator values are transferred<br />

% to the output variable VAR_OUT.<br />

% A .CMP file contains a STRUCT named COLOR_MAP with fields<br />

% COLOR_MAP.COLORS - nx3 matrix with RGB values<br />

% COLOR_MAP.VALUES - (n+1) vector with separator values<br />

% A.CMP file can be created or edited with the CM_EDIT<br />

% colormap editor GUI.<br />

% INPUT<br />

% CMP_NAME - name or path and name of the .CMP file<br />

% VAR_TYPE - string<br />

% 'colors' - COLOR_MAP.COLORS<br />

% 'values' - COLOR_MAP.VALUES<br />

% OUTPUT<br />

17


% VAR_OUT - matrix with the COLOR_MAP.COLORS or<br />

% COLOR_MAP.VALUES, depending on VAR_TYPE<br />

%<br />

% SEE ALSO: CM_EDIT<br />

Met de ColorMap Editor kan een gebruiker zelf een colormap samenstellen, met bijbehorende<br />

scheidingswaarden, bijvoorbeeld ten behoeve van de color_br functie. De functie read_cmp leest<br />

zo’n colormap .cmp bestand in en haalt er de colormap matrix of de vector met scheidingswaarden uit.<br />

2.39 redblue<br />

function c_map = redblue(n);<br />

%REDBLUE Create a colormap from red through white to blue<br />

% CALL<br />

% C_MAP = REDBLUE(N) creates a colormap C_MAP of length N<br />

% from red through white to blue<br />

<strong>Matlab</strong> bevat standaard een groot aantal colormaps, eigenlijk functies die een matrix met RGB waarden<br />

genereren ter lengte van het aantal gewenste kleuren. redblue maakt een colormap van rood via wit<br />

naar blauw, met minimaal 2 kleuren en maximaal 256. Er moet, in tegenstelling tot de <strong>Matlab</strong> colormaps,<br />

altijd een aantal worden meegeven.<br />

2.40 redgreen<br />

function c_map = redgreen(n);<br />

%REDGREEN Create a colormap from red to green trough orange<br />

% CALL<br />

% C_MAP = REDGREEN(N) create a colormap C_MAP of length N<br />

% from red to green through orange<br />

<strong>Matlab</strong> bevat standaard een groot aantal colormaps, eigenlijk functies die een matrix met RGB waarden<br />

genereren ter lengte van het aantal gewenste kleuren. redgreen maakt een colormap van rood via<br />

oranje naar groen, met minimaal 2 kleuren en maximaal 256. Er moet, in tegenstelling tot de <strong>Matlab</strong><br />

colormaps, altijd een aantal worden meegeven.<br />

2.41 remove<br />

function c = remove(a,b)<br />

%REMOVE Removes all elements of a vector A from a vector B.<br />

% CALL<br />

% C = REMOVE(A,B) removes all elements of the vector A from<br />

% the vector B, if they exist in B.<br />

%<br />

% EXAMPLE<br />

% a = [2:2:10];<br />

% b = [1:10];<br />

% REMOVE(a,b) returns [1 3 5 7 9]<br />

Handige utility, ontwikkeld voor de GUIMAKER.<br />

2.42 roteer<br />

function [x,y] = roteer(phi,origin,x,y)<br />

%ROTEER Roteer paren van punten om een gegeven punt.<br />

% AANROEP<br />

% [X,Y] = ROTEER(PHI, ORIGIN, X, Y) roteert de punten X(i,j), Y(i,j)<br />

18


% om het punt ORIGIN over een hoek PHI (in radialen).<br />

Uit cosmetisch oogpunt kan het zinvol zijn een curvelineair grid iets te verdraaien voordat het geplot<br />

wordt. Hier kan om een vast punt ORIGIN over een hoek PHI, positief in tegenwijzerzin, gedraaid<br />

worden.<br />

Let er op dat ook de pijlen of pijlpunten mee moeten draaien!<br />

2.43 rotr<br />

function uit = rotr(A,r)<br />

%ROTR Roteer een matrix A r stappen naar rechts<br />

% AANROEP<br />

% UIT = ROTR(A,R) roteert de matrix A cyclisch r stappen<br />

% naar rechts.<br />

Variant op <strong>Matlab</strong> funkties als flipud en fliplr.<br />

2.44 spacesl<br />

function spcs = spacesl(s)<br />

%SPACESL Bepaal hoeveel spaties er aan het begin van een string staan.<br />

% AANROEP<br />

% SPCS = SPACESL(S) bepaalt het aantal spaties (ASCII 32) dat<br />

% aan het eerste teken van de string S voorafgaat.<br />

% Funktie tbv het bepalen van de diepte van UIMENU's bij de<br />

% invoer van een GUI.<br />

Funktie voor de GUIMAKER.<br />

2.45 split_ln<br />

function [sl, sr] = split_ln(s)<br />

%SPLIT_LN Split a line in two part on the = character.<br />

% CALL<br />

% [SL, SR] = SPLIT_LN(S) splits the input string S<br />

% into two strings SL and SR on the first = character.<br />

% If not present: SL = S, S = [].<br />

Funktie voor de GUIMAKER. Zie splitxln voor verbeterde versie.<br />

2.46 splitxln<br />

function [sl, sr] = splitxln(s,x)<br />

%SPLITXLN Split a line in two parts on the x character.<br />

% CALL<br />

% [SL, SR] = SPLITXLN(S,X) splits the input string S<br />

% into two strings SL and SR on the first X character.<br />

% If not present: SL = S, S = [].<br />

% INPUT<br />

% S - input line, string<br />

% X - character to plit on, string<br />

% OUTPUT<br />

% SL - left part of line, string<br />

% SR - right part of line, string<br />

Funktie om string in twee delen te splitsen. Vooral handig bij het inlezen van databestanden met<br />

metainformatie, bijvoorbeeld .dia bestanden.<br />

19


2.47 str2labl<br />

function label_str = str2labl(s)<br />

%STR2LABL Convert a string to a label<br />

% CALL<br />

% LABEL_STR = STR2LABL(IN_STR) splits the input string IN_STR<br />

% on the / character into two strings, and then converts<br />

% it to a label. One of both may be empty.<br />

Functie om labels zoals bijvoorbeeld de titel van de color_br aan te maken. Maakt gebruik van de TeX<br />

mogelijkheden van <strong>Matlab</strong> om fracties (zoals: mg per liter) weer te geven.<br />

2.48 str2vec<br />

function svec = str2vec(s)<br />

%STR2VEC Convert a string of numbers to a string of a row vector.<br />

% CALL<br />

% VEC = STR2VEC(S) converts a string of numbers to<br />

% a string of a row vector, ie it places square brackets around<br />

% the string.<br />

%<br />

% EXAMPLE<br />

% STR2VEC('2 3 4') returns '[2 3 4]'.<br />

Variant op num2str en num_str.<br />

2.49 strcmpci<br />

function string_match = strcmpci(s1,s2)<br />

%STRCMPCI STRing CoMParison, Case Insensitive.<br />

% CALL<br />

% STRING_MATCH = STRCMPCI(S1,S2) returns 1 if strings S1 and S2<br />

% are the same in lower case and 0 otherwise.<br />

% This in contrary to STRCMP, which is case sensitive.<br />

%<br />

% See also STRCMP, FINDSTR.<br />

% INPUT<br />

% S1 - string<br />

% S2 - string<br />

% OUTPUT<br />

% STRING_MATCH - boolean, 1 if S1 == S2, 0 if S1 ~= S2.<br />

% EXAMPLE<br />

% STRCMPCI('YeS','yes') returns 1.<br />

Variant op de <strong>Matlab</strong> functie strcmp, maar nu met een case insensitive vervelijking van strings.<br />

2.50 text2str<br />

function s_mat = text2str(file_name)<br />

%TEXT2STR Read text file into a matrix of strings.<br />

% CALL<br />

% S_MAT = TEXT2STR(FILE_NAME)<br />

Functie om een eenvoudige ASCII text file om te zetten naar een matrix van strings, die vervolgens in een<br />

editable uicontrol geplaatst kan worden. Wordt bijvoorbeeld bij colofon’s gebruikt.<br />

20


2.51 venwlogo<br />

function venwlogo(handle_axes);<br />

%VENWLOGO Plaats het VenW logo in een figure.<br />

% CALL<br />

% VENWLOGO(handle_axes) plaatst het VenW logo<br />

% in de axes met handle HANDLE_AXES.<br />

Functie om het Verkeer en <strong>Water</strong>staat logo in een axes te plaatsen van het current figure. Heeft de datafile<br />

venwlogo.mat nodig om de patches te tekenen.<br />

2.52 xi_logo<br />

function h_xilogo = xi_logo(line_width,i_color,handle_axes);<br />

%XI_LOGO Place the beautiful Xi visualisatie logo in an axes<br />

% CALL<br />

% H_XILOGO = XI_LOGO(LINE_WIDTH,I_COLOR,HANDLE_AXES) places the logo<br />

% of Xi visualisatie in the axes with handle HANDLE_AXES.<br />

% The width of the lines is LINE_WIDTH, the color of the I is I_COLOR.<br />

% Default settings are:<br />

% LINE_WIDTH - 2<br />

% I_COLOR - [0 0 1]<br />

% HANDLE_AXES - GCA<br />

% Data is read from XI_LOGO.MAT<br />

% Output is a STRUCT containing the handle of the individual parts<br />

% of the logo.<br />

Uiterst handige utility om het Xi logo in een axes te plaatsen. Heeft de datafile xi_logo.mat nodig om<br />

de patches te tekenen.<br />

2.53 zero2nan<br />

function y = zero2nan(x)<br />

%ZERO2NAN Convert the zeros in a variable to Not-a-Numbers.<br />

% CALL<br />

% Y = ZERO2NAN(X) converts all zero entries of X to NaN's,<br />

% which is useful if X is a matrix for a parametric grid.<br />

% EXAMPLE<br />

% X = [0 1 0 ; 2 1 2 ; 2 0 2];<br />

% ZERO2NAN(X) returns<br />

% [NaN 1 NaN ;<br />

% 2 1 2 ;<br />

% 2 NaN 2 ]<br />

De functie zero2nan verandert de dummy waarden 0 in NaN ten behoeve van het plotten.<br />

2.54 z_interfaces<br />

function z_mat =<br />

z_interfaces(waterstand_veld,diepte_veld,vaste_laag,sigma_laag,aant_laag);<br />

%Z_INTERFACES Creeer matrix met z-interfaces mbv waterstand, diepte en laagverdelingen<br />

% AANROEP<br />

% Z_MAT =<br />

Z_INTERFACES(WATERSTAND_VELD,DIEPTE_VELD,VASTE_LAAG,SIGMA_LAAG,AANT_LAAG)<br />

% berekent een matrix met scheidingsvlakken aan de hand van het<br />

waterstandsveld,<br />

% diepteveld, en de vectoren met de verdeling en grootte van de vaste en<br />

21


% sigma lagen van het model. De velden worden gegeven als vectoren van de<br />

natte<br />

% punten van het model.<br />

% INVOER<br />

% WATERSTAND_VELD - vector met waterstand voor alle natte punten<br />

% DIEPTE_VELD - vector met diepte voor alle natte punten<br />

% VASTE_LAAG - vector met verdeling van de vaste lagen<br />

% SIGMA_LAAG - vector met verdeling van de vaste lagen<br />

% AANT_LAAG - aantal lagen<br />

% UITVOER<br />

% Z_MAT - matrix van ( x AANT_LAAG+1) elementen<br />

% met de scheidingsvlakken of z-interfaces<br />

De functie z_interfaces wordt gebruikt bij het maken van vertikale en horizontale doorsneden van<br />

modellen. Het is efficienter om de scheidingsvlakken te berekenen dan deze als matrices op te slaan.<br />

22

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!