krj@na.toronto.edu (Ken Jackson) (01/03/90)
Comment: requests, comments or problems to matlab-users-request@mcs.anl.gov Comment: submissions to matlab-users@mcs.anl.gov Comment: library contributions to matlab-library@mcs.anl.gov Matlab Digest Tuesday, December 19, 1989 Volume 1 : Issue 3 Today's Editor: Chris Bischof Today's Topic: Matlab codes from Netlib Suppressing blackened surface plots Putting axes on `mesh' plots Including Matlab plots in TEX files Moving Average Filter ---------------------------------------------------------------------------- From: Christian Bischof (bischof@mcs.anl.gov) The matlab codes have now been installed in Netlib. Thanks to Jack Dongarra for his help. In order to get an idea how you can get codes from netlib, and what other useful goodies you can find there, send the message send index to netlib@ornl.gov If you want to get the index for the `matlab' subdirectory, you would for example send the message send index from matlab If you want to get the index from the `tools' subdirectory in `matlab', say, you would send the message send index from matlab/tools Now let's assume that you want the file `decode.f' from the `tools' subdirectory. Then you send the message send decode.f from matlab/tools. Currently there are the following subdirectories in Matlab: approximation approximation theory archive old matlab user group messages control control theory dataanalysis data analysis and statistics graphics graphics programs integration numerical integration linearalgebra linear algebra utilities misc miscellaneous ode ordinary differential equations optimization as the name says pde partial differential equations rootfinding zero-finding routines specialfunctions special functions teaching for classroom use tools miscellaneous tools Currently we have the following software: In `approximation': conforma: A set of functions which can be used to compute rational (Pade' type) approximations to functions which are analytic inside the unit circle. Howard Wilson, University of Alabama In `archive': v1no1 and v1no2: The first two messages I sent out since I monitor distribution In `dataanalysis': qqnormal: Q-Q plot to analyze distribution of data errors and residuals. Peter Shaw In `linearalgebra': gjordanrounded: Gauss-Jordan reduction with prescribed number of digits machine accuracy. Howard Wilson, University of Alabama In `misc': choas: Chaotic behavior associated with logistic equation Howard Wilson, University of Alabama polyhedr: geometrical and inertial properties of an arbitrary polyhedron. Howard Wilson, University of Alabama In `ode': ode78: adaptive seventh- and eigth order Runge-Kutta integrator with an example for the forced harmonic motion of a forced pendulum. Howard Wilson, University of Alabama In `optimization': nelder: unconstrained nonlinear search procedure to perform a curve fit to data. Howard Wilson, University of Alabama simplex1: simplex method for linear programming Henry Wolkowicz, University of Waterloo In `pde': beam: impact dynamics problem for an elastic Euler beam of constant cross section which is simply supported at each end. Howard Wilson, University of Alabama In `teaching': teaching.tex: TEX source for `The MATLAB Primer' by Kermit Sigmon, University of Florida In `tools': bundle: csh script used to bundle matlab source files unbundle: csh script used to unbundle matlab files from netlib. decode.f: Fortran program for mapping (*, *) and ** back to proper matlab notation eps2tex.shar: tool to resize, properly position, and include postscript files in TEX documents. Christian Bischof, Argonne National Laboratory I want to stress that I do not check the routines for numerical robustness, good coding style or the like. If you dont' like the way a certain routine works, talk to the author. And, as usual with free software, there are no guarantees that it will work the way you expect it to. Further, it is important that you remap (* to left_bracket *) to right_bracket ** to caret after getting the code from netlib and splitting it into seperate files. A global replace in a text editor will do, otherwise you can use the `decode.f' function in matlab/tools. For those on Unix systems, the `unbundle' shell script in the `tools' directory will strip headers from the netlib message, separate the matlab files, and remap the special characters. Now that the library is in place, I think it would be a good time to dust off and clean up your matlab code that you think might be useful for others. If you have a unix system, please get yourself the `bundle.shar' file and run it on the files you want to submit to make sure that after substitutions no line is longer than 80 characters and that indentation still looks good after tabs have been replaced by blanks. At any rate, please write me a little README file and indicate in which directory you want your code to be placed. Looking forward to your submissions -- Chris Bischof ---------------------------------------------------------------------- >From trummer@cs.sfu.ca (Manfred Trummer) Tue Dec 5 19:27:59 1989 Subject: surface plots In reply to Dan Loziers question on MATLAB surface plots: To avoid getting blackened surface plots I just remove rows (or columns or both) from my original matrix. To plot a 16 x 1000 matrix W I would use mesh(compactify(W',27)'), thus plotting only a 16x37 submatrix. To plot a 161 x 161 matrix Z you can use mesh(compactify(compactify(Z',4)',4)) and so on. You can easily modify the M-file to do row and column compactification at once, but since this does not seem to be as useful in practice I go with fewer input parameters. Cheers, --Manfred Trummer function v=compactify(u,P); % u,v: matrices; P: integer % delete every P-th row of u to obtain v % Default for P: P = 2 (delete every second row). % % This M-file can be called to suppress lines in a surface plot using mesh. % To delete columns instead of rows call v=compactify(u',P)'. % % v=compactify(u) or v=compactify(u,P) % % Manfred Trummer, Mathematics Department % Simon Fraser University, Burnaby, B.C., Canada % <trummer@cs.sfu.ca> % if nargin==1 P=2; end; s=size(u); nl=fix((s(1)-1)/P); index=P*[0:nl]+ones(1,nl+1); v=u(index,:); %END ---------------------------------------------------------------------------- >From scroggs@icase.edu (Jeff Scroggs) Wed Dec 6 08:35:59 1989 Subject: Axis using Dore on Titan Does anybody in matlabland know how to put axis on the color surface rendering available in matlab with the 'render' command? I have discovered that surface plots from the 'mesh' command can have axis inserted with the following m-file -- Jeff Scroggs % this function puts axis and labels of axis on a 3-D plot % assumes the thing being plotted is between -1 and +1 % the 'hold' command must be executed first % be sure the scaling is not default axis([0 1 0 1]) x0 = -.3 ; y0 = .0 ; xt = y0 ; yt = x0 ; % x axis r = [ x0+0.53 x0+0.25 ] ; x = [ y0+0.0 y0+0.44 ] ; plot(x,r) ; text(xt+.2,yt+0.35,'x') ; % y axis r = [ x0+0.53 x0+0.75 ] ; x = [ y0+0.0 y0+0.55 ] ; plot(x,r) ; text(xt+0.3,yt+0.67,'y') ; % z axis r = [ x0+0.53 x0+1.0 ] ; x = [ y0+0.0 y0+0.0 ] ; plot(x,r) ; text(xt-0.03,yt+0.75,'z') ; ----------------------------------------------------------------------- >From demmel@robalo.nyu.edu (Jim Demmel) Thu Dec 7 08:49:05 1989 Subject: Question on matlab & latex How does one merge matlab plots into a latex file? I have tried various suggestions from other sites, and have yet to get the plot to appear where I want it, if it appears at all. It may be local differences between latexes or file system organizations. Could someone post a small example which shows explicitly how to do it? Advice on rescaling the plot would be welcome too. Jim Demmel [ moderators note: ] [ eps2tex.shar in matlab/tools contains the eps2tex command which ] [ works well on our configuration: Arbortex TeX and Apple Laser- ] [ writer. -CHB ] ------------------------------------------------------------------------ From: Jack Sharer <JWS%PSUARL.BITNET@ANLVM.CTD.ANL.GOV> Subject: Moving Average Filter I was suprised to find that MatLab's signal processing toolbox does not include a simple moving average filter or box car filter. I've been using the following function to implement a moving average filter: function ANSWER = SMOOTH (X, N) % X is the vector we want to which we apply a moving average % N is filter period % Note: code for handling a length 1 vector is omitted ANSWER = cumsum(X); ANSWER = [ ANSWER(N); (ANSWER( N+1 : Length(ANSWER)) - ... ANSWER( 1 : Length(ANSWER) - N) ) ] ./ N; Can any of you offer a more efficient algorithm? ---------------------------------------------------------------------- <end of matlab digest> --------------------- Reposted by Prof. Kenneth R. Jackson, krj@na.toronto.edu (on Internet, CSNet, Computer Science Dept., ARPAnet, BITNET) University of Toronto, krj@na.utoronto.ca (on CDNnet and other Toronto, Ontario, X.400 nets (Europe)) Canada M5S 1A4 ...!{uunet,pyramid,watmath,ubc-cs}!utai!krj (Phone: 416-978-7075) (on UUCP) (FAX: 416-978-4765)