Matlab Toolbox - Applicaties Helpdesk Water
Matlab Toolbox - Applicaties Helpdesk Water
Matlab Toolbox - Applicaties Helpdesk Water
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