Sysquake Release Notes
SysQuake 2.3
LME
- linprog
- disp output a superfluous empty line after logical matrices; fixed
- error and warning now accept a format string and additional arguments, like sprintf and fprintf
- true and false now also accept size arguments and produce an array, like ones and zeros
- in str2obj and related functions, functions "cat", "zeros", "ones", "eye", and "diag" were sometimes refused depending on the number of arguments; fixed
- functions called with the wrong number of input arguments threw the error "Wrong number of output arguments"; fixed
- reshape now accepts dimensions as separate arguments, and one of them left unspecified as an empty array
- functions sandbox, variables
- empty structures are displayed as "(empty struct)"
- islist gave true for structures; fixed
- isstruct gave false for empty structures; fixed
- new error messages: "Non-integer argument", "Argument out of range", "Non-scalar argument", "Non-object argument", "Not a permutation of consecutive integers", "Bad variable in the left part of an assignment", "Bad variable in a for loop"
- dumpvar displayed empty structures as {}; fixed
- info v didn't displayed correct information for structures; fixed
- x{:} didn't displayed an error message when x wasn't a list; fixed
- x(:) gave an error when x was a list; fixed
- in x(ix) = expr, where x was a list, ix couldn't be an array with more than 2 dimensions; fixed
- in (expr)(...,:,...,...end...,...), end didn't give the correct value; fixed
- functions defined in libraries imported at command line with "use" couldn't be referenced from functions defined at command line; now they're imported in both the top-level context and the _cli library where functions typed at the command line are defined
- variable references and assignments are now possible in nested structures and lists
- v.(expr) (field access with a field given by a string)
- global and persistent variables (not to be abused!)
- info returned lists of lists instead of list of structures for 'b', 'o', and 'v'; fixed
- info g for global variables and info p for persistent variables
- deblank
- private functions weren't always private; fixed
- fclose must now be used to close any file descriptor, not only those obtained with fopen (it replaces closedevice etc.)
- function "methods" now ignores private methods
- function "feof" didn't always work correctly; fixed
- in command syntax, arguments may now begin with '-', '/', '.', ':', and '*', in addition to letters or digits, provided they include at least one letter or digit
- in command syntax, '.' and '/' were considered as separators; fixed
- as error message wasn't always displayed when an unknown library was "use"d; fixed
- for a few functions, overloading might corrupt the argument stack; fixed
- user functions without output argument used with "map" corrupted the argument stack; fixed
- x(ix)=[] where ix was out of range might corrupt the argument stack; fixed (an error is thrown)
- fieldnames and rmfield cannot be used directly on objects anymore (they can still be overloaded)
- in fprintf, sprintf, error, and warning, '0' modifier pads with zeros instead of spaces (e.g. sprintf('%05d',-2) -> '-0002')
- fscanf, fprintf and related functions now support %o for octal
- in function roots, the test which decides whether a root is real or complex has been improved for polynomials with a very small first coefficient
- builtin functions isfield, getfield, setfield, and fieldnames cannot be used directly with objects anymore to get access to the structure; but they can be overloaded
- disp(list) now displays contents of small string elements
- command syntax for function calls is now documented
- replist
- fscanf with a single input argument corrupted the return stack; fixed
- in debugging mode, dbtype defaults to the current function if no function name is provided
- new error message "Bad list index"
- subsref and subsasgn now accept subscript type '{}' (with a subs which is a list of one element) to get or set a list element
- new error messages "Object too large" and "No more memory"
- better memory management
- functions encodebase64 and decodebase64
- "info b" sometimes displayed tags which weren't functions; fixed
- function polyint
LMELapack
- real / scalar complex gave a wrong result; fixed
- qr now supports pivoting with an optional third argument, like the built-in function of LME
- on Mac OS X, a version is provided for the optimized Lapack and BLAS libraries provided with Mac OS 10.2
Longint
- x-y, where x was a longint and y a double, might crash; fixed
Extensions
- LME_ext.h didn't export main functions correctly for Visual C++; fixed
- ImageIO, MMap, ZLib, Joystick
Libraries
- lti: (tf object).size didn't work; fixed
- lti: MIMO non-square systems of transfer functions weren't displayed correctly; fixed
- lti: tf::size now accepts a 2nd input argument to specify the dimension
- lti: code for access to nested elements in structures and lists simplified
- lti: tf::feedback required two tf objects; now it converts its arguments to tf objects and accepts expressions like feedback(tfobject,scalar)
- lti: tf::minreal didn't work for MIMO systems; fixed
- lti: added tf::fieldnames, ss::fieldnames, lti::isfield
SysQuake
- optional argument for frequency in commands bodemag, bodephase, nyquist, nichols, sigma, and their discrete-time versions
- cancel(false) in the idle handler -> does not redraw
- step by step execution of handlers in debugging mode, which was never supported, has been explicitly removed; breakpoints in handlers (or their subfunctions) display a warning and dump the local variables
- block "embeddedfile" in SQ file, which can be opened with function "efopen"
- when an error occured when fetching the special input argument for a handler, the next execution of any handler was sometimes disabled, or a hang occured when it was a mousedrag handler; fixed
- cross-figure drag&drop with handlers dragin and dragout
- impulse of a transfer function with an integrator sometimes didn't give the correct result; fixed
- graphics made from the command line weren't always displayed; fixed
- settabs with a string argument which didn't end with a tabulator didn't produce the correct alignment; now a trailing tabulator is added if necessary
- in the first call to the mousedrag handler after a click in a slider when a mousedown handler exists, the value of the slider was the maximum value; fixed
- improved memory management
- getfile didn't handle correctly multiple mime types separated with semicolons; fixed
SysQuake (Windows)
- input from stdin reused the previous command (e.g. "fscanf('%d')" followed by 5 in the command line interface used input "fscanf('%d')\r\n5\r\n" instead of just "5\r\n"); fixed
- version resource
SysQuake (Mac)
- commands like subplots couldn't be used in input handlers; fixed
SysQuake LE (Mac)
- on Mac OS 10.2 and later, use the Lapack framework provided in the system
SQ files
- image.sq: use an embedded file, and functions imageread & imagewrite for image file support instead of TIFF
Sysquake 2.2.3
SysQuake
- data (from SQD file or data block) was written to stdout; fixed
- in 2.2.2, the idle handler sometimes wasn't executed; fixed
SysQuake (Win)
- when an SQD file with subplots in free position mode was opened by double-clicking its icon, all subplots were displayed in the top left corner; fixed
SysQuake 2.2.2
SysQuake
- with the subplot command, skipping subplots didn't produce the expected result; fixed
- sliders couldn't be manipulated with an idle handler; fixed
- the data block of SQ files hasn't been decoded correctly since 2.0; fixed
- zoom undo wasn't always handled correctly; fixed
- in SQ files, handlers can be any function, not only those defined in the SQ file or its libraries
- in command "slider", slider limits given by the 2nd arg. can be a 2x1 row matrix even for several sliders; the same limits are used for all sliders
- scale is now initialized for commands sgrid, zgrid, hgrid, ngrid, circle, and text
SysQuake (Mac)
- the maximum frequency of idle handlers has been increased
- in the command windows, the home and end keys move the cursor to the beginning and end of the current command, respectively
- in SysQuake LE, fprintf didn't converted line feeds to carriage returns; fixed
LME
- in the base workspace, all undefined variables but "ans" (after "clear" or a syntax error) are completely removed
- the name of variables weren't available in inline functions, e.g. for function eval or for error messages; fixed
- eval without output argument hasn't worked correctly since LME 2.2; fixed
- fprintf with neither output argument nor semicolon doesn't display the length anymore
- in fprintf and sprintf, empty strings aren't skipped anymore with '%s'
- real + complex, where at least one of the operands was an array, gave garbage; fixed
- in strings, unrecognized sequences of characters beginning with a backslash are reported as error "Unknown escape character sequence" instead of quietly ignoring the backslash
- (complex matrix) .\ (real matrix) gave a wrong result; fixed
- operators & and | and function xor now support arrays
- same and unsame (and operators === and ~==) now accept any kind of argument
- reloading nested libraries sometimes didn't worked correctly; fixed
- in arrays A with m dimensions, removing elements along an n:th dimension with n > m (e.g. A=1;A(:,:,1)=[]) corrupted LME stack and could lead to crashes; fixed
- when elements were removed from arrays and the last dimension was reduced to 1, it remained (i.e. A=ones(2,2,2);A(:,:,1)=[] gave a 2x2x1 array instead of a 2x2 array); now it's removed
- display of arrays in lists threw an error; fixed
- function "deal" sometimes failed silently; fixed
- floating-point numbers in intermediate byte-code weren't always aligned correctly, which caused crashes on some platforms (such as Ultrasparc); fixed
- sort and unique accept list of strings
- imag(real array) produced garbage; fixed
- isempty(array) caused a bad type error; fixed
- in permute and ipermute, dimension permutation vector may be smaller than the number of dimensions of the array; remaining dimensions are left in the original order
- deal can have less output arguments than input arguments (superfluous input arguments are ignored)
- in input arguments, the syntax var{:} and expr{:} wasn't always handled correctly; fixed
- in "for i=vector" or "for i=matrix", i had flags which made "equal" fail when comparing i to a scalar or vector which should otherwise have been the same; fixed
- beta distribution in pdf and cdf
- icdf (inverse cdf)
- lasterr was reset too often to be useful; fixed
- error doesn't display anything inside catch blocks anymore
- map can now be used with functions without output argument (e.g. map(@disp, l) displays the elements of list l)
- in error messages, unrecognized characters outside the range 32-127 are displayed in hexadecimal
- on platforms where isnan and isinf return 0 or -1, these values were used as logical values, which might be revealed in rare cases; fixed
- svd(complex value) and related functions might corrupt LME data; fixed
- diff with arrays gave a wrong result; fixed
- in str2obj and related functions, function references are now accepted
- in str2obj and related functions, lists are no longer limited to 10 elements
- permute and ipermute didn't preserved the logical or char flag; fixed
- funm sometimes gave a wrong answer; fixed
- strmatch
- polyval now accepts arrays as 2nd argument
- repmat and reshape didn't preserved the logical or char flag; fixed
- size(reshape([])) and size(unique([])) gave [0,1] instead of [0,0]; fixed
- sub2ind and ind2sub now accept more subscripts than the number of dimensions; remaining subscripts are assumed to be or set to 1, respectively
- sread and fread without output argument, but not followed by a semicolon, corrupted the operand stack; fixed
- sread, fread, swrite, and fwrite with 'uint32' produced garbage; fixed
- trace with a complex argument gave a wrong result; fixed
- where both functions and statements were valid (e.g. at the command prompt), code fragments beginning with "use" were always identified as statements; fixed
- rot90([]) produced a division by zero and crashed on some platforms; fixed
Libraries
- lti: ss(transfer function) was broken in 2.2.1; fixed
- lti: transfer function may be displayed as functions of backward shift q^-1 or z^-1 by setting the variable to q^-1 or z^-1
SQ files
- ARW.sq, demogr.sq, gravity.sq, MPT.sq, PID_ct.sq, PID_dt.sq, RST_ct.sq, RST_dt.sq, salesman.sq: use of built-in function "not" as menu handler
Sysquake 2.2.1
SysQuake
- dbodemag and dbodephase couldn't have output arguments; fixed
LME
- since version 2.2, x(index)=y set only the real part if x was complex and y was real; fixed
- on some platforms, x([])=[] crashed when x was []; fixed
- built-in functions which returned 0 or more output arguments can now force the output of an argument when no output is requested; for example "feval(@sin,2)" without semicolon gives 0.9093, which is assigned to variable "ans" and displayed, while "feval(@format,'j')" doesn't produce any output
- for objects, o(:,i) was evaluated like o(i,:); fixed
- structures aren't lists anymore, and aren't displayed as lists
- "end" can be overloaded for objects (syntax: n=C::end(a,k,nd))
- "subsasgn" can be overloaded for objects
- "beginning", symmetric of "end" for the first index, always 1 for arrays and lists but can be overloaded for objects
- spaces aren't supported anymore as element separators in lists (this wasn't documented)
- "define" is now supported in inline
- feval with a reference to a "define" and input arguments wasn't reported as an error and corrupted the argument stack; fixed
- subsref and subsasgn implemented for arrays and structures
- filter with arrays and with 2 output arguments
- fevalx
- text output is much faster on some platforms
- commands without output could be used in functions like fzero or ode45; fixed
- with objects in LME 2.1-2.2, a-b called minus(a,-b) instead of minus(a,b); fixed
- bitset
Libraries
- stdlib slightly simplified thanks to fevalx
- bitfield, a class for arithmetic on binary numbers
Sysquake 2.2
SysQuake
- SysQuake might crash when the init handler required more memory; fixed
- image now also accepts an m-by-n-by-3 array of RGB values instead of three m-by-n arrays for color images
- circle now accepts arrays of compatible sizes for x, y and r (compatible means equal or scalar, like scalar math functions such as atan2)
SysQuake (Mac)
- drawnow now opens the Figure window if it's hidden
- in Mac OS X, drawnow didn't flush the graphics; fixed
LME
- fread hasn't managed the stack correctly since 2.1; fixed
- sum, prod, mean, cumsum, cumprod, and reshape with two input arguments couldn't be overloaded to accept an object as first argument; fixed
- upper and lower have a result of type char
- new functions for arrays: ndims, flipdim, squeeze, cat, permute, ipermute
- support for arrays with more than 2 dimensions: acos, acosh, all, any, asin, asinh, atan, atan2, atanh, beta, betainc, betaln, bitand, bitcmp, bitget, bitor, bitshift, bitxor, cdf, ceil, char, conj, cos, cosh, cumprod, cumsum, diff, disp, double, dumpvar, elseif, end, erf, erfc, exp, fft, find, fix, fliplr, flipud, floor, fprintf, fwrite, gamma, gammainc, gammaln, if, ifft, imag, ind2sub, ischar, isfinite, isinf, isletter, isnan, isnumeric, isspace, length, log, log10, lower, max, mean, min, mod, nchoosek, ones, pdf, prod, rand, randn, real, rem, repmat, reshape, rot90, round, setstr, sin, sinc, sinh, size, sort, sprintf, sqrt, sub2ind, sum, swrite, tan, tanh, unique, upper, while, xor, zeros, +, -, .*, ./, .\, .^, *, /, \, ==, ~=, <, <=, >, >=, &, |, ~, ?:, ;, ,, all string arguments, array indexing for access, assignment and suppression
- sort (and functions such as median which use it) sometimes caused a memory access violation on some platforms; fixed
- exist with one argument didn't manage correctly the argument stack; fixed
- any and all with empty matrices produced a non-logical number; fixed
- new errors "Bad dimension", "Incompatible size of selection array", and "Wrong number of indices"
- fopen without 2nd input argument now really opens files in read-only mode
- support for expr.field, expr(indices), expr{index}, and end in these index expressions
- deal
- since 2.1, core builtin functions with a variable number of arguments (such as deconv) didn't report correctly the number of output arguments to functions like nargout or feval; fixed
- v{:} in function call input arguments
- join can be called without arguments ("join" or "join()" -> {})
- more functions can be defined in low memory conditions
- in statements like "for c='abc'", c is now of type char; the same is true for logical arrays
- asinh with a complex argument gave a wrong result; fixed
- in fprintf and sprintf, '%...s' where '...' were modifiers but didn't include the number of characters ('.n2'), only the first four characters were output; fixed
- when a "use" statement is issued from the command-line interface to force a reload of function definitions, definitions weren't reloaded when it was the first time the library was "use"d from the command-line interface; now definitions in libraries which were "use"d indirectly are also reloaded
- dumpvar can now be aborted
LME (Mac)
- errors when loading extensions are reported
SQ files
- filter.sq: much simplified thanks to a make handler
- triangul.sq: fixed
Libraries
- stdlib, support for arrays with more than two dimensions: cross, cumtrapz, hist, median, std, trapz
- stat, support for arrays with more than two dimensions: mad, moment, nanmean, nanmedian, nanstd, trimmean, var, zscore
- stdlib: subspace
- lti: tf::subsref with indices (such as "x=tf(1,2:3);x(1,1)") didn't work correctly; fixed
Sysquake 2.1
SysQuake
- bodemag and bodephase couldn't have more than 4 arguments, and dbodemag and dbodephase more than 5; now they can have up to 6 and 7 arguments, respectively, so that they accept the optional style and id arguments with state-space models
- some invisible changes to offer more flexibility for reusing the graphical architecture in other Calerga products
- plotoption nogrid/fullgrid had to be placed after sgrid/zgrid/ngrid/hgrid to have an effect; fixed
- bicubic interpolation for image with style = '3'
- dash and symbol type did reset the line thickness to thin (e.g. 'R_' gave a thin red line instead of a thick red line); fixed
- _nb was always 1 when multiple styles were specified in the circle command; fixed
- support for standard input (fd=0), which can be used with fscanf, fgets, fgetf, and fread
- improved functions margin and dmargin
- sliders with several thumbs
- hstep with a very small time step sometimes crashed; now it returns a memory overflow error
- loading SQ files without an input handler sometimes didn't give a correct result; fixed
- keydown handler
- undo didn't work correctly when no figure was displayed; fixed
- RGB color specification for graphics ('h(rrggbb)' or 'H(rrggbb)')
SysQuake (Mac)
- the resolution of the profiler has been improved from us to ns
- function "quit"
- basic support for the serial port on Mac OS X
- Paste in the Command window now puts the cursor at the end if the selection begins before the end of the prompt
SysQuake (Windows)
- .lml files are displayed in the Open dialog box
- Print and Print Preview are now always enabled for the figure panel
- default font size for figures is larger
- format preference got corrupted; fixed
LME
- some invisible changes to support mixing HTML in SysQuake Remote
- when there was not enough memory to extend the table of workspace variables, LME could theoretically hang; fixed
- functions fft and conv2 can now be interrupted
- library names in "use" statements weren't always decoded correctly when they were placed at the end of a code fragment; fixed
- setfield
- info with optional output argument
- new "info o" for operators ("info b" doesn't list operators anymore)
- dumpvar supports function references and binary data, such as longint when implemented
- nested ':' and '?' operators don't need parenthesis anymore; for instance, a:b:c:d = (a:b:c):d, a:b:c:d:e = (a:b:c):d:e, a?b?c:d:e = a?(b?c:d):e (all these expressions produced error "Wrong number of input arguments)
- orth, null, qr
- more than 3 input arguments or 2 output arguments could be given to fread and sread, with unpredictible results; fixed
- fscanf(format) with implicit fd=0 (stdin)
- fseek and ftell (brought from SysQuake and other LME-based applications)
- feof
- integer numbers displayed by disp (or because of the lack of a semicolon) in exponential notation because they were too large had no fractional part; fixed
- "format i" or "format j" to choose which symbol is used to display the imaginary part of a complex number
- when non-core built-in functions were called with the wrong number of arguments, the error was reported ambiguously as "Unknown variable or function"; now it's "Wrong number of input arguments" or "Wrong number of output arguments"
- dbstop('-interrupt') to enter debugging mode when the interrupt key is pressed (a 2nd press really interrupts functions like fft)
- when variable x is empty, x(:,logical), x(logical,:), x(:,logical)=[] and x(logical,:)=[] threw error "Incompatible size"; it doesn't anymore
- lu
- hess, schur, householder, householderapply
- fprintf and sprintf with empty matrices didn't give the expected result or crashed LME (access to address 0); fixed
- new error "Not enough memory" for memory overflows outside LME, to better track memory usage
- sqrtm, logm, funm
- eig now supports complex matrices
Libraries
- constants
- lti: rlocus, pzmap, margin, optional output arguments for graphical commands (like their non-lti versions)
- classes: operators == and ~= for classes polynom and ratfun; constructor for ratfun accepts polynom objects as arguments
SQ files
- PID_dt.sq and RST_dt.sq: the frequency line was displayed only for w < pi; fixed
Sysquake 2.0
SysQuake
- title
- redraw
- format options are saved and restored
- clf now resets the scale
- menu Views is disabled when no figure is declared
- dumpvar with 2 or 3 arguments didn't popped correctly the arguments, which caused problems in for loops; fixed
- in the dialog command, the backslash character in strings in now encoded as \\
- dumpvar now compresses ranges (e.g. dumpvar([3,1.1:4]) -> [3,1.1:3.1] instead of [3,1.1,2.1,3.1]), zeros (e.g. dumpvar([1,0,0,0,0,0,0,0]) -> [1,zeros(1,7)]), and constants (e.g. dumpvar(ones(1,10)*pi) -> [3.141592653589793*ones(1,10)])
- dumpvar supports struct
- in the style option string of graphic commands, each style is made of one (color or style) or two (color and style in any order) characters, and styles are recycled as before
- dialog didn't display correctly the default value '' (an empty string); fixed
- improved spacing of lines of text, sliders and buttons
- SQ files couldn't be loaded at all when a function was referenced somewhere but not defined; fixed (an error message is displayed in the Command window)
- hbar has been renamed barh
- in the list of arguments of bar and barh, x and w can be omitted even if a kind, a style and/or an identifier argument is present
- first argument of plot is now optional
- rlocus made robuster, especially with high-order systems
- the button and slider size is based on the font size
- mousedoubleclick handler
- _param for subplot-specific parameter
- mousedrag and mousedragcont handler may not be declared for the same figure anymore
- the figure wasn't redrawn when the scale command was executed from the command line; fixed
- the Options/Label menu entry is disabled for subplots which don't have a title
- X and/or Y grid
- menu "Views" renamed "Layout"
- the color of stacked bars was reversed; fixed
- import and export handlers, Special Paste and Special Copy
- cancel(false) to keep previous values of output variables in a mousedrag or mousedragcont handler, but continue the drag
- support for multiple instances: functions of each SQ files are defined in separate libraries and preserved, changes in in the underlying undo and handler architecture
- continuation characters "..." are also recognized in SQ file declarations
- click can be anywhere in sliders
- undefined SQ variables (those defined only by make handlers) aren't stored in SQD files anymore, and variables not defined in SQD files are left undefined to let make handlers do their job
- 3d sliders
- the cursor sometimes flickered between the plain cursor and the manipulation cursor when it was over a slider or a button and an idle handler produced graphics of varying size; fixed
- "scale lock" in a draw handler locks the scale as if the user chose the "Locked Scale" menu entry immediately after loading the SQ file
- figoptions frame/noframe/label/nolabel/grid/nogrid/fullgrid/xgrid/noxgrid /ygrid/noygrid in draw handlers to set the initial value of user options
- make handlers with literal numerical input arguments sometimes froze SysQuake; fixed
- when the scale is locked, resizing the subplots changes the scale in order to display always the same range; for subplots with an equal scale along x and y axis, ranges are changed in such a way that resizing back to the initial size resets the scale correctly
- toolbar and action menu entries are disabled when irrelevant
- clicks in non-interactive plots are discarded
- idlestate to change the on/off state of the idle handler programmatically
- settabs left its argument on the stack, which might sometimes cause problems; fixed
- in rare low-memory cases, settabs could have a buffer overflow; fixed
- settabs now accepts a numerical argument
- sliders might crash SysQuake when they were shorter than 64 pixels; fixed
- option to check for common design errors in SQ files
- preference dialog for startup commands (typically "use" commands)
- when function "eval" was called from a function which didn't define any variable, it had access to variables from the calling function; fixed
- (d)step, (d)impulse, (d)bodemag, (d)bodephase, (d)nyquist, and (d)nichols can be used with output arguments to obtain the coordinates of the plots
- line style such as ':', '-' and '!' approximated with patterns
- a comma cannot follow immediately keyword "variable" anymore
- _nondumpable attribute for SysQuake variables which cannot be dumped and restored with undo/redo/save/open (such as file descriptors for serial connections)
- bodemag and bodephase now accept a state-space model
- graphical commands such as step couldn't be used with a state-space model with no state (e.g. step([],[],[],1)); fixed
- commands "sigma" and "dsigma" for plotting the singular values of frequency responses
- commands "initial" and "dinitial" for plotting the time response of a state-space model with initial conditions
- in versions whithout a built-in source code editor, menu "Reload" to reload the current SQ file version after it has been edited in an extern text editor
- Save As EPS is now enabled for any figure window, not only for the output of an SQ file
- dialog now also accepts inline functions, structures and objects
- _param can now also be used in menu, import and export entries and their _enabled and _checkmark expressions
- Settings submenu in the figure popup menu
- figures with text, buttons and/or sliders have a fixed line spacing and can be scrolled up and down when more material is displayed that can fit
SysQuake (Mac)
- when the example in the Help menu was loaded, the menu entry in the Help menu for information about the current SQ file was "About"; now it's "About Example"
- inter-application copy/paste wasn't always handled correctly; fixed
- menus related to figures and SQ file are now disabled when the figure window isn't active
- menu "Plots" is completely disabled when all its entries are
- dialog boxes use the Appearance background color
- proportional scroll bars
- in figure windows, scrollbars weren't moved when the zoom box was clicked; fixed
- menus "Figure Window" and "Command Window" now expand windows if they were collapsed
- new shortcut Command-Shift-Z for redo, and removal of the arrow keys for undo/redo
- double-clicking SysQuake's icon in the Finder show the Command window if there aren't any other open window
- Select All for non-interactive plots is disabled
- when several subplots are selected, options which are set for some subplots and unset for other ones are marked with a dash in menus
- when the Command window was resized, its content was scrolled to top; fixed
- help message isn't displayed anymore for disabled buttons in the toolbar
- the first time SysQuake was launched, the display format (set with the "format" command) wasn't initialized correctly; fixed
- when loading pure functions, no figure window is opened, but the command window is shown
- the size of the Command window wasn't restored when its top left corner was less than 16 pixels away from the top or left borders; fixed
- when the selection started from the first character of the command line, it was impossible to delete it with the backspace key; fixed
- option for the default Appearance background in figure windows
- drag Appearance sound in figure windows
SysQuake (Windows)
- crashed when nonpositive data were plotted with a dB scale; fixed
- preference to change the figure font
- line thickness wasn't set correctly; fixed
- the terminate handler wasn't called when quitting SysQuake; fixed
- the abort key processing made keyboard input unreliable when an idle handler was called; fixed (the new interrupt key is now the standard Control-Break)
- memory preferences are better checked, and the minimum has been raised to 8 megabytes
- a menu separator was displayed at the top of the figure popup menu when there was no Plots or Settings submenu; fixed
SysQuake LE (Windows)
- serial ports left open weren't closed on quit; fixed
- button for save
- path preference
LME
- command "format"
- the colon operator sometimes missed the final value because of round-off errors (e.g. 1.1:0.1:1.2 -> 1.1); made much more robust
- some syntax errors (such as x(:3)) are now reported as "Unrecognized or unexpected token 'xxx'"
- when a name with more than 32 characters is found, the first 32 characters are reported in the error message
- errors during the execution of function "eval" weren't reported with the function name and line number; fixed
- when an error occured after a call to a user function in an expression, the function name and line number reported in the error message were wrong; fixed
- when an error occurs, a stack trace is displayed
- &&, ||, ? :
- the display of very small numbers hanged LME; fixed
- empty matrices in lists weren't displayed correctly; fixed
- empty strings in lists are now displayed as ''
- memory allocated for compiled functions was underestimated (overly conservative); fixed
- v{ix} didn't yield an error when v wasn't a list; fixed
- it's now possible to add a last element to a list variable with v{end+1}=el and to initialize a new variable to a list with v{1}=el
- structures with functions struct, isstruct, isfield, rmfield, fieldnames
- new error messages: "Too many nested subexpressions", "Variable table overflow", "Expression too large", "Too many nested (), [] and {}", "Too many nested programming structures"
- the number of variables which can be defined by a single command typed in the command line isn't limited anymore (previously, it was limited to 16)
- apply(f,list) didn't work when the list contained a number of elements such that f couldn't return the maximum theoretical number of output arguments (for instance apply('min',{2,3}), because min(2,3) can provide only one output arguments while min can have up to 2 output arguments); fixed
- the second argument of diff can now be [], which stands for the default value of 1
- for var=x1:x2 and for var=x1:xs:x2 now accept a complex x2
- sort doesn't change the order of identical elements anymore
- in sprintf and fprintf, * is recognized in the format string as the width or precision placeholder (one more argument or matrix element is consumed)
- fmin has been renamed fminbnd
- strcmpi
- isnumeric
- isstr has been renamed ischar
- quad
- new function entries aren't created anymore automatically for commands typed at the command-line prompt (unknown function names are usually errors)
- which
- name of undefined functions weren't reported correctly in the error message; fixed
- spaces weren't handled correctly as separators for lists of output arguments between []; fixed
- .\ was mapped to mldivide instead of ldivide; fixed
- kron
- sort without input nor output argument didn't through an error; fixed
- ss2tf now requires a fifth argument to specify the input if there are more than one input
- ss2tf didn't support ss systems without any state; fixed
- in fprintf and sprintf, %X didn't display uppercase hexadecimal; fixed
- bitshift didn't clean the stack correctly; fixed
- dumpvar with output argument
- source code is preserved by inline functions and is output by dumpvar
- info u
- sinc
- help for built-in functions, operators and commands, and Matlab-style help of user commands
- === as infix operator for same
- ~== (infix operator for unsame)
- when an error occured when pushing output arguments when returning from a function, variables were sometimes corrupted, which could later lead to a crash; fixed
- extension functions may now allocate any number of blocks of temporary memory, not necessarily after having pushed output arguments
- dumpvar now preserves the logical attribute
- with command "disp" and standard output, logical values are displayed as "true" or "false" for scalars, or as "T" or "F" for arrays
- display of large objects (such as rand(200)) can be interrupted
- flushdevice
- beta, betainc, betaln, erf, erfc, gamma, gammainc, gammaln, pdf, cdf, nchoosek
- sort with row vectors had a bug; fixed
- sort now has at least one output argument
- when allocating space for new variables, there might be a memory read from an invalid address, which caused problems on some platforms (Palm); fixed
- function references (@fun, str2fun('fun'), fun2str(funref), and support in feval, fzero, quad, disp, etc.)
- num2list, list2num, getfield
- max(M) and min(M) now return the first element when several of them have the same value
- nonnumeric arguments of diff and magic weren't rejected; fixed
- object support: functions "class", "isa", "isobject", and "methods"; method definitions with C-like syntax; function "struct" to cast objects to structures
- when memory allocated to LME was expanded, reference to undefined functions were corrupted; fixed
- quad: maximum number of step reductions reduced from 20 to 12
- map with any number of input and output arguments
- varargin, varargout
- error when a strcture field was set in a multiple-output assignment (e.g. (a.x, ...)=...); fixed
- error occuring after a try/catch block weren't always handled properly; fixed
- svd with 3 output args now returns by default a full m-by-n S, and an "economy-size" U and S with "false" as 2nd argument (compatible with Lapack version)
- deleting elements in a list with v(...)={} sometimes crashed; fixed
- user errors (thrown with "error") now generate an error message with a function name and a line number
- when some code was compiled during execution, the line number was changed and sometimes reported incorrectly if an error occured immediately afterwards; fixed
- the initial square barcket of an array couldn't be followed by a line feed; fixed
- a space couldn't follow the initial brace of a list; fixed
- in a list of variables for multiple output arguments, commas couldsn't be preceeded by spaces; fixed
- debugging functions dbclear, dbcont, dbhalt, dbquit, dbstatus, dbstep, dbstop, dbtype
- nargin('fun') and nargout('fun') didn't give the correct result when function fun hadn't been loaded; fixed
- for methods, the syntax 'class::method' is now accepted by nargin, nargout and which
- "which" now uses a slash instead of a colon as a separator between the library or type and the name
- built-in functions couldn't be redefined or overloaded with functions with a different number of arguments; fixed
- private functions in libraries (with new "private"/"public" keywords)
- function "balance"
- arguments of functions which evaluated another function (such as "apply") were corrupted when too large; fixed
- mod gave a wrong results with some arguments; fixed
- reshape with a single argument
- hasfeature
- fread which requested a large amount of data had a buffer overflow; fixed
- keywords else, otherwise, try and catch don't need anymore to be followed by a new line, a comma or a semicolon
- separated help files
- ode45 adaptive time step debugged and improved
- ode23 and odeset; improvements to ode45 (options Refine and Stats)
- clear('-f') to clear the definition of all functions
- new function optimset; fminbnd and fzero now use the result of optimset for their options
- functions which evaluate other functions, such as fzero and ode45, couldn't be interrupted when the evaluated function hadn't any loop; fixed
- define
- complete definitions with function and define can be typed at the command-line prompt to define top-level functions and constants in library "_cli"
- default input arguments in function definitions
Extensions
- LMELapack: (u,s,v)=svd(M,0) didn't produce a v with a size such that M=u*s*v'; fixed
SQ files
- most of them: use of && and ||
- image.sq: random generator used for dithering is reset to keep the same noise
- prewarping.sq merged with sampling.sq
- import/export handlers added where it makes sense
SysQuake LE
- fopen prints the warning "Low-level file I/O not supported"
Sysquake 1.3.1
SysQuake (Windows)
- when SysQuake was launched as the result of opening a document, the extensions weren't loaded; fixed
Sysquake 1.3
SysQuake
- loading a new SQ file doesn't clear the variables defined from the command-line interface anymore
- better ticks and more labels
- support for free-position subplots, with command subplotpos
- gray background
- bar and hbar now accept an empty size argument (e.g. bar([],1:5,[],'','r') to have red bars with default width)
- slider with 3 arguments (or empty 4th, 5th and 6th args) sometimes didn't display anything; fixed
- improved text array display
- several text and slider commands may be used and mixed in the same figure
- button command
- settabs command
- circle with a logarithmic scale made SysQuake hang; fixed
- in zoom or shift mode, now sliders and buttons can still be manipulated
- margin sometimes gave a wrong gain margin when there was an integrator; fixed
- the vertical bar in sliders was only partially drawn when it had the maximum value; fixed
- with a logarthmic scale, lines with negative coordinates were drawn at a random position; fixed (they aren't drawn anymore)
- variables were always set to empty arrays before the input handler was executed; now the values set by the init handler are preserved
- leading zeros in the polynomial arguments of graphic functions are now discarded
- multi-line C-like comments /* ... */
- in SQ files, the string right before the end of the file, if any, wasn't decoded correctly (e.g. an SQ file which contained 'figure "x"', without carriage return, produced an error); fixed
- make handlers with literal numerical input arguments weren't used; fixed
- bode, nyquist and nichols plots may now be used with non-causal transfer functions
- help messages in zoom, zoom x, drag and select mode when the cursor is over a figure
- thick lines (with uppercase color letters for the style parameter of graphic commands)
- color picker to choose the background color of the figure window
- option to have thicker lines
- spaces are not required anymore between keywords such as figure or menu and the string which followed them, and new lines found there are fine
- precision of c2dm(...,'zoh'), step, and impulse has been increased, thanks to the precision increase of poly(matrix)
- only one level of make handlers; now indirect dependancies are handled correctly
- c2dm and d2cm with state-space models
- the figure window wasn't updated when the label command was typed at the command line; fixed
- _idlerate and _idleamount to give hints on when to call the idle handler
- multiple init and terminate handlers are now permitted and executed sequentially
- in plot(X,Y,...), X or Y may be a row vector and the other one a matrix, the row vector being reused to match the size of the matrix; the same for line(A,b,...)
- in handler declarations, () is accepted as an empty list of input arguments
- in SQ files, ';' can now be used as declaration separators
- SysQuake can now read plain LME functions (without any SQ declaration)
- multiple declarations of elements such as input handlers or help block and misplaced declarations such as draw handler not following a figure declaration are flagged as errors
- less memory-greedy when loading large SQD files
- slightly faster when expanding memory allocation
- if there is no subplot command in the init handler (or no init handler), the first figure is displayed by default
- clf couldn't be used consistently in functions called from the command line; fixed
- command "drawnow", useful for benchmarks
- line([],[],...) produced an error; fixed
- step, dstep, impulse, and dimpulse now also accept a state-space model A,B,C,D
- impulse now checks strict causality (degNum < degDen or D = 0)
- the circle command didn't check for memory overflows; fixed
- the unique "SQ Extension" file has been replaced with multiple files in folder "LMEExt"
- handler declarations don't need an empty function y=set(x) to assign a variable to another one: y=x or y=integer is now accepted
- when looking for the object under the mouse cursor, images are ignored near lines and lines are ignored near points, which makes possible the selection of a point on a line
- automatic control example replaced with triangle.sq, and help message made less frightening
- any kind of LME object (except for inline functions) can now be stored in SQ variables, not only matrices
- dumpvar(expr) doesn't output the final end-of-line anymore, to make possible its use in a more complex expression
- dumpvar support for lists
SysQuake (Mac)
- in 1.2, the text windows were updated at each key stroke; fixed
- Undo/Redo weren't disabled when a text window was active; fixed
- small memory leak in open and save dialogs after a cancel; fixed
- the cursor was set even when the front window was not the figure window; fixed
- Show/Hide window menu entries have been replaced with Command Window and Close
- Font preference dialogs for the Command window and the text in figures
- close box to hide the figure window, and new menu entry (in the File menu) to show it
- the title of the figure window now indicates which SQ file is open
- when Save As SQ File was followed by Save, the SQ file was overwritten by an SQD file; fixed (now Save As SQ File disables Save)
- Save As SQ File now changes the file name referred by subsequent Save As
- after loading an SQ file without any figure, menu actions (click or shortcut) might crash; fixed
- SysQuake User Guide entry in the help menu to open Doc.htm in the preferred browser (as set in the Internet control panel)
- subplot margins now leave more room for labels
SysQuake (Windows)
- the figure window was erased before setting or option changes, which caused a bad visual effect; fixed
- the title optionally specified as the first argument of getfile and putfile is used
- lines were clipped when printing at high resolutions; fixed
- the mouse middle button (if any) is mapped to shift-left button
- subplot margins now leave more room for labels, especially for printing
- when the demo SQ file available in the Help menu was displayed, the help message was not set; fixed
LME
- depending on the device, fgets and fgetl might return an empty string when nothing was read; now they throw an end-of-file error
- new extension architecture, for two kinds of extensions: those written by the end user, with a callback system and many checks to limit the risks of crashing SysQuake, and those linked with LME functions for stack manipulation, which integrate closer with LME
- polyval(pol, []) gave pol instead of []; fixed
- multi-line C-like comments /* ... */
- polyder(scalar) gave an empty matrix; now it gives 0
- roots and poly cannot be used in dialogs anymore
- functions "feval", "tf2ss", "version"
- sort with two input arguments
- results of expressions typed in the command window are assigned to variable "ans"
- the sign of det was sometimes wrong; fixed
- command syntax (such as "clear a")
- arguments of clear weren't always decoded properly; fixed
- fprintf and sprintf %d displayed numbers x with -0.5 < x < 0 as -0; now the minus sign is discarded
- precision of eig(matrix) and poly(matrix) has been improved
- recursive calls are interruptible
- for non-core LME functions, the function name wasn't reported in the error message when there was too few or too many output arguments; fixed
- () is accepted as an empty list of input arguments
- when it exists, the first nargout of user functions is displayed and/or assigned to variable "ans" if the statement doesn't end with a semicolon
- "end" used in complicate index expressions was not always associated with the correct dimension; fixed
- functional form for all operators (or, and, le, lt, ge, gt, eq, ne, plus, minus, mtimes, mrdivide, mldivide, mpower, times, rdivide, ldivide, power, colon, not, uminus, uplus, ctranspose, transpose, horzcat, vertcat, colon)
- feval evaluated the built-in version of functions when they were redefined as a user function; now the overriding definition is used
- sscanf and fscanf ran forever when %d, %f, %g or %e ran into an unknown character; fixed
- integer numbers may be represented in hexadecimal by prefixing them with 0x, in binary by prefixing them with 0b, or in octal by prefixing them with 0
- extension based on LAPACK to replace, extend and add the following LME functions: balance, chol, det, eig, hess, inv, logm, lu, \ (mldivide), / (mrdivide), orth, null, pinv, qr, rank, rcond, schur, sqrtm, svd
- empty function definitions (without function header) weren't reported as errors and led to crashes; fixed
- with complex variable v, v(:) = scalar real didn't reset the imaginaty part; fixed
- Frobenius norm of a matrix (option 'fro')
- inside [], binary operators such as + or * can now be surrounded by spaces (i.e. [1 + 2] is 3, [1 +2] is [1,2], and [1+ 2] is illegal)
- new functions tril, triu
- the empty string '' was aligned on the left margin; now it's indented by one space, like all other objects
- new read/write callback architecture for cleaner extensions (few visible effects for the end user)
- M^0 was wrong; fixed
- ones, zeros, eye, rand and randn with large negative arguments gave an out-of-memory error; fixed (->[])
- v(pred)=..., v(pred,:)=... and v(:,pred)=... with undefined v didn't result in inconsistent error; fixed
- some error messages concerning errors with variables and indices didn't contain the name of the variable; fixed
- findstr
- ode45, fzero, fmin
- inline, and feval changed to support inline functions
- nargin and nargout with an argument
- atan(literal real) wasn't optimized correctly; fixed
- lists ({...}, v(ix), v{ix}, v(ix)=..., v{ix}=..., join, apply, map, islist, support in switch and for)
- with complex z=0 (e.g. z=[0,1j];z=z(1);), z^x or z.^x -> nan; fixed
SQ files
- MPT.sq: clicking far away from any object produced an error; fixed
- RST_?t.sq/PID_?t.sq: when the cursor was over a frequency response, the mark in the Nyquist diagram caused an error with multiple models; fixed
- RST_?t.sq/PID_?t.sq: when the cursor was over a frequency response, the mark in the Nichols diagram was not wrapped the same way as the diagram itself; removed
- PID_?t.sq: choice of kp/Ti/Td or kp/ki/kd; set-point weighting b
- PID_dt.sq: derivative action filtering
- RST_?t.sq/PID_?t.sq: Y/W step response (W=input disturbance)
- RST_?t.sq: simplified thanks to a make handler
- settabs where needed for nicer columns of text and slider labels
- triangle.sq: altitudes, messages
- minesweeper.sq: mouseup handler instead of mousedrag, to avoid an artifact when choosing another set of mines when the initial click hits a mine
- salesman.sq: the river can be rotated by holding down the shift key, or put into automatic rotation mode for a nice demo
- relay.sq: the initial output and output derivative can be changed in the phase plane or the output response (output only)
- gravity.sq: uses the built-in ode45 function for integration, much better and faster than the ad hoc Runge-Kutta algorithm used before; new option to display the asteroid speed
- puzzle.sq discarded
Sysquake 1.2
SysQuake
- scale('lock',[xmin,xmax]) and scale('lock',[xmin,xmax,ymin,ymax]) in the draw handler set the locked scale, to be used when the limits imposed by SysQuake (max-min > 1e-6 for linear scales and max/min < 1e6 for logarithmic scales) cause problems
- "label" command (syntax: label('xlabel') or label('xlabel','ylabel') )
- bug when a make handler had to allocate more memory fixed
- too many labels were displayed when the lowest one was exactly on the plot lower limit (which was extremely unfrequent before the 'lock' option of scale); fixed
- nyquist and dnyquist of transfer functions with a (very) large gain entered an endless loop; fixed
- negative integers in handler declarations weren't accepted; fixed
- mousedragcont handler
- the figures weren't always refreshed after mouseout; fixed
- after a click in a figure which hadn't any mouse handler, the scale was blocked; fixed
- text-mode output didn't write end-of-lines correctly; fixed
- when several subplots were displayed, the graphic commands following clf on the command line didn't have any visible effect; fixed
- grid options weren't restored from an SQD file or a data block; fixed
- when executed from the command line, subplotprops didn't force a complete update of the graphics; fixed
- help system (help {@ ... @} in SQ files -> About SQ File in the help menu)
- when no init handler was defined, variable initialization (with a data block or an SQD file) was skipped and the idle handler (if any) wasn't executed; fixed
- "bar" and "hbar" commands (syntax: [h]bar(u, v, width, kind, style, id), with default u = 1:size(v,2), default width = [0.8,0.8], kind='grouped'(default), 'stacked', 'interval', default style='bfrfmfgfcfyfkf')
- no error message is displayed anymore when the init handler is cancelled
- _m was never set in the mousedown handler; fixed
- when (ok,var,...)=dialog(s,expr,...) was cancelled, garbage was left on the execution stack, which sometimes resulted in unexpected results, e.g. when in a for loop; fixed
- the cursor wasn't set correctly by mouseover handlers which had variables as output arguments; fixed
- new preference to display in red the frame around figures which can be manipulated interactively
- empty lines are not put into the history anymore
- in SQ files, the name right before the end of the file, if any, wasn't decoded correctly (e.g. if the whole content of the SQ file was "init x", without carriage return, the error was "Bad function definition" instead of "Undefined function 'x'"); fixed
- the built-in example of SQ file used in the help and when SysQuake is not registered has been updated to the latest version of RST_dt.sq (see below)
- with automatic scale and equal scales along x and y axis, when all the points lied on an horizontal or vertical line (e.g. with poles on the real axis), zoom was disabled; fixed
- the figures aren't updated anymore when Undo or Redo is attempted but fails because there is nothing to be undone or redone
SysQuake (Mac)
- in addition to Command-. and Control-C, the Esc key also interrupts execution
- clicks at the bottom of the Command window weren't discarded; fixed
- in the command window, left and right keys work in the read-only part, except that the left key doesn't allow to get over from the command line to the prompt; when text is typed while the cursor or selection is in the read-only part, the text is appended to the end of the command line
SysQuake (Windows)
- when the idle handler took longer than its time rate (100 ms), the user interface became extremely unresponsive; now at least 50 ms are left unbusy between idle handler calls
- when an SQ file was opened from the outside (double-click in the Windows Explorer etc.), SysQuake quit immediately; fixed
- when a dialog box was displayed by the init handler, the draw handlers were called and caused a reentrancy problem which sometimes led to a crash; fixed
- in the command panel, when text is typed while the cursor or selection is in the read-only part, the text is appended to the end of the command line
SysQuake Standard Extensions
- a crash might occur when the function called by callshlib didn't initialized correctly *out and *outSize and callshlib expected an output argument; fixed
SysQuake Demo
- Open has been removed
- timeout is reset when another SQ file is loaded
- edit window for the source code (read-only for built-in SQ files)
- possibility for the user to type her own SQ "file"
SysQuake Demo (Mac)
- countdown in the title bar
LME
- when an error occured when popping a stack frame at the end of a function, an attempt to display a variable name was made even when the variable names weren't available anymore; now "(return)" is displayed
- filter without state (e.g. filter(1,1,u)) was wrong; fixed
- new "Unknown option", "Bad function header", and "Function header expected" error messages
- sub2ind messed up the stack; fixed
- when M was a non-vector matrix, M(pred) = [] gave an error even when all elements of pred were false; fixed
- in addition to %, // is also recognized as the beginning of comments
- built-in commands accepting a variable number of input arguments but used without any input argument (such as char or fprintf) might crash; fixed
- clear
- bug with break or continue in try blocks inside loops fixed
- inside for or switch blocks, try...end (without catch) had a bug; fixed
- for complex variables, the imaginary part of v(pred) was garbage; fixed
- v(ind,[]) = expr through an error; fixed
SQ files
- RST_ct.sq: tuned Bode frequency range
- RST_ct.sq: same frequency range for the Bode magnitude and phase
- RST_ct.sq: system and controller phase in the Bode phase figure
- RST_ct.sq: the figure "Discrete-Time Step Resp. Y/D" didn't work; fixed
- PID_ct.sq: the figures "Discrete-Time Step Resp. ..." displayed debugging info; fixed
- many: make handler and numeric args in handler declarations
- RST_dt.sq, RST_ct.sq, PID_dt.sq, PID_ct.sq: no need to click over the sensitivities to display a frequency line; moving the mouse over them is enough
- PID_dt.sq: the mark at some frequency was wrong; fixed
Sysquake 1.1.1
Viewer and demonstrator only.
SysQuake
- undefined scale could sometimes lead to a crash; fixed
- "variables _implicit" for lazzy programmers
- make handler
- integer input arguments in handler declarations
- "content" keyword, without any effect yet
SysQuake (Windows)
- the space bar to interrupt LME execution has been replaced by the Esc or Pause keys
SysQuake Demo (Windows)
- SQ files embedded in the application, available in an Open submenu, like with the Mac version
- after June 2000, warning, but can still run
LME
- "syntax error" replaced with 12 new, more explicit messages
- for most run-time errors, the name of the offending function, operator, or variable is displayed
SysQuake Viewer (Windows)
- no more expiration date
SQ Signer 1.0.1 (Mac)
- version was still 1.0 fc2; fixed
- Navigation Services
Sysquake 1.1b
SysQuake demonstrator for Mac only.
Sysquake 1.1a
Mac only.
SysQuake (Mac)
- weak link for Navigation services
Sysquake 1.1
SysQuake
- multiple styles for circle
- command "dumpvar" didn't encode backslashes in strings; fixed
- improved rendering speed for images
- horizontal white lines might occur in images; fixed
- command "image" accepts the style '1' for bilinear interpolation
- when a mouseover handler has output arguments different from _cursor and _msg, they are set (without a new undo level) and the figure is redrawn
- mouseout handler
- logarithmic scales were limited to a range of 1e3; now it is 1e9
- option for enabling p-code optimization
- Nyquist diagram of systems with integrators had sometimes a line across the figure; fixed
SysQuake (Mac)
- Open, Save, EPS Size, Path, Memory, and settings dialog boxes are now movable
- automatic memory expansion didn't always work, even when it should have been possible; fixed
- better style '*'
- the SysQuake Help menu entry was disabled after the first dialog box; fixed
- occasional bus errors under Mac OS 9; fixed
SysQuake Viewer
- Undo/Redo
SysQuake Viewer (Linux/Xlib)
- first prereleases
LME
- catch didn't always work correctly inside for, from the command-line interface or in an eval; fixed
- sub2ind, ind2sub
- in strings, \uxxxx, where x is an hexadecimal digit, can be used to encode a 16-bit unicode character (no other unicode support yet)
- v(logical,index) and v(index,logical) are now supported
- v(logical,logical)=... now defines and expands v when needed
- cond
- intermediate code optimization
- ranges with infinite bounds didn't always yield an error; fixed
SQ files
- GPC.sq: the first subplot was initially empty; fixed
- image.sq: 6-bit base64 encoding for smaller files
- new triangul.sq for triangulation and Voronoi diagrams
Sysquake 1.0.1
SysQuake
- mouseup handlers weren't called when no mousedrag was defined; fixed
- dialog boxes re-enabled suspended idle handlers; fixed
SysQuake Register (Mac)
- end of lines were mixed CR and LF; fixed (only CR)
SysQuake Signer Register
- no more info for multiple licenses in dialog boxes
SysQuake Register (Windows)
- the data to be sent to the license issuer wasn't displayed; fixed
LME
- large output arguments could lead to an uncatched stack overflow and possibly to a crash; fixed (the overflow is catched)
Sysquake 1.0
SysQuake
- dumpvar might write '...' at the wrong place with large matrices (e.g. dumpvar([[22;2],ones(2,34)]) ); fixed
- EPS files have native end of lines (CR for Mac, CRLF for Windows) instead of line feeds
- EPS files have the comment '%%EndComments' after the PS structuring comments
LME
- continue didn't always work correctly; fixed
SQ files
- triangle.sq hadn't worked since GM where vrow[vcol] yields a row vector; fixed
Sysquake GM
SysQuake (Mac)
- large amount of data can now be pasted to the command line
SysQuake (Windows)
- splash box isn't displayed when an SQ file is opened
- when the SQ file referenced by an SQD file was not found, SysQuake froze; fixed
- relative paths for SQ files referenced by SQD files weren't resolved correctly; fixed
SysQuake Viewer (Windows)
- only one instance runs simultaneously
- Reset Data didn't work correctly; fixed
LME
- when a number was followed by a string in sprintf and fprintf (e.g. sprintf('%d,%s',123,'abc')), the result was wrong; fixed
- v(indices), when indices is a vector (1-by-n or n-by-1), is now a row vector if v is a row vector and a column vector if v is a column vector
SQ files
- relay.sq: support for systems with an integrator
Sysquake fc2
SysQuake
- end of blocks (the characters @} ) weren't recognized when they were preceded by spaces or tabs; fixed
- retrieving the title of a subplot (e.g. for a Copy) might give unexpected results or crash; fixed
- dialog with input field and without "ok" output argument throws a cancel error if the users clicks the Cancel button, which simplifies menu handlers
- when there was only one subplot and it was Remove'd, it wasn't really; fixed
SysQuake (Mac)
- polygons larger than the display area weren't always drawn correctly; fixed
- Plot and Settings menus have been switched (more logical and compatibility with SQ for Windows)
SysQuake (Windows)
- system resource leak with filled polygons or disks fixed
- most recent files inserted in the File menu
- menu command "Handle SQ Files" (registry stuff)
- clash between View 1x1/1x2 and Preferences submenu fixed
- in the dialog box reporting SQ file errors, the line number was displayed twice; fixed
- Copy and Print now align correctly the text in figures
- transparent background for printed text
- the initial default list of paths where SQ files are searched was separated with linefeeds, which weren't displayed correctly in the dialog box; fixed
SysQuake Viewer
- Select All (only the shortcut for Windows)
- clock
- dialog (without text field)
- fopen/fclose/fseek/ftell (stubs; _no_ file access in SysQuake Viewer)
SysQuake Viewer (Mac)
- Close box to quit SysQuake Viewer
SysQuake Viewer (Windows)
- Reset Data menu
SysQuake Demo (Windows)
- no more "SysQuake Demo" in the background
LME
- outside the scope of brackets, spaces were discarded even between two sequences of alphanumeric characters; now this gives a syntax error
- after the continuation characters at the end of a line (...), empty lines, spaces and tabs are ignored
- with the format '%ns', where n is an integer, and partially consumed arrays of characters, sprintf and fprintf didn't insert the requested number of spaces; fixed
- sprintf and fprintf now use matrix elements line-wise instead of column-wise
- with the format '%s', sprintf and fprintf skipped empty strings; fixed
- with two output arguments, fread and sread returned the count in the first one and the data in the second one; they've switched to correspond to the documentation and the logic
SQ files
- RST_dt.sq, RST_ct.sq, PID_dt.sq, and PID_cd.sq: specifications for absolute and relative damping
- PID_dt.sq: setting the sampling time without a continuous-time model gave an error; fixed
- taylor.sq replaced by approx.sq, with Chebyshev approximation
- RST_dt.sq and RST_ct.sq: input and output handlers removed
- RST_dt.sq and RST_ct.sq: warning when setting a system transfer function which doesn't permit pole placement with the current controller degree removed
- RST_dt.sq: when the degree of the controller doesn't permit pole placement and an attempt to drag a closed-loop pole is made, dialog box to ask whether the degree of S should be changed
- relay.sq
- sampling.sq: new figures for the continuous-time and discrete-time poles to show how the stable region of the Laplace plane is mapped to the z plane
Sysquake fc1
SysQuake
- graphics made from the command line were erased when the window was resized, and couldn't be printed; though it was intended, it's been fixed
- when the scale of a figure with 'equal' scale was fixed and the data were saved as an SQ file, the proportions of the window was changed, and the SQD file was opened, the scale wasn't 'equal'; fixed
- SysQuake froze when an empty SQD file (with just the initial comment pointing to its SQ file) was opened and no input handler was defined (or when an SQ file contained an empty data block); fixed
- execution error of the expression in the function "dialog" could lead to the corruption of the stack and sometimes to a crash; fixed
- execution error of the expression in the command dialog weren't reported correctly; fixed
- the id of rlocus was ignored when calculating _q during a mouse drag, which prevented from having more than one rlocus in the same figure; fixed (you should make sure that the id of rlocus is the same as the id of the corresponding plotroots, as explained in the doc)
- the menu command Reset Data didn't discard the frame around previous figures which were undefined by default; fixed
- bgrid has been renamed ngrid for compatibility with other programs
- nichols, which used atan2 blindly even for finding the phase of G(j*inf)=0, gave a phase of 0 even if the limit phase was -pi; fixed
- with strictly proper TF, commands like nichols, whose magnitude ended at 0, had problems to display it with a logarithmic or decibel scale; fixed
- when full grid is on, ngrid displays the the lines corresponding to a close-loop magnitude of -12, -6, -3, 0, 3, 6 and 12 dB
- much better rlocus
- out-of-memory conditions were not always correctly detected when a large SQ or SQD file was loaded; fixed
- the interruption key (Command-. on Mac or the space bar on Windows) is now reported as an error with the function name and line number
- default scale for rlocus, based on the zeros of num and den
- in EPS files, fill replaced by eofill for a better match with current graphical engines found on Mac and Windows
- in EPS files, color is now supported for lines, filled objects and images
- in EPS files, stars ('*') are now supported
SysQuake (Mac)
- when SysQuake was run for the first time, the default paths for SQ files and the default size for EPS files were set to garbage values; fixed
SysQuake Viewer (Mac)
- Reset Data didn't work; fixed
SysQuake (Windows)
- the background of text was white in graphics; now it's transparent
LME
- atanh(x) with real x and abs(x) > 1 was wrong; fixed
- more robust roots (better handling of poor convergence cases)
- optional + in the format string of fprintf ans sprintf to add a plus sign in front of positive numbers
- for testing logical values in functions like and, or, and find, IEEE arithmetic was assumed even on platform which have a broken implementation, which gave inconsistent results with nan; fixed (values x such that x != 0 are consisedered as true; hence 1, -1, eps/10, j, inf, and nan are all true, and 0 is false)
- if, elseif and while now take the imaginary part of complex numbers into account for consistency with boolean operators and functions
- char, filter, fprintf, and sprintf didn't check they got enough input arguments, which could lead to a crash; fixed
- empty functions without any argument ("function foo" followed by another function) weren't decoded correctly; fixed
- unexpected function headers (e.g. the keyword "function" typed at the command line) gave the error message 'undefined function "function"'; a new error message 'Unexpected function header' has been added for that case
- compilation errors (syntax errors etc.) in expressions typed at the command line) sometimes reported additional garbage; fixed
SQ files
- convolution.sq
- image.sq: better boundary conditions for low-pass filter
- image.sq: input and output handlers for smaller sqd files
- ARW.sq: bug with systems with more than one pole and no zero fixed
- GPC.sq: menu entries for the system and the input weight
- demogr.sq: when manipulating the sliders which change the fertility and the ratio of girls, the corresponding time it takes for the population to double in size in displayed in the status bar
- id_np.sq: Read Data File to read experimental data from a text file
- taylor.sq
Sysquake beta 9
SysQuake
- EPS output restored
- EPS width and height are remembered
- EPS raster graphics (result of image and erlocus) and text (result of text and slider) have been fixed
- in EPS files, line cap and join are set to 1
- the feature flags of the serial number (seventh character) are made available to the extensions
- _cursor to give hints about what can be manipulated
- columns of text are wider if there is enough space
- hand cursor in manipulation mode
- the cursor must be in a radius of 20 pixels around the object to be manipulated (instead of 50 pixels in previous releases)
- cursor set to plain arrow in the inactive region of a figure with sliders
- filled polygons with the 'f' style
- after a Copy, the position of the subplots were incorrect; fixed
- unsupported clc (clear command window) for (Mac)
- movepole with a second output argument
SysQuake (Mac)
- when loading an SQ file required more memory, memory was expanded, but a crash occured the next time some LME code was evaluated; fixed
SysQuake (Windows)
- Save As always saved as an SQ file, even when the extension was .sqd; fixed
- when an error occured in the mousedrag handler, the mouse capture wasn't released and the user interface (menus, window borders, etc.) was blocked until a successful drag was performed; fixed
- Page Setup enabled
- Print Preview enabled for the command panel
- when the command panel contained too much text, it was impossible to type commands; now the oldest text is discarded if necessary (as on the Mac)
- after the use of the history buffer in the command panel (up or down arrow), the user was asked whether he wanted to save his work; fixed
LME
- fwrite wrote garbage in b8; fixed
- fread didn't decode signed numbers correctly; fixed
- try/catch/end, try/end, lasterr
- break in a switch had a memory leak which could fill LME's stacks in rare occasions (such as while 1;while 1;switch 1;case 1; break; end; end; end); fixed
- continue
- square matrix ^ integer scalar
- cov
- same (true if its two arguments have the same type, size and content)
- min and max sometimes returned nan when the an element was nan; fixed (nan's are ignored if they are compared against a number)
- the size of the state (4th arg.) of filter wasn't checked correctly and caused an error with non-square matrix as data to be filtered (3rd arg.); fixed
- built-in functions can now be redefined
SysQuake Register
- the comment "# Condidential! Do not send to anybody!" is added to the file SQ_Reg.key to reduce registration problems even further
SysQuake Register (Mac)
- the dialog boxes had been designed with Charcoal as the system font, which is narrower than Chicago; now more space is allocated for word wrapping for Chicago users
SQ files
- image.sq and image64.sq: error with "No Rotation" fixed
- image.sq: tiff input/output
- mpt.sq: whole feasible region, market line, beta of assets
Sysquake beta 8
SysQuake
- keyboard shortcuts are disabled in demo mode
- Reset Data reverted to the default values of the SQ file when an SQD file had been loaded; fixed
- better rlocus (not perfect yet)
- dynamic memory allocation (transparent expansion when needed)
- preferences for minimum and maximum memory allocated to SysQuake
- preferences for the path where SQ files referenced by SQD files are looked for
- when an error occurs in the idle handler, the idle handler is disabled
- dragging a selection around hasn't worked correctly since 1.0b6; fixed, and works smoothly with an idle handler
- contextual menu in the figure window with the Control key held down (Mac) or with the right mouse button (Windows)
- no more EPS file output
- updated built-in example
SysQuake (Mac)
- the Open Document AppleEvent handler now returns the line number of the error in the argument 'errL'
- fopen, fclose, fseek, ftell, getfile, putfile, and clock are built-in, not in SQ Extensions anymore (they will most probably be supported in the final release)
SysQuake (Windows)
- various problems when files were opened from Windows Explorer fixed
- attempts to change the cursor when a dialog box is open are not made anymore
- better management of the messages in the status bar
- space bar used as an interruption key for lengthy computations
- non-ieee arithmetic compiler is worked around to ensure correct results for isinf, isnan, comparaison operators, and output
- registration of SQD files which can be opened from Windows Explorer
- SysQuake runs in demo mode when not registered
- when one tried to open an SQD file with invalid data, SysQuake sometimes displayed an incorrect file name in the message box which displayed the error; fixed
- the contour command gave noisy level lines because of a bug of the compiler with optimization; fixed (optimization disabled for this command)
SysQuake Viewer
- more errors are reported
SysQuake Viewer (Mac)
- dynamic temporary memory allocation
SysQuake Viewer (Windows)
- preferences (window position and size and state of the toolbar) are saved and restored
LME
- -inf was displayed as inf; fixed
- exist
- in the command line, workspace variables couldn't be reached from an expression evaluated by eval; fixed
- "Not implemented" message replaced by "Not supported"
- when statements like v(...) = [] resulted in an empty array, the variable wasn't really set to [], which might give a wrong stack level when the variable was retrieved later; fixed
- a.^b, with a < 0 and b integer, had a small but nonzero imaginary part (e.g. (-2).^3 gave -8+2.9392e-15j); now it's forced to be real
- unique
- sread and swrite for basic i/o from/to a string
SQ Register
- clearer
- radio buttons for site licenses
- smaller binary for Windows
Sysquake beta 7
SysQuake
- the scale limits weren't always restored correctly after Redo, when loading an SQD file, or during the drag of the selected subplots; fixed
- the vertical range given by the scale command was incorrect; fixed
- in shift mode, the cursor was set to a hand even in a subplot containing text or sliders; fixed
- unsupported clock function for the current date and time
- contour
- even when their scale was the same, selected subplots weren't always dragged or zoomed together; fixed
- with an idle handler, graphics created from the command line were immediately erased; fixed (the idle handler is still called periodically, but no attempt to redraw the figures is made if the figure window has been cleared with clf)
- the idle handler is officially supported
- when the time range was very large (e.g. scale([0,inf])), dstep and dimpulse crashed; fixed (an out of memory error is produced)
- dumpvar with an empty string produced an invalid statement such as "a=;" (this was also the case with Save or Dump Data when no subplot was defined); fixed
- when the history buffer was full, the previous commands weren't discarded correctly; fixed
- _msg as an output of the mousedrag or mouseover handler to display a message in the status bar
- mouseover handler (_not_ followed by the update of the figures; should be used only to display a message in the status bar with _msg)
- smallest labels for the figure axis
- word wrap for large arrays in SQD files and with dumpvar (try "dumpvar('x',1:100)")
- image with a single argument could result in an error; fixed
- optional id for circles, which can be identified as the clicked object in mouse handlers
- the menu entry Locked Scale wasn't always disabled when it should; fixed
- when the subplots command defined more than 16 subplots, SysQuake crashed; fixed
- Idle Processing menu entry to suspend idle processing
- in dumpvar, all control characters (ASCII 0-31 and 127) are now encoded with escape sequences
- unsupported fopen, fclose, fseek, ftell (for file i/o), getfile, putfile
- unsupported launchurl command (with the help of Internet Config on the Mac) (may compromise the security if the user opens SQ files from people he dooesn't trust without checking them; might be removed if this proves to be a problem)
- in SQ files, the end-of-block marker (@}) is now recognized only if there are only white spaces before it on the same line; hence SQ files generating SQ files are easier to write, because one can write fprintf(fd, '@}')
- better nyquist and dnyquist
- much better nichols and dnichols, especially with a logarithmic amplitude scale
- the menu entry Locked Scale wasn't always enabled and disabled correctly; fixed
- sensible default scale for (d)nyquist and (d)nichols with integrators
- subplots and opening SQD files with empty subplots (such as subplots('F\t\tG')) didn't always clear the subplots correctly; fixed
SysQuake (Mac)
- support for more AppleEvents (print, do script, load variables, cut, copy, paste, delete, select, open accepting directly the source code of an SQ or SQD file)
- support for extensions; the file "SQ Extensions", in the same folder as SysQuake, can contain additional commands for special needs with the same main application (currently, it contains the unsupported functions openshlib, callshlib, closeshlib, clock, fopen, fclose, fseek, ftell, and launchurl, and cannot be modified by the end user)
- a click in the zoom box (the control at the top right of the window, not the box in the toolbar) might crash SysQuake; fixed
- SQ files referenced by SQD files are searched successively in the same folder as the SQD file, in SysQuake's folder, in the folder "SQ files" and in the folder "SQ_files"
- in the command window, the keys return, up, down and esc are now active even when the cursor is or the selected text spans before the prompt
- Save was not enabled after Save As; fixed
- When Save overwrote a larger existing file, the end of the previous file was retained; fixed
- flashing of matching parenthesis, brackets and braces in the command window
- when SysQuake didn't find a preference file, the plot window wasn't displayed; fixed
- in the command window, the Enter key has now the same effect as the Return key
SysQuake (Windows)
- print and print preview
- status bar for help messages
- dialog box for the size of EPS images
- the idle handler ran when a dialog box was displayed by a handler, which caused many problems (LME is not reentrant); fixed
- compiled with a native compiler and debugged with a real debugger on real hardware, which is not a bad thing
- minimum window size
- the state of the toolbar, status bar, and command window is saved and restored
- Splash box
- support for extensions; the file "SQ_Ext.dll", in the same directory as SysQuake, can contain additional commands for special needs with the same main application (currently, it contains the unsupported function "hi", and cannot be modified by the end user)
LME
- zero-length strings returned by some commands (especially additional commands added to the core set of LME) had a size of [1,0] instead of [0,0]; fixed
- sscanf
- sprintf and fprintf %x and %X
- sprintf and fprintf %s didn't take into account the number of characters to use (e.g. sprintf('%.3s', 'abcdef') gave 'abcdef' instead of 'abc'); fixed
- conv2(a,b,'valid') always produced a column vector; fixed
- diff with 3 arguments
- max(real matrix, complex matrix) resulted in min(real matrix, complex matrix), and vice versa; fixed
- '' was a 1x0 matrix instead of a 0x0 matrix; fixed
- a string empty matrix was not displayed at all; now it is displayed as ''
- %k and %K (string as small as possible) for sprintf and fprintf
- bitget, bitand, bitor, bitxor, bitshift
- improved rand and randn (rem(floor(rand*2^32),2) is now much more random), with a seed with 2x1 elements (rand('state',scalar) is still valid)
- %g gave sometimes a fractional part with trailing zeros; fixed
- fwrite, fread, fgets, fgetl, fscanf
- \' in strings sometimes gave syntax errors; fixed
- large positive and negative arguments of magic, zeros, ones, rand, and randn better handled
- norm(M,'f') gave a Not Implemented error; now it gives a Bad Argument error
- get and set v(predicate, predicate) is now implemented
- more escape sequences in strings (\a, \v, \f, \xhh, \ooo)
- numbers with an imaginary part equal to not a number ("equal" with its english meaning, not "==") were displayed without any operator between the real part and the imaginary part (e.g. 0*inf*1j -> nannanj); now "+" is inserted
- when abs(imag(z)) < eps * abs(real(z)) (i.e. real(z) == real(z)+imag(z)), the imaginary part is not displayed
- robuster roots algorithm
- the comma operator used to concatenate two matrices with more than one line always gave a double matrix (e.g. [['a';'b'],['c';'d']] -> [97,99;98,100]); now it gives the same type as its first argument
- line and column indexing with a variable containing the empty matrix [] gave an error (e.g. v=[];v(2,:)); now it gives the emty matrix
- line and column assignement with a variable containing the empty matrix [] gave an error (e.g. v=[];v(2,:)=[]); fixed
SysQuake Viewer (Mac)
- zoom, zoomx and drag with the toolbar
- Reset Data
- initialization bug fixes
SysQuake Student Edition
- experimental version; same as SysQuake, but without any Save and Print, at most two subplots, minimum AppleEvents, and no extensions
SQ files
- RST_ct.sq and RST_dt.sq: less bugs, easier to enter fixed parts, and new menu to enter the characteristic polynomial
- potential.sq, a new SQ file for the potential field created by electrostatic charges (demonstrates the use of image and contour)
- gravity.sq, a new SQ file for the chaotic trajectory of an asteroid (demonstrates numerical integration with Runge-Kutta)
- mpt.sq, a new SQ file for Modern Portfolio Theory (multiobjective rate-of-return and risk optimisation)
- mouseover handlers in most SQ files
Sysquake beta 6
SysQuake
- the first time SysQuake is launched, the command window or panel is hidden
- the lack of init handler resulted in the error "Undefined element"; fixed (no error anymore, all variables set to [] if the init handler is not defined)
- in the figure window, the cursor shows what can be done
- variable _m for the shift key
- multiple selection (hold down the shift key to add or remove subplots from the selection)
- if one or several subplots are selected when the number of subplots is reduced, the selected subplots are preserved
- if the selected subplots have the same scale (or x scale), zoom and drag (or zoom x and drag x) change the scale of all selected subplots
- a cancel command in the idle handler doesn't interrupt a drag operation anymore
- a selection rectangle was drawn in Zoom X mode when the shift key was held down; fixed
- Undo restores the selection (but selecting a subplot doesn't add a new level in the undo buffer)
- the grid settings were not always restored correctly after Undo or Redo; fixed
- image
- Automatic Scale replaced by Locked Scale, which toggles the locked and unlocked (automatic) state of the scale of selected subplots
- root locus for polynomials whose coefficients are bounded by ellipsoids
- axis are drawn after the content of the plot, so that the ticks are always displayed
- new splash box
- Save As SQ File didn't write correctly the keyword "data"; fixed
- Select All
- integer line vectors given to the command dialog as default values are compacted with ranges if it's worth to (e.g. with dialog(prompt, [1:5,2:3,100:1000]), the default value in the input field is [1:5,2,3,100:1000])
- the damping and frequency parameters of sgrid and zgrid have been swapped to avoid confusion with other software
- the command subplots reset the information about the current function and line number; if an error occured immediately after (e.g. an undefined output argument in the init handler), this information wasn't reported; fixed
- when text was displayed after a plot which defined the scale (e.g. to display an error message), the previous axis were still displayed; now the text command resets the scale
- sgrid(0,[]) and zgrid(1,[]) fixed
- the Copy command destroyed without coyping the figures drawn from the command line; fixed
- command text with three or four arguments to draw text at a specified position
- the size of the EPS image can be entered in a dialog box before the EPS is saved
SysQuake (Mac)
- at startup, the Command window was brought twice to the foreground; fixed
- a demo SQ file with limited functionality runs if SysQuake is not registered
- a click in the toolbar wasn't always handled; fixed
- contrary to the documentation, the mouseup handler was executed after an error (or cancel) in the mousedown or mousedrag handler; fixed
- in the dialog box, the Esc key is handled as a click in the Cancel button, and the OK button is framed with a thick border
- crashed when a block of text of medium size (6145-8192 characters) was written to the Command window; fixed
- the Clear menu entry wasn't always disabled correctly; fixed
- when not found in the SQ file, function definitions cannot be read from separate M-files anymore (this feature was never documented)
- with an idle handler, the zoom rectangle selection is better displayed
SysQuake (W95)
- entry "Command Panel" in the View menu to show/hide the command panel
- in the command line panel, a selection starting at the beginning of the current line could not be cleared with the Delete or Backspace key; fixed
- idle handler
- prettier symbols drawn by the plot command
LME
- strcmp
- the operators ./ and .\ didn't work correctly with two complex operands; fixed
- x.^y didn't work correctly with real x and y, x < 0; fixed
- functions could not be accessed correctly when the memory allocated to LME was too large (!); fixed
- find didn't return the correct result when it was used with two or three output arguments; fixed
- the name of the variable is added to the error messages 'Variable not found' and 'Index out of range'
- the counter of the for loop was left on the stack when a return was executed in the middle of the loop; fixed
- null indices (e.g. x(0)) weren't detected and could lead to the corruption of the variable data; fixed
- with commands like "a = []; a([]) = scalar" or "a = []; a([],:) = scalar", a was set to 0 instead of remaining empty; fixed
- with commands like "a = []; a([]) = []", one of the dimensions of a was set to 1, as was shown with size and length; fixed
- with commands like "a = []; a(:,n) = expr", a remained empty; fixed
- commands like "a = []; a(n,:) = linevector" resulted in an error; fixed
- expressions like "a(boolean)" resulted always in a column vector; now it's a line vector if a is a line vector
- expressions like "reshape([],2,0)" or "repmat(matrix,2,0)" resulted in empty matrices which had one of the dimensions different than 0; fixed
- rot90 (matrix rotation), conv2 (2-d matrix convolution), filter
- cumsum and cumprod didn't consider line vectors as vectors; fixed (type e.g. cumsum(M,1) to make sure that sums are performed column-wise even if size(M,1)=1)
- sum and prod didn't take the second argument into account with a line vector (e.g. sum(1:5,1) wrongly resulted in 15 instead of [1,2,3,4,5]); fixed
- if a variable v contained the empty array [], getting the elements of v with v(:) might result in a data stack overflow error; fixed
- in arrays, commas and semicolons are now ignored before an end-of-line
- find(line vector) now returns a line vector
- norm with two arguments was evaluated as diff with two arguments; fixed
- norm(vector, 1) resulted in an error; fixed
- setting element(s) of a variable removed the string and logical flags, if any; fixed
- setting element(s) of an undefined variable (e.g. x(3,:)='abc') always created a numeric variable, even when the right-hand side expression was a string or a boolean; fixed
- unknown opcodes of the internal p-code weren't reported as error; fixed
- complex_scalar/real_scalar, real_scalar/complex_scalar, complex_scalar\real_scalar, and real_scalar\complex_scalar fixed
- when a variable v wasn't defined, v(:) = scalar gave an error; fixed
- extension functions (such as plot or scale in SysQuake) without a right parenthesis after the list of input arguments were partially compiled and didn't result in a syntax error; fixed
SQ files
- new PID_dt.sq for the design of digital PID controllers
- new puzzle.sq and minesweeper.sq (with undo!) for less serious examples
- PID_ct.sq: errors for the figures Discrete-Time Step Resp. Y/D and Nyquist Frequency fixed
- new salesman.sq (optimization of the travel of a salesman) to demonstrate the use of an idle handler
- new iupp.sq (interactive uncertain pole placement) as an illustration of the command "erlocus"
- new image.sq (basic image filtering) as an illustration of the command "image"
- new demogr.sq (demographic evolution) to show how other fields can also benefit from SysQuake
Sysquake beta 5
SysQuake
- _x0, _y0 and _z0 were incorrect when a line (displayed with the command "line") was clicked; fixed
- check mark in the Figure menu when a figure is selected
- "system" block replaced by "data" block
- .m extension replaced by .sqd (SysQuake Data) to avoid interferences with other programs
- Reset Data (Reset System in previous versions) now reloads the data block, if any
- when a subplot is selected, Copy copies only it
- with the stairs style for dstep and plot, the color had to be specified before the stairs style (e.g. 'rs' instead of 'sr'); fixed
- SQ sometimes crashed when the undo buffer was full; fixed
- SysQuake Help in the Help menu, with a built-in example (RST_dt.sq)
- clf can now be issued only from the command-line interface and resets one subplot which fills the plot window; the name of the previous figure (if any) is erased
- improved display of the registration info in the About box
- subplots and subplotprops can now be used from the command line
SQ (Mac)
- Copy copied a raster graphic instead of a vector graphic; fixed
- help messages for the toolbar
- faster scrolling when the Command window buffer is full
- print SQ (W95)
- darker green and cyan to compensate for the gamma of PC video system
- the margins of the plot weren't always initialized correctly; fixed
- output to the command-line window (such as fprintf('foo')) might return an error; fixed
- Cut/Paste weren't disabled when the cursor or selection was located before the command prompt; fixed
LME
- a crash might occur when large sizes (> 2^31 elements) were requested for the functions zeros, ones, eye, rand, etc.; fixed
- if an output argument was not defined when the function returned, but was expected by the caller, the variable name was not displayed in the error message; fixed
SQ files
- new id_np.sq for non-parametric identification
Sysquake beta 4
SysQuake
- style 's' for stairs in plot and dstep
- subplots can be dragged around; normal mode is to exchange the target subplot with the dragged subplot; with the modifier key, the source subplot is copied to the target
- when the window is resized, for figures with a fixed zoom, the origin is now changed so that the center of the plot remains at the center
- undo now restores correctly a scale in dB
- shortcuts without the command or control key
- improved syntax for the command slider
- some commands (such as changing the number of subplots) performed before any SQ file was loaded made SQ crash; fixed
- step responses are now drawn on the whole range displayed, not only for t>0
- Drag mode (only x axis if the Shift key is hold down)
- an invalid scale was computed when all the elements had the same x or y coordinate (such as plotroots([1,-1,0])); fixed
- more error messages, especially when the handler declaration doesn't match the function definition
- better and more robust axis ticks and labels (dB ticks are finally implemented)
- when the number of subplots is changed, columns and rows are added to or removed from the right or bottom, respectively; the subplots are not packed row by row anymore
- impulse and dimpulse
- zoom limit (between 1/20 and 20 times the initial scale)
- a new undo level was created when Zoom X was attempted in a figure with equal x and y scale and discarded; fixed
- better documentation (especially SQ_into.htm and SQ_files.htm)
SysQuake (Mac)
- toolbar
SysQuake Viewer
- first releases for Mac and W95, as "helper" applications for browsers with a broken implementation of the plug-in interface of Netscape Navigator
SQ files
- ARW.sq, a PI + antireset windup digital controller to show the feasibility of simulating a non-linear system (and yet another cool interactive toy to understand interactively a fundamental aspect of automatic control)
- PID_ct.sq finally working well enough to be useful
SysQuake beta 3
SysQuake
- aliases of SQ files are resolved
- slider
- undo for the choice of subplots and scale settings
- slightly better tick labels
- string argument for scale
- automatic handling of grid
- scale with output argument
- option-return to enter a cariage return without evaluating the command
- less bugs (can save as SQ file multiple times, dialog with empty matrices, c2dm zoh of tf with integrators...)
SysQuake (W95)
- first release, with the same functionality as the Mac version
LME
- input arguments can be used as output arguments (e.g. function x = Abs(x); if x < 0, x = -x; end)
- less bugs (poly of singular matrices, ...)
SQ files
- mup2.sq: many fixes for standard and multimodel pole placement
- rst_ct.sq: the modification of the fixed parts of the feedback in the open-loop zeros/poles plot is fixed
- PID_ct.sq: first draft
SysQuake beta 2
- default input and output handlers
- subplotprops
- system block and saving SQ files with system block (especially useful for the plugin)
- _nb for the manipulated line number
- _enable() and _checkmark() attributes for the menu entries
- separator for the menu and figure entries
- automatic scaling for dstep and hstep
- _k and _sh are replaced by _ky=_y1/_y (or _q for rlocus) and _kx=_x1/_x, respectively
- ss2tf
- field of function dialog is not limited to 255 characters anymore
- margin and dmargin
- zgrid and sgrid with 2 or 3 arguments
- the mousedrag handler is always called, even when the mouse is not moved
- menu Close replaced by Show/Hide Command Window, and no close box for the figure window
- SQ files are first searched in the same folder as the system file (.m), then in the folder of SQ
- System files can be opened from the Finder
- Save ok
- Save As etc. use the current file name (if there is one) as a default
- Windows are restored at more sensible places when the values retrieved in the preference file are bad (e.g. when the the size of the screen has changed)
- EPS files fixed (ellipses, no frame around the selected subplot, clipping, text)
- axis replaced by a frame around each subplot
- title for each subplot
- new icons
- the signature of text files opened by SQ are set to SQ's
- File/Dump System (same as Save, but to stdout)
- clg renamed clf
- copy
LME
- roots(matrix) and roots(matrix,dimension)
- fft and ifft with optional 2nd arg. for size and 3rd arg. for the dimension the transform is performed along
- constants true and false
- rank, induced 2-norm and svd (with 1 output argument) of complex matrices
SQ files
- many improvements
- RST_dt.sq, RST_ct.sq
- mup2.sq
Other
- keys required for the plug-in
- SQ Net Enabler for Mac
- less bugs (dialog, manipulation when a subplot is empty, clear when there is no variable, repaint after the mouseup handler, memory leak in the plug-in, sprintf, less errors for undefined functions, no more reference to the last called function when SQ calls a function with too many arguments, sprintf %f with small numbers, out-of-memory error correctly identified for step/dstep/hstep, ...)