Disponible uniquement en anglais
LME Release Notes
LME 7.5
New features
- new functions:
ode23s | stiff ODE integration |
Minor changes
- support for \operatorname, \overset, and \underset in latex2mathml
- more robust algorithm of margin and dmargin
Bug fix
- possible freeze in ode23 and ode45 with events and tight tolerances
- in loops, cellfun with empty cell array produced an LME:wrongType error;
fixed
- nargin(fun) where fun was an anonymous function with captured variables
was 1 too high; fixed
- in ode functions with events, OutputFcn caused an error; fixed
- inline or anonymous functions whose expression was [] caused an error; fixed
- margin and dmargin with a large cross-over frequency could return a
negative frequency; fixed
LME 7.0.2
Minor changes
- library name displayed in error message of LME:libNotFound
- in SAX parser in HTML mode, tag and attribute names converted to lowercase,
and content of script elements left unparsed
Bug fix
- Possible memory corruption in regexp under low memory conditions fixed
LME 7.0.1
Bug fixes
- saxnext could hang upon large text element, processing element or comment; fixed
- cell2struct could crash with an empty cell array argument; fixed
- cell2struct with empty cell arrays fixed
- isempty with char/logical/single/int arrays fixed
- in command syntax, escaped backslash before closing single-quote (e.g. disp '\\') wasn't parsed correctly; fixed
LME 7.0
New features
- new functions:
acosd acos in degrees
acotd acot in degrees
acscd acsc in degrees
asecd asec in degrees
asind asin in degrees
atand atan in degrees
atan2d atan2 in degrees
base32decode decode base32-encoded data
base32encode encode data using base32
cosd cos in degrees
cotd cot in degrees
cscd csc in degrees
cummax cumulative maximum
cummin cumulative minimum
hmac HMAC authentication hash
posixtime current Posix time
random random generator for distribution functions
regexp regular expression match
regexpi regular expression match ignoring case
rng state of random number generator
saxcurrentline current line number of SAX parser
saxcurrentpos current position in input stream of SAX parser
saxnew create a new SAX parser
saxnext get next SAX event
saxrelease release a SAX parser
secd sec in degrees
sha2 SHA-256 or SHA-224 digest
sind sin in degrees
superclasses parent classes of an object
tand tan in degrees
utf32decode decode Unicode characters encoded with UTF-32
utf32encode encode a string of Unicode characters using UTF-32
- support for parallel execution (OS-level multithreading), with the following functions:
batch create a job with a single task
cancel cancel a job
createJob create a new job
createTask create a new task
delete delete a job or a task
fetchOutputs fetch output of all tasks in a job
findTask find tasks in a job
parcluster get a cluster
pardefaultcluster get or set default cluster
submit submit a job for execution
wait wait until a job state has changed
- new built-in functions cart2pol, cart2sph, pol2cart,
and sph2cart (were in library stdlib)
- full support for UTF-16 (Unicode code points beyond 16 bits)
- new string escape sequence \Uhhhhhhhh for UTF-32
- Nakagami distribution in pdf, cdf and random
- second output argument for ismember
- optional type argument in rand and randn
- improved default random generator based on KISS
- option to get uint8 or base64 result from functions md5 and sha1
- in fopen, new text mode q and T to force
output EOL to be LF or CRLF irrespectively of the OS
- named argument NPrec in fprintf and sprintf
for default precision
- tic with output argument and toc with input argument
for multiple simultaneous measurements
- tic and toc with optional named argument CPUTime
to choose between wall-clock time (the new default) and CPU time
- text inline data with @/text
Minor changes
- cell arrays accepted by strmatch
- mpower where the first operand is a square matrix and
the second any scalar, not only a real integer
- in sprintf and other function for formatted output, %x
and %o truncated numbers while %d rounded them; now
all integer formats round numbers
- anonymous functions without output argument, such as @(f) format(f)
- simplified syntax for indices in subsref and subsasgn
- indices and values returned by find with option 'last'
not reversed anymore
- median gives NaN for vectors which contain NaN
- in function latex2mathml, new named argument displaymath
- more character macros defined in latex2mathml
- horizontal space macros (\;, \quad etc.) defined in
latex2mathml
- \begin{array}{...}, end{array} and \\
defined in latex2mathml
- \phantom{...} defined in latex2mathml
- named argument fd in fprintf as an alternative to
unnamed argument fd
- documentation for householder and householderapply
- better LME source code parsing allowing function definitions not at the beginning
of a line
Bug fixes
- norm 1 or inf of non-square matrices fixed
- join without input argument fixed
- nested assignment to struct fields could produce garbage; fixed
- arrayfun didn't accept cell arrays; fixed
- bitcmp(scalar,array) fixed
- care sometimes produced nan results with valid inputs; fixed
- base64decode could produce garbage when the base64 sequence
wasn't properly terminated; fixed
- concatenation of struct arrays with different number of fields fixed
- calls to functions in variables without input arguments, such as f()
where f is a variable which contains a function reference or an
anonymous function, fixed
- functions without output arguments in anonymous functions used in larger
expressions fixed
- bitall and bitany fixed
- hypot(0,0) fixed
- implicit argument name in inline only with exactly one string
argument; this permits anonymous functions without argument, such as
a=2; fun=@() a;
- anonymous functions with multiple output arguments fixed
- assignments to nested lists, cell arrays or structures, which gave sometimes
incorrect results or crashes, fixed
- error with a custom error identifier and no error message reused
the previous error message; fixed
- fwrite with an invalid fd failed silently; now it throws an error
- padding of formatted integer numbers fixed
- qr(A,false) memory requirements, previously too high, fixed
- option PreArg fixed in ode45 and ode23
- info('u') with an output argument returned a list with only the first
used library; fixed
Windows
- new function cputime
- function dir fixed
- in function fopen with mode 'r', no more exclusive access
LME 6.0
New features
- new functions:
arrayfun function evaluation for each element of a numerical array
erfcinv inverse complementary error function
erfcx scaled complementary error function
fileparts file path splitting into directory, filename and extension
filesep file path separator
fionread number of bytes which can be read without blocking
flintmax largest of the set of consecutive integers stored as floating point
frewind rewind current read or write position in a file
fsolve solution of set of nonlinear equations
fullfile file path construction
hideimplementation hide the implementation of remaining functions in a library
inferiorto class precedence for method calls with arguments of different classes
inthist histogram of an integer array
iscolumn column vector test
isdefined check if a variable is defined
isequal equality comparison
isfun function test
ismac Check whether computer runs under Mac OS X
ismatrix matrix test
isnull null object test
isrow row vector test
latex2mathml convert LaTeX equation to MathML
lsqcurvefit least-square curve fitting
lsqnonlin nonlinear least-square solver
namedargin named input arguments
null null object
randi uniformly-distributed integer random number
rat rational approximation
roundn rounding to a specified precision
split string splitting
strrep substring replacement
structmerge merge the fields of two structures
superiorto class precedence for method calls with arguments of different classes
unwrap unwrap angle sequence
xmlread read an XML string into a DOM object
zp2ss conversion from transfer function given by zeros and poles to state space
- named arguments with support in user functions, struct,
optimset and friends, direct options in fzero,
fminbnd, fminsearch, fsolve,
ode23, ode45
and friends
- dbtype, disp, dumpvar, help, lookfor,
info and inmem with optional named argument fd
- new built-in functions isprime, linspace, logspace,
and median (were in library stdlib)
- new format rat for rational approximations
- support for new data type null in boolean expressions used by if,
elseif, while, until, in conditional expressions, and
in comparisons with operators == and ~=
- in sprintf and friends, new format %P for SI
prefix, or engineering for exponent outside -24..24
- new class names recognized by isa: 'numeric',
'float', and 'integer'
- interp1 now supports cubic interpolation (method '3'
or 'cubic') or piecewise cubic Hermite interpolating polynomial
('p' or 'pchip')
- ~ can be used as a placeholder for unused output arguments in function calls
or for unused input arguments in function definitions
- isunix and ispc moved from extension to LME, and
ismac added
- cellfun can be used with struct arrays
- catch with variable to get the error description
- inline data with @/base64
- definition of structs and n-by-1 struct arrays with braces and named values
- apply with support for named arguments
- named argument throwAsCaller in error and rethrow
- named argument NPrec in dumpvar
- in dbtype, optional output argument to get function source code in a string
- line breaks are ignored between brackets after a comma, which makes the three dot escape
sequence superfluous there
Minor changes
- display of cell arrays and structures improved
- first argument of optimset, odeset, etc.
can be an empty matrix to stand for the default options
- with keywords, which displays "(keyword)/..."
- info s gives also the size of double (8 bytes on
all current platforms)
- isa(x,'cell') gives true if x is a list
or a cell array
- findstr renamed strfind for the sake of consistency
and compatibility with other applications
- the profiler can be used with functions whose source code isn't available
anymore (e.g. those defined from the command-line interface)
- dumpvar made faster
- for each library, info('l') gets the list of its sublibraries
- info displays or returns the line number of functions and methods
- quad replaced by integral, with named arguments for options
- lower and upper convert letter case according to
the Unicode Character Database
- for constructors, help accepts class as well as
class::class
- redefined range (colon operator) with complex values where the end value isn't
located on the straight line defined by the start and step values
- complex dot
- arguments with default values forbidden in anonymous functions
Bug fixes
- when a variable fun contained a function reference or an anonymous or inline
function, it couldn't be called without input argument with the syntax fun();
fixed
- in rare cases, anonymous functions with variable number of output arguments
could not be compiled correctly and resulted in a syntax error; fixed
- anonymous functions without input argument but with captured variables failed;
fixed
- odeset option EventTime with fixed events could
fail; fixed
- help and lookfor for functions defined in libraries
which weren't loaded sometimes failed; fixed
- var(indices)=[] or var(select)=[] with a single value
in parenthesis didn't always produce the correct result; fixed
- anonymous function @(x) x threw an error; fixed
- _pragma line wasn't taken into account for function definitions; fixed
- fclose all didn't work reliably; fixed
- dare with three output arguments didn't always gave the correct gain; fixed
- format int b/o/x displayed integer types in decimal; fixed
- line number displayed when errors occur in libraries loaded with include
or includeifexists fixed
- cond([]) produced garbage; fixed (gives 0)
- cov with complex data fixed
- indexed element deletion of an undefined variable could lead to data corruption
or crashes; fixed
- in fzero, test to stop infinite range expansion (e.g. for
fzero(@(x)1,2))
Windows
- extension functions with the same name as the dll file might cause a crash; fixed
LME 5.1
New features
- engineering format with format, fprintf,
sprintf and bprintf
- line breaks are ignored between parenthesis and braces, which
makes the three dot escape sequence superfluous in many cases
- anonymous functions can have multiple output arguments (when they
have a top-level function call, the number of output arguments is passed
from the caller)
- value sequences, a generalization of the v{:} syntax
(now any indexing expression(s) can be provided in the braces, and the
resulting item(s) are used as if they were enumerated explicitly and
separated with commas in function input arguments, matrix rows, lists,
or cell array rows)
- interp1 (1D interpolation)
- option Past in odeset to add past
time and state values to ODE (useful to integrate delay differential
equations)
- structure arrays; new functions structarray,
cell2struct, and struct2cell; support in
beginning,
cat,
ctranspose,
disp,
dumpvar,
end,
flipdim,
fliplr,
flipud,
horzcat,
ipermute,
isempty,
length,
ndims,
permute,
repmat,
reshape,
rot90,
size,
squeeze,
transpose,
vertcat,
and variable refererence and assignment
- new built-in function factor (was in library stdlib)
- info s (size of integers and pointers)
Minor changes
- interpn now supports any numerical data type and
converts the result to double
- when structures and lists are displayed, control chacters in strings
are displayed as question marks
- support for fflush with files
- syntax f(...) to evaluate a function reference or an
inline or anonymous function stored in a variable f now
supports multiple output arguments
- classdef is a new reserved keyword
- apply has now a limit of 256 output arguments if their
number is not specified
- horzcat and vertcat accept any number
of input arguments
- in interpn, optional argument for the extrapolated value
- in ode23 and ode45, time step is reduced
before events to improve their precision and reduce the risk of event
repeating
- with an output argument, info, inmem, and
dbstack return now a structure array instead of a list of
structures
Bug fixes
- interpn with decreasing input coordinates could produce
NaN when it shouldn't; fixed
LME 5.0.1
New features
- includeifexists
Minor changes
- fgets and fgetl now return an empty string
upon end-of-file, so that while feof(fd) can be used without
error catching
- interpn check the size of input arguments before
the coordinate monotonicity, to give a more informative error in case
the result of meshgrid is given instead of vectors of
coordinates
- improved help and lookfor: help for functions
defined in libraries provided with Sysquake is available also before
the library has been loaded with use
Bug fixes
- when requesting more data than available, fread gave an
end-of-file error in text mode only; fixed
- in the command-line interface, once an attempt to call a function
in a library was made before the library was imported, a subsequent
use statement didn't define the function in the correct
context; fixed
- ss2tf numerator degree reduction could introduce
dummy zeros which become apparent in some cases, such as
magnitude frequency responses with loglog scale; fixed
LME 5.0
New features
- anonymous functions with captured variables and optional argument to inline
functions for constant parameters
- new _pragma directive, with _pragma line
which changes the current line number (useful in code translated from
another source file)
- new function hypot
- support for styled text with fd=4
- styled text for help
- internal support to mark libraries from some sources as untrusted,
so that their functions run in the sandbox
- info b displays u after each untrusted
function (functions which cannot be executed in the sandbox) and
L=info('b') return the trusted flag for each function
Bug fixes
- in some uncommon cases, index expressions in assignments with multiple
output arguments where the indexed array wasn't a variable weren't interpreted
correctly (e.g. (a,b)=size((1:10)(2:6)) threw an error) ; fixed
- when built-in functions and operators permitted by str2obj
were overridden by an extension, their use became illegal; fixed
LME 4.7.1
Bug fixes
- element deletion along one of multiple dimensions with logical
selection, such as V(:,[false,true,false],:)=[], might
corrupt variables; fixed
- fft whose argument length was a multiple of a
prime number larger or equal to 31 was wrong; fixed
LME 4.7
New features
- in command syntax, arguments can be enclosed in single quotes; then
spaces and escape sequences beginning with a backslash are interpreted
like in normal quoted strings
- new functions inmem, goldenratio
- new functions meshgrid and ndgrid (removed
from library stdlib)
- support for complex matrices in built-in versions of null,
orth and pinv
- support for nonsymmetric and complex matrices in built-in version of
eig
Minor changes
- (U,S,V)=svd(M,false) removes not only m-n last
columns of U if m>n, but also n-m last columns
of V if m<n (to have the same behavior as before,
write svd(M,size(M,1)<size(M,2)))
- clc with an optional file descriptor
- format '+' displays negative numbers as -
and pure imaginary nonzero numbers as I
Bug fixes
- when the last element of varargout was an empty array, it was
ignored; fixed
- sort and unique with complex matrices produced
garbage; fixed
- support for single type in sort
- support for single type in operator :
- assignments with a colon in the indices and incompatible dimensions of
the right-hand side expression, such as v=[]; v(:,1)=[1,2], could
cause a crash; fixed
- built-in version of orth didn't always produce
the correct result; fixed
- in rare cases, built-in schur, and functions which depend on
it (lyap, dlyap, care, and dare),
didn't converge (e.g. schur([0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0])); fixed
- d1~=d2, where d1 and/or d2 was complex,
wasn't always correct; fixed
- on platforms using Unicode, disp didn't display correctly strings
with characters code >127 in list elements or structure fields;
fixed
- assignment v(...)=[], where v was undefined and
indices contained at least one colon, corrupted variable data and could lead to
a crash; fixed
- fprintf and sprintf, with format %d,
%i, %o or %x, displayed finite numbers
instead of inf, -inf or nan; fixed
- literal strings beginning with characters between 0 and 127 followed by
characters between 128 and 255 were corrupted; fixed
LME 4.6
New features
- new functions intmin and intmax
- new function num2cell
- new function orderfields
- unique with two or three output arguments
- new functions for sets: union, intersect,
setdiff, setxor, ismember
- fft and ifft use a fast algorithm for any
nonprime size, not only powers of 2
- fft2 and ifft2 are native now
- new functions fftn and ifftn
- moment, var, std, skewness
and kurtosis are native now
- new function interpn
- new functions tsearchn, tsearch,
griddatan, griddata
- new functions cross (removed from library stdlib)
and dot
- new native functions for quaternions (library quaternion.lml
is now mostly obsolete, though linear algebra on quaternions such as LU
factoring have been left out)
- new function strtok
Minor changes
- sinc(x) is defined as sin(pi*x)/(pi*x)
instead of sin(x)/x
- sum, prod and mean now
return an empty array for empty inputs when the dim parameter
is specified
- scalar operators with a scalar operand are faster
- findstr(s1,s2) with an empty s2 returns an empty array
instead of 1:length(s1)+1
- integer and single numbers can be used as indices in array subscripts
- format %i in fscanf and sscanf accept
binary numbers prefixed by 0b or 0B
- in ode23 and ode45, the time step is now reset
when an event occurs to avoid an unlimited growing when the ode is integrated
without error
- operators / and \ throw error "Non-square matrix"
instead of "Incompatible size" when the left or right operand is a
non-square matrix, respectively
Bug fixes
- permute and ipermute converted single
arguments to double; fixed
- isempty with an argument of type single always gave false; fixed
- fft with real argument along second dimension crashed sometimes;
fixed
- ind2sub with scalar size argument for square matrices didn't work
as documented; fixed
- class gave 'binary' instead of the actual name
of built-in objects such as longint; fixed
- List elements were displayed as bin instead of the actual name
of built-in objects such as longint; fixed
- V(:)=expr didn't always set all elements of V; fixed
- in error messages, the symbol wasn't always correct; fixed
- in ode23 and ode45, events were missed if
the OnEvent function provoked a change of sign of the value returned
by the Events function; fixed
- inline without input argument produced undefined results instead
of a clean error; fixed
- in ode23 and ode45, events are disabled during
the integration step following an event, to prevent shattering
- matrix multiplication by empty matrix and division of empty matrix didn't
always give an empty matrix; fixed
LME 4.5.2
New features
- new function numel (number of elements in an array)
- new syntax f(arguments) for calling the inline function or
function reference f which can be a variable or an expression
- new function sha1 (SHA-1 digest)
- new functions reallog, realpow,
realsqrt
- polyder with multiple arguments for derivative of polynomial
products and ratios
- new functions cast, typecast,
swapbytes
- the prompt of command-line interface is associated with file
descriptor 3 instead of 1 (stdout)
Minor changes
- new error message "Undefined input argument"
- with format long, single numbers are displayed with
7 digits
Bug fixes
- spaces weren't supported between a list of variables in the left-hand side
of an assignment and the closing bracket (such as [a,b ]=size(c)); fixed
- parenthesis/brackets mismatch around a list of variable in the left-hand side
of an assignment was accepted (e.g. (a,b]=size(c)); fixed
- linprog didn't always produced the correct result with
both lower and upper bounds on the same variables; fixed
- md5 didn't accept single characters or bytes; fixed
- v(sel)=[], where v was a column vector and
sel a logical vector, didn't produce a result with the correct
size; fixed
- relational operators weren't defined for type single; fixed
- ode45 and ode23 didn't always updated the
integration step in an optimal way; fixed
Mac OS X
- extensions can have the suffix ".dylib" instead of ".so",
to make development with XCode easier
LME 4.5.1
New features
- graycode and igraycode (conversion to and from
Gray code)
- function echo to log a trace of the execution of functions
- functions sec, csc, cot,
asec, acsc, acot,
sech, csch, coth,
asech, acsch, acoth,
and log2 are now built in, not in library stdlib anymore
LME 4.5
New features
- sandboxtrust (unrestricted execution of code from
a sandbox)
- cell arrays (arrays whose elements have arbitrary types, like
lists but with multiple dimensions); semicolon supported between braces
to create 2-dim cell arrays; new functions cell,
cellfun, and iscell; support in
apply,
beginning,
cat,
ctranspose,
disp,
dumpvar,
end,
flipdim,
fliplr,
flipud,
for,
horzcat,
ipermute,
isempty,
join,
length,
map,
ndims,
permute,
repmat,
reshape,
rot90,
size,
squeeze,
subsasgn,
subsref,
transpose,
vertcat,
and variable refererence and assignment
- lookfor on platforms where help is supported
- new functions factorial, ellipam, ellipf,
ellipe, delaunay, delaunayn,
voronoi, voronoin, isdigit
- cal2julian and julian2cal (date conversion)
- c2dm with 'match' method for zeros and poles matching
- matrixrow and matrixcol (row or column index to
be used in index expressions, like beginning and end)
Minor changes
- execution speed has been improved
- to remove element(s) from a list or a cell array, the syntax
listvar(index)=[] is supported in addition to
listvar(index)={}, for compatibility with Matlab
- user breaks (with Control-C or its platoform-dependent equivalent) is not
caught by catch anymore
- global and persistent variables are now forbidden in code executed
by sandbox (sandboxtrust can be used to circumvent this
restriction)
- the transpose operators (' and .') can be
applied to any kind of arrays, not only 2-dim; dimensions 1 and 2 are permuted
- fminbnd and fminsearch with 2 or 3 output arguments
- support for single-precision input arguments in min, max,
sort, unique, find, and repmat
- support for all kinds and dimensions of numerical, char, and logical arrays in
num2list
- new options 'Priority' and 'Sandbox' in
threadset
- the second output argument of sort for lists (and cell arrays)
is now a row vector instead of a column vector, so that S===L(I)
for (S,I)=sort(L)
- x^2, where x is a real scalar double, is
implemented as x*x for faster execution and exact output
when possible
- option for ascending or descending direction in sort
- support for 2 or 3 input arguments in find to limit the number
of values found
- find preserves the type char or logical in the 3rd output
argument to match the input type
- find generates an error with input arrays with more than 2
dimensions and 2 or 3 output arguments (ind2sub can be used
to get the subscripts for arrays of any dimension)
- care with 5 input arguments
- on platforms which use UTF-8, initial BOM (Byte-Ordering Mark) in libraries
are ignored
- tril, triu, and diag accept 2-d arrays
of any numerical, logical or char class
- beginning can be defined as a variable or a function (then
the built-in definition used in index expressions will be hidden)
- fft has been accelerated for real input
- format now accepts option bank for display
with 2 fixed decimal digits, and format '+' for display
of arrays with + for nonzero elements and spaces for zero elements
- functions fprintf, sprintf and bprintf
support the format %i and the flag #
Bug fixes
- end in an index expression for a single-precision array variable
returned an error; fixed
- size wth an empty array and multiple output arguments gave
1 for trailing (superfluous) dimensions instead of 0; fixed
- v{ix} where v was a structure was accepted; fixed
- threadsleep didn't always suspend threads correctly; fixed
- on some platforms, ss2tf with a single output argument crashed
since LME 4.3; fixed
- bitshift with two input arguments, the first one being an
integer, didn't produce the correct result; fixed
- size(A,dim) where A was empty and dim>2
gave 1 instead of 0; fixed
- funm([],fun), sqrtm([]), and logm([])
gave an error; fixed (give [], and 0 for the optional second output
argument of funm)
- the number of libraries was limited to 16 by context; now it's limited only
by memory
- in assignments to subscripted lists where subscripts weren't in ascending
order, the assigned elements weren't in the correct order (for instance
L([2,1])={20,10} set the 2 leading elements of L
to 20 and 10); fixed
- unique didn't produce a row vector when the input was a row
vector of a non-double type; fixed
- dumping the state of LME cleared unused memory space, which was useless
and forced memory allocation on systems with virtual memory; fixed
- there was no error message for unexpected else; fixed
- functions
and,
balance,
chol,
ctranspose,
eig,
eye,
flipdim,
fliplr,
flipud,
funm,
hess,
householder,
householderapply,
ind2sub,
isscalar,
isvector,
kron,
linprog,
lu,
ndims,
ones,
or,
pinv,
rand,
randn,
schur,
str2fun,
sub2ind,
trace,
transpose,
tril,
triu,
unique,
xor,
and zeros
couldn't be overloaded; fixed
- assignments like a(i,j)=[] threw the error
Deleting elements along multiple dimensions even when i
and j selected 0 element because they were empty or false; fixed
- lu works now with singular and rectangular matrices
- c2dm with first-order hold and transfer function didn't
always produce the correct numerator; fixed
- with command syntax, spaces between the last argument and a semicolon or a
comma caused an empty string to be passed as an additional input argument
(e.g. disp a ; was interpreted as disp('a',''));
fixed
- on platforms which supported it (Mac OS X and other unix), loading user extensions
from several places didn't work correctly; fixed
- assignments like A(sel,...)=B with multiple subscripts, where
sel was a logical vector, didn't always produce the correct result; fixed
- repmat didn't copy elements correctly when the result was a
column vector; fixed
- number beginning with 08 or 09 were decoded as decimal; now they're considered
as illegal octal
- dumpvar with a negative file descriptor threw an out of memory
error; now they throw an bad file descriptor error
- library name displayed in error message of LME:libNotFound
- in SAX parser in HTML mode, tag and attribute names converted to lowercase, and content of script elements left unparsed
Bug fix
- Possible memory corruption in regexp under low memory conditions fixed
LME 7.0.1
Bug fixes
- saxnext could hang upon large text element, processing element or comment; fixed
- cell2struct could crash with an empty cell array argument; fixed
- cell2struct with empty cell arrays fixed
- isempty with char/logical/single/int arrays fixed
- in command syntax, escaped backslash before closing single-quote (e.g. disp '\\') wasn't parsed correctly; fixed
LME 7.0
New features
- new functions:
- support for parallel execution (OS-level multithreading), with the following functions:
- new built-in functions cart2pol, cart2sph, pol2cart, and sph2cart (were in library stdlib)
- full support for UTF-16 (Unicode code points beyond 16 bits)
- new string escape sequence \Uhhhhhhhh for UTF-32
- Nakagami distribution in pdf, cdf and random
- second output argument for ismember
- optional type argument in rand and randn
- improved default random generator based on KISS
- option to get uint8 or base64 result from functions md5 and sha1
- in fopen, new text mode q and T to force output EOL to be LF or CRLF irrespectively of the OS
- named argument NPrec in fprintf and sprintf for default precision
- tic with output argument and toc with input argument for multiple simultaneous measurements
- tic and toc with optional named argument CPUTime to choose between wall-clock time (the new default) and CPU time
- text inline data with @/text
acosd | acos in degrees |
acotd | acot in degrees |
acscd | acsc in degrees |
asecd | asec in degrees |
asind | asin in degrees |
atand | atan in degrees |
atan2d | atan2 in degrees |
base32decode | decode base32-encoded data |
base32encode | encode data using base32 |
cosd | cos in degrees |
cotd | cot in degrees |
cscd | csc in degrees |
cummax | cumulative maximum |
cummin | cumulative minimum |
hmac | HMAC authentication hash |
posixtime | current Posix time |
random | random generator for distribution functions |
regexp | regular expression match |
regexpi | regular expression match ignoring case |
rng | state of random number generator |
saxcurrentline | current line number of SAX parser |
saxcurrentpos | current position in input stream of SAX parser |
saxnew | create a new SAX parser |
saxnext | get next SAX event |
saxrelease | release a SAX parser |
secd | sec in degrees |
sha2 | SHA-256 or SHA-224 digest |
sind | sin in degrees |
superclasses | parent classes of an object |
tand | tan in degrees |
utf32decode | decode Unicode characters encoded with UTF-32 |
utf32encode | encode a string of Unicode characters using UTF-32 |
batch | create a job with a single task |
cancel | cancel a job |
createJob | create a new job |
createTask | create a new task |
delete | delete a job or a task |
fetchOutputs | fetch output of all tasks in a job |
findTask | find tasks in a job |
parcluster | get a cluster |
pardefaultcluster | get or set default cluster |
submit | submit a job for execution |
wait | wait until a job state has changed |
Minor changes
- cell arrays accepted by strmatch
- mpower where the first operand is a square matrix and
the second any scalar, not only a real integer
- in sprintf and other function for formatted output, %x
and %o truncated numbers while %d rounded them; now
all integer formats round numbers
- anonymous functions without output argument, such as @(f) format(f)
- simplified syntax for indices in subsref and subsasgn
- indices and values returned by find with option 'last'
not reversed anymore
- median gives NaN for vectors which contain NaN
- in function latex2mathml, new named argument displaymath
- more character macros defined in latex2mathml
- horizontal space macros (\;, \quad etc.) defined in
latex2mathml
- \begin{array}{...}, end{array} and \\
defined in latex2mathml
- \phantom{...} defined in latex2mathml
- named argument fd in fprintf as an alternative to
unnamed argument fd
- documentation for householder and householderapply
- better LME source code parsing allowing function definitions not at the beginning
of a line
Bug fixes
- norm 1 or inf of non-square matrices fixed
- join without input argument fixed
- nested assignment to struct fields could produce garbage; fixed
- arrayfun didn't accept cell arrays; fixed
- bitcmp(scalar,array) fixed
- care sometimes produced nan results with valid inputs; fixed
- base64decode could produce garbage when the base64 sequence
wasn't properly terminated; fixed
- concatenation of struct arrays with different number of fields fixed
- calls to functions in variables without input arguments, such as f()
where f is a variable which contains a function reference or an
anonymous function, fixed
- functions without output arguments in anonymous functions used in larger
expressions fixed
- bitall and bitany fixed
- hypot(0,0) fixed
- implicit argument name in inline only with exactly one string
argument; this permits anonymous functions without argument, such as
a=2; fun=@() a;
- anonymous functions with multiple output arguments fixed
- assignments to nested lists, cell arrays or structures, which gave sometimes
incorrect results or crashes, fixed
- error with a custom error identifier and no error message reused
the previous error message; fixed
- fwrite with an invalid fd failed silently; now it throws an error
- padding of formatted integer numbers fixed
- qr(A,false) memory requirements, previously too high, fixed
- option PreArg fixed in ode45 and ode23
- info('u') with an output argument returned a list with only the first
used library; fixed
Windows
- new function cputime
- function dir fixed
- in function fopen with mode 'r', no more exclusive access
LME 6.0
New features
- new functions:
arrayfun function evaluation for each element of a numerical array
erfcinv inverse complementary error function
erfcx scaled complementary error function
fileparts file path splitting into directory, filename and extension
filesep file path separator
fionread number of bytes which can be read without blocking
flintmax largest of the set of consecutive integers stored as floating point
frewind rewind current read or write position in a file
fsolve solution of set of nonlinear equations
fullfile file path construction
hideimplementation hide the implementation of remaining functions in a library
inferiorto class precedence for method calls with arguments of different classes
inthist histogram of an integer array
iscolumn column vector test
isdefined check if a variable is defined
isequal equality comparison
isfun function test
ismac Check whether computer runs under Mac OS X
ismatrix matrix test
isnull null object test
isrow row vector test
latex2mathml convert LaTeX equation to MathML
lsqcurvefit least-square curve fitting
lsqnonlin nonlinear least-square solver
namedargin named input arguments
null null object
randi uniformly-distributed integer random number
rat rational approximation
roundn rounding to a specified precision
split string splitting
strrep substring replacement
structmerge merge the fields of two structures
superiorto class precedence for method calls with arguments of different classes
unwrap unwrap angle sequence
xmlread read an XML string into a DOM object
zp2ss conversion from transfer function given by zeros and poles to state space
- named arguments with support in user functions, struct,
optimset and friends, direct options in fzero,
fminbnd, fminsearch, fsolve,
ode23, ode45
and friends
- dbtype, disp, dumpvar, help, lookfor,
info and inmem with optional named argument fd
- new built-in functions isprime, linspace, logspace,
and median (were in library stdlib)
- new format rat for rational approximations
- support for new data type null in boolean expressions used by if,
elseif, while, until, in conditional expressions, and
in comparisons with operators == and ~=
- in sprintf and friends, new format %P for SI
prefix, or engineering for exponent outside -24..24
- new class names recognized by isa: 'numeric',
'float', and 'integer'
- interp1 now supports cubic interpolation (method '3'
or 'cubic') or piecewise cubic Hermite interpolating polynomial
('p' or 'pchip')
- ~ can be used as a placeholder for unused output arguments in function calls
or for unused input arguments in function definitions
- isunix and ispc moved from extension to LME, and
ismac added
- cellfun can be used with struct arrays
- catch with variable to get the error description
- inline data with @/base64
- definition of structs and n-by-1 struct arrays with braces and named values
- apply with support for named arguments
- named argument throwAsCaller in error and rethrow
- named argument NPrec in dumpvar
- in dbtype, optional output argument to get function source code in a string
- line breaks are ignored between brackets after a comma, which makes the three dot escape
sequence superfluous there
Minor changes
- display of cell arrays and structures improved
- first argument of optimset, odeset, etc.
can be an empty matrix to stand for the default options
- with keywords, which displays "(keyword)/..."
- info s gives also the size of double (8 bytes on
all current platforms)
- isa(x,'cell') gives true if x is a list
or a cell array
- findstr renamed strfind for the sake of consistency
and compatibility with other applications
- the profiler can be used with functions whose source code isn't available
anymore (e.g. those defined from the command-line interface)
- dumpvar made faster
- for each library, info('l') gets the list of its sublibraries
- info displays or returns the line number of functions and methods
- quad replaced by integral, with named arguments for options
- lower and upper convert letter case according to
the Unicode Character Database
- for constructors, help accepts class as well as
class::class
- redefined range (colon operator) with complex values where the end value isn't
located on the straight line defined by the start and step values
- complex dot
- arguments with default values forbidden in anonymous functions
Bug fixes
- when a variable fun contained a function reference or an anonymous or inline
function, it couldn't be called without input argument with the syntax fun();
fixed
- in rare cases, anonymous functions with variable number of output arguments
could not be compiled correctly and resulted in a syntax error; fixed
- anonymous functions without input argument but with captured variables failed;
fixed
- odeset option EventTime with fixed events could
fail; fixed
- help and lookfor for functions defined in libraries
which weren't loaded sometimes failed; fixed
- var(indices)=[] or var(select)=[] with a single value
in parenthesis didn't always produce the correct result; fixed
- anonymous function @(x) x threw an error; fixed
- _pragma line wasn't taken into account for function definitions; fixed
- fclose all didn't work reliably; fixed
- dare with three output arguments didn't always gave the correct gain; fixed
- format int b/o/x displayed integer types in decimal; fixed
- line number displayed when errors occur in libraries loaded with include
or includeifexists fixed
- cond([]) produced garbage; fixed (gives 0)
- cov with complex data fixed
- indexed element deletion of an undefined variable could lead to data corruption
or crashes; fixed
- in fzero, test to stop infinite range expansion (e.g. for
fzero(@(x)1,2))
Windows
- extension functions with the same name as the dll file might cause a crash; fixed
LME 5.1
New features
- engineering format with format, fprintf,
sprintf and bprintf
- line breaks are ignored between parenthesis and braces, which
makes the three dot escape sequence superfluous in many cases
- anonymous functions can have multiple output arguments (when they
have a top-level function call, the number of output arguments is passed
from the caller)
- value sequences, a generalization of the v{:} syntax
(now any indexing expression(s) can be provided in the braces, and the
resulting item(s) are used as if they were enumerated explicitly and
separated with commas in function input arguments, matrix rows, lists,
or cell array rows)
- interp1 (1D interpolation)
- option Past in odeset to add past
time and state values to ODE (useful to integrate delay differential
equations)
- structure arrays; new functions structarray,
cell2struct, and struct2cell; support in
beginning,
cat,
ctranspose,
disp,
dumpvar,
end,
flipdim,
fliplr,
flipud,
horzcat,
ipermute,
isempty,
length,
ndims,
permute,
repmat,
reshape,
rot90,
size,
squeeze,
transpose,
vertcat,
and variable refererence and assignment
- new built-in function factor (was in library stdlib)
- info s (size of integers and pointers)
Minor changes
- interpn now supports any numerical data type and
converts the result to double
- when structures and lists are displayed, control chacters in strings
are displayed as question marks
- support for fflush with files
- syntax f(...) to evaluate a function reference or an
inline or anonymous function stored in a variable f now
supports multiple output arguments
- classdef is a new reserved keyword
- apply has now a limit of 256 output arguments if their
number is not specified
- horzcat and vertcat accept any number
of input arguments
- in interpn, optional argument for the extrapolated value
- in ode23 and ode45, time step is reduced
before events to improve their precision and reduce the risk of event
repeating
- with an output argument, info, inmem, and
dbstack return now a structure array instead of a list of
structures
Bug fixes
- interpn with decreasing input coordinates could produce
NaN when it shouldn't; fixed
LME 5.0.1
New features
- includeifexists
Minor changes
- fgets and fgetl now return an empty string
upon end-of-file, so that while feof(fd) can be used without
error catching
- interpn check the size of input arguments before
the coordinate monotonicity, to give a more informative error in case
the result of meshgrid is given instead of vectors of
coordinates
- improved help and lookfor: help for functions
defined in libraries provided with Sysquake is available also before
the library has been loaded with use
Bug fixes
- when requesting more data than available, fread gave an
end-of-file error in text mode only; fixed
- in the command-line interface, once an attempt to call a function
in a library was made before the library was imported, a subsequent
use statement didn't define the function in the correct
context; fixed
- ss2tf numerator degree reduction could introduce
dummy zeros which become apparent in some cases, such as
magnitude frequency responses with loglog scale; fixed
LME 5.0
New features
- anonymous functions with captured variables and optional argument to inline
functions for constant parameters
- new _pragma directive, with _pragma line
which changes the current line number (useful in code translated from
another source file)
- new function hypot
- support for styled text with fd=4
- styled text for help
- internal support to mark libraries from some sources as untrusted,
so that their functions run in the sandbox
- info b displays u after each untrusted
function (functions which cannot be executed in the sandbox) and
L=info('b') return the trusted flag for each function
Bug fixes
- in some uncommon cases, index expressions in assignments with multiple
output arguments where the indexed array wasn't a variable weren't interpreted
correctly (e.g. (a,b)=size((1:10)(2:6)) threw an error) ; fixed
- when built-in functions and operators permitted by str2obj
were overridden by an extension, their use became illegal; fixed
LME 4.7.1
Bug fixes
- element deletion along one of multiple dimensions with logical
selection, such as V(:,[false,true,false],:)=[], might
corrupt variables; fixed
- fft whose argument length was a multiple of a
prime number larger or equal to 31 was wrong; fixed
LME 4.7
New features
- in command syntax, arguments can be enclosed in single quotes; then
spaces and escape sequences beginning with a backslash are interpreted
like in normal quoted strings
- new functions inmem, goldenratio
- new functions meshgrid and ndgrid (removed
from library stdlib)
- support for complex matrices in built-in versions of null,
orth and pinv
- support for nonsymmetric and complex matrices in built-in version of
eig
Minor changes
- (U,S,V)=svd(M,false) removes not only m-n last
columns of U if m>n, but also n-m last columns
of V if m<n (to have the same behavior as before,
write svd(M,size(M,1)<size(M,2)))
- clc with an optional file descriptor
- format '+' displays negative numbers as -
and pure imaginary nonzero numbers as I
Bug fixes
- when the last element of varargout was an empty array, it was
ignored; fixed
- sort and unique with complex matrices produced
garbage; fixed
- support for single type in sort
- support for single type in operator :
- assignments with a colon in the indices and incompatible dimensions of
the right-hand side expression, such as v=[]; v(:,1)=[1,2], could
cause a crash; fixed
- built-in version of orth didn't always produce
the correct result; fixed
- in rare cases, built-in schur, and functions which depend on
it (lyap, dlyap, care, and dare),
didn't converge (e.g. schur([0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0])); fixed
- d1~=d2, where d1 and/or d2 was complex,
wasn't always correct; fixed
- on platforms using Unicode, disp didn't display correctly strings
with characters code >127 in list elements or structure fields;
fixed
- assignment v(...)=[], where v was undefined and
indices contained at least one colon, corrupted variable data and could lead to
a crash; fixed
- fprintf and sprintf, with format %d,
%i, %o or %x, displayed finite numbers
instead of inf, -inf or nan; fixed
- literal strings beginning with characters between 0 and 127 followed by
characters between 128 and 255 were corrupted; fixed
LME 4.6
New features
- new functions intmin and intmax
- new function num2cell
- new function orderfields
- unique with two or three output arguments
- new functions for sets: union, intersect,
setdiff, setxor, ismember
- fft and ifft use a fast algorithm for any
nonprime size, not only powers of 2
- fft2 and ifft2 are native now
- new functions fftn and ifftn
- moment, var, std, skewness
and kurtosis are native now
- new function interpn
- new functions tsearchn, tsearch,
griddatan, griddata
- new functions cross (removed from library stdlib)
and dot
- new native functions for quaternions (library quaternion.lml
is now mostly obsolete, though linear algebra on quaternions such as LU
factoring have been left out)
- new function strtok
Minor changes
- sinc(x) is defined as sin(pi*x)/(pi*x)
instead of sin(x)/x
- sum, prod and mean now
return an empty array for empty inputs when the dim parameter
is specified
- scalar operators with a scalar operand are faster
- findstr(s1,s2) with an empty s2 returns an empty array
instead of 1:length(s1)+1
- integer and single numbers can be used as indices in array subscripts
- format %i in fscanf and sscanf accept
binary numbers prefixed by 0b or 0B
- in ode23 and ode45, the time step is now reset
when an event occurs to avoid an unlimited growing when the ode is integrated
without error
- operators / and \ throw error "Non-square matrix"
instead of "Incompatible size" when the left or right operand is a
non-square matrix, respectively
Bug fixes
- permute and ipermute converted single
arguments to double; fixed
- isempty with an argument of type single always gave false; fixed
- fft with real argument along second dimension crashed sometimes;
fixed
- ind2sub with scalar size argument for square matrices didn't work
as documented; fixed
- class gave 'binary' instead of the actual name
of built-in objects such as longint; fixed
- List elements were displayed as bin instead of the actual name
of built-in objects such as longint; fixed
- V(:)=expr didn't always set all elements of V; fixed
- in error messages, the symbol wasn't always correct; fixed
- in ode23 and ode45, events were missed if
the OnEvent function provoked a change of sign of the value returned
by the Events function; fixed
- inline without input argument produced undefined results instead
of a clean error; fixed
- in ode23 and ode45, events are disabled during
the integration step following an event, to prevent shattering
- matrix multiplication by empty matrix and division of empty matrix didn't
always give an empty matrix; fixed
LME 4.5.2
New features
- new function numel (number of elements in an array)
- new syntax f(arguments) for calling the inline function or
function reference f which can be a variable or an expression
- new function sha1 (SHA-1 digest)
- new functions reallog, realpow,
realsqrt
- polyder with multiple arguments for derivative of polynomial
products and ratios
- new functions cast, typecast,
swapbytes
- the prompt of command-line interface is associated with file
descriptor 3 instead of 1 (stdout)
Minor changes
- new error message "Undefined input argument"
- with format long, single numbers are displayed with
7 digits
Bug fixes
- spaces weren't supported between a list of variables in the left-hand side
of an assignment and the closing bracket (such as [a,b ]=size(c)); fixed
- parenthesis/brackets mismatch around a list of variable in the left-hand side
of an assignment was accepted (e.g. (a,b]=size(c)); fixed
- linprog didn't always produced the correct result with
both lower and upper bounds on the same variables; fixed
- md5 didn't accept single characters or bytes; fixed
- v(sel)=[], where v was a column vector and
sel a logical vector, didn't produce a result with the correct
size; fixed
- relational operators weren't defined for type single; fixed
- ode45 and ode23 didn't always updated the
integration step in an optimal way; fixed
Mac OS X
- extensions can have the suffix ".dylib" instead of ".so",
to make development with XCode easier
LME 4.5.1
New features
- graycode and igraycode (conversion to and from
Gray code)
- function echo to log a trace of the execution of functions
- functions sec, csc, cot,
asec, acsc, acot,
sech, csch, coth,
asech, acsch, acoth,
and log2 are now built in, not in library stdlib anymore
LME 4.5
New features
- sandboxtrust (unrestricted execution of code from
a sandbox)
- cell arrays (arrays whose elements have arbitrary types, like
lists but with multiple dimensions); semicolon supported between braces
to create 2-dim cell arrays; new functions cell,
cellfun, and iscell; support in
apply,
beginning,
cat,
ctranspose,
disp,
dumpvar,
end,
flipdim,
fliplr,
flipud,
for,
horzcat,
ipermute,
isempty,
join,
length,
map,
ndims,
permute,
repmat,
reshape,
rot90,
size,
squeeze,
subsasgn,
subsref,
transpose,
vertcat,
and variable refererence and assignment
- lookfor on platforms where help is supported
- new functions factorial, ellipam, ellipf,
ellipe, delaunay, delaunayn,
voronoi, voronoin, isdigit
- cal2julian and julian2cal (date conversion)
- c2dm with 'match' method for zeros and poles matching
- matrixrow and matrixcol (row or column index to
be used in index expressions, like beginning and end)
Minor changes
- execution speed has been improved
- to remove element(s) from a list or a cell array, the syntax
listvar(index)=[] is supported in addition to
listvar(index)={}, for compatibility with Matlab
- user breaks (with Control-C or its platoform-dependent equivalent) is not
caught by catch anymore
- global and persistent variables are now forbidden in code executed
by sandbox (sandboxtrust can be used to circumvent this
restriction)
- the transpose operators (' and .') can be
applied to any kind of arrays, not only 2-dim; dimensions 1 and 2 are permuted
- fminbnd and fminsearch with 2 or 3 output arguments
- support for single-precision input arguments in min, max,
sort, unique, find, and repmat
- support for all kinds and dimensions of numerical, char, and logical arrays in
num2list
- new options 'Priority' and 'Sandbox' in
threadset
- the second output argument of sort for lists (and cell arrays)
is now a row vector instead of a column vector, so that S===L(I)
for (S,I)=sort(L)
- x^2, where x is a real scalar double, is
implemented as x*x for faster execution and exact output
when possible
- option for ascending or descending direction in sort
- support for 2 or 3 input arguments in find to limit the number
of values found
- find preserves the type char or logical in the 3rd output
argument to match the input type
- find generates an error with input arrays with more than 2
dimensions and 2 or 3 output arguments (ind2sub can be used
to get the subscripts for arrays of any dimension)
- care with 5 input arguments
- on platforms which use UTF-8, initial BOM (Byte-Ordering Mark) in libraries
are ignored
- tril, triu, and diag accept 2-d arrays
of any numerical, logical or char class
- beginning can be defined as a variable or a function (then
the built-in definition used in index expressions will be hidden)
- fft has been accelerated for real input
- format now accepts option bank for display
with 2 fixed decimal digits, and format '+' for display
of arrays with + for nonzero elements and spaces for zero elements
- functions fprintf, sprintf and bprintf
support the format %i and the flag #
Bug fixes
- end in an index expression for a single-precision array variable
returned an error; fixed
- size wth an empty array and multiple output arguments gave
1 for trailing (superfluous) dimensions instead of 0; fixed
- v{ix} where v was a structure was accepted; fixed
- threadsleep didn't always suspend threads correctly; fixed
- on some platforms, ss2tf with a single output argument crashed
since LME 4.3; fixed
- bitshift with two input arguments, the first one being an
integer, didn't produce the correct result; fixed
- size(A,dim) where A was empty and dim>2
gave 1 instead of 0; fixed
- funm([],fun), sqrtm([]), and logm([])
gave an error; fixed (give [], and 0 for the optional second output
argument of funm)
- the number of libraries was limited to 16 by context; now it's limited only
by memory
- in assignments to subscripted lists where subscripts weren't in ascending
order, the assigned elements weren't in the correct order (for instance
L([2,1])={20,10} set the 2 leading elements of L
to 20 and 10); fixed
- unique didn't produce a row vector when the input was a row
vector of a non-double type; fixed
- dumping the state of LME cleared unused memory space, which was useless
and forced memory allocation on systems with virtual memory; fixed
- there was no error message for unexpected else; fixed
- functions
and,
balance,
chol,
ctranspose,
eig,
eye,
flipdim,
fliplr,
flipud,
funm,
hess,
householder,
householderapply,
ind2sub,
isscalar,
isvector,
kron,
linprog,
lu,
ndims,
ones,
or,
pinv,
rand,
randn,
schur,
str2fun,
sub2ind,
trace,
transpose,
tril,
triu,
unique,
xor,
and zeros
couldn't be overloaded; fixed
- assignments like a(i,j)=[] threw the error
Deleting elements along multiple dimensions even when i
and j selected 0 element because they were empty or false; fixed
- lu works now with singular and rectangular matrices
- c2dm with first-order hold and transfer function didn't
always produce the correct numerator; fixed
- with command syntax, spaces between the last argument and a semicolon or a
comma caused an empty string to be passed as an additional input argument
(e.g. disp a ; was interpreted as disp('a',''));
fixed
- on platforms which supported it (Mac OS X and other unix), loading user extensions
from several places didn't work correctly; fixed
- assignments like A(sel,...)=B with multiple subscripts, where
sel was a logical vector, didn't always produce the correct result; fixed
- repmat didn't copy elements correctly when the result was a
column vector; fixed
- number beginning with 08 or 09 were decoded as decimal; now they're considered
as illegal octal
- dumpvar with a negative file descriptor threw an out of memory
error; now they throw an bad file descriptor error
- norm 1 or inf of non-square matrices fixed
- join without input argument fixed
- nested assignment to struct fields could produce garbage; fixed
- arrayfun didn't accept cell arrays; fixed
- bitcmp(scalar,array) fixed
- care sometimes produced nan results with valid inputs; fixed
- base64decode could produce garbage when the base64 sequence wasn't properly terminated; fixed
- concatenation of struct arrays with different number of fields fixed
- calls to functions in variables without input arguments, such as f() where f is a variable which contains a function reference or an anonymous function, fixed
- functions without output arguments in anonymous functions used in larger expressions fixed
- bitall and bitany fixed
- hypot(0,0) fixed
- implicit argument name in inline only with exactly one string argument; this permits anonymous functions without argument, such as a=2; fun=@() a;
- anonymous functions with multiple output arguments fixed
- assignments to nested lists, cell arrays or structures, which gave sometimes incorrect results or crashes, fixed
- error with a custom error identifier and no error message reused the previous error message; fixed
- fwrite with an invalid fd failed silently; now it throws an error
- padding of formatted integer numbers fixed
- qr(A,false) memory requirements, previously too high, fixed
- option PreArg fixed in ode45 and ode23
- info('u') with an output argument returned a list with only the first used library; fixed
Windows
- new function cputime
- function dir fixed
- in function fopen with mode 'r', no more exclusive access
LME 6.0
New features
- new functions:
arrayfun function evaluation for each element of a numerical array erfcinv inverse complementary error function erfcx scaled complementary error function fileparts file path splitting into directory, filename and extension filesep file path separator fionread number of bytes which can be read without blocking flintmax largest of the set of consecutive integers stored as floating point frewind rewind current read or write position in a file fsolve solution of set of nonlinear equations fullfile file path construction hideimplementation hide the implementation of remaining functions in a library inferiorto class precedence for method calls with arguments of different classes inthist histogram of an integer array iscolumn column vector test isdefined check if a variable is defined isequal equality comparison isfun function test ismac Check whether computer runs under Mac OS X ismatrix matrix test isnull null object test isrow row vector test latex2mathml convert LaTeX equation to MathML lsqcurvefit least-square curve fitting lsqnonlin nonlinear least-square solver namedargin named input arguments null null object randi uniformly-distributed integer random number rat rational approximation roundn rounding to a specified precision split string splitting strrep substring replacement structmerge merge the fields of two structures superiorto class precedence for method calls with arguments of different classes unwrap unwrap angle sequence xmlread read an XML string into a DOM object zp2ss conversion from transfer function given by zeros and poles to state space - named arguments with support in user functions, struct, optimset and friends, direct options in fzero, fminbnd, fminsearch, fsolve, ode23, ode45 and friends
- dbtype, disp, dumpvar, help, lookfor, info and inmem with optional named argument fd
- new built-in functions isprime, linspace, logspace, and median (were in library stdlib)
- new format rat for rational approximations
- support for new data type null in boolean expressions used by if, elseif, while, until, in conditional expressions, and in comparisons with operators == and ~=
- in sprintf and friends, new format %P for SI prefix, or engineering for exponent outside -24..24
- new class names recognized by isa: 'numeric', 'float', and 'integer'
- interp1 now supports cubic interpolation (method '3' or 'cubic') or piecewise cubic Hermite interpolating polynomial ('p' or 'pchip')
- ~ can be used as a placeholder for unused output arguments in function calls or for unused input arguments in function definitions
- isunix and ispc moved from extension to LME, and ismac added
- cellfun can be used with struct arrays
- catch with variable to get the error description
- inline data with @/base64
- definition of structs and n-by-1 struct arrays with braces and named values
- apply with support for named arguments
- named argument throwAsCaller in error and rethrow
- named argument NPrec in dumpvar
- in dbtype, optional output argument to get function source code in a string
- line breaks are ignored between brackets after a comma, which makes the three dot escape sequence superfluous there
Minor changes
- display of cell arrays and structures improved
- first argument of optimset, odeset, etc. can be an empty matrix to stand for the default options
- with keywords, which displays "(keyword)/..."
- info s gives also the size of double (8 bytes on all current platforms)
- isa(x,'cell') gives true if x is a list or a cell array
- findstr renamed strfind for the sake of consistency and compatibility with other applications
- the profiler can be used with functions whose source code isn't available anymore (e.g. those defined from the command-line interface)
- dumpvar made faster
- for each library, info('l') gets the list of its sublibraries
- info displays or returns the line number of functions and methods
- quad replaced by integral, with named arguments for options
- lower and upper convert letter case according to the Unicode Character Database
- for constructors, help accepts class as well as class::class
- redefined range (colon operator) with complex values where the end value isn't located on the straight line defined by the start and step values
- complex dot
- arguments with default values forbidden in anonymous functions
Bug fixes
- when a variable fun contained a function reference or an anonymous or inline function, it couldn't be called without input argument with the syntax fun(); fixed
- in rare cases, anonymous functions with variable number of output arguments could not be compiled correctly and resulted in a syntax error; fixed
- anonymous functions without input argument but with captured variables failed; fixed
- odeset option EventTime with fixed events could fail; fixed
- help and lookfor for functions defined in libraries which weren't loaded sometimes failed; fixed
- var(indices)=[] or var(select)=[] with a single value in parenthesis didn't always produce the correct result; fixed
- anonymous function @(x) x threw an error; fixed
- _pragma line wasn't taken into account for function definitions; fixed
- fclose all didn't work reliably; fixed
- dare with three output arguments didn't always gave the correct gain; fixed
- format int b/o/x displayed integer types in decimal; fixed
- line number displayed when errors occur in libraries loaded with include or includeifexists fixed
- cond([]) produced garbage; fixed (gives 0)
- cov with complex data fixed
- indexed element deletion of an undefined variable could lead to data corruption or crashes; fixed
- in fzero, test to stop infinite range expansion (e.g. for fzero(@(x)1,2))
Windows
- extension functions with the same name as the dll file might cause a crash; fixed
LME 5.1
New features
- engineering format with format, fprintf, sprintf and bprintf
- line breaks are ignored between parenthesis and braces, which makes the three dot escape sequence superfluous in many cases
- anonymous functions can have multiple output arguments (when they have a top-level function call, the number of output arguments is passed from the caller)
- value sequences, a generalization of the v{:} syntax (now any indexing expression(s) can be provided in the braces, and the resulting item(s) are used as if they were enumerated explicitly and separated with commas in function input arguments, matrix rows, lists, or cell array rows)
- interp1 (1D interpolation)
- option Past in odeset to add past time and state values to ODE (useful to integrate delay differential equations)
- structure arrays; new functions structarray, cell2struct, and struct2cell; support in beginning, cat, ctranspose, disp, dumpvar, end, flipdim, fliplr, flipud, horzcat, ipermute, isempty, length, ndims, permute, repmat, reshape, rot90, size, squeeze, transpose, vertcat, and variable refererence and assignment
- new built-in function factor (was in library stdlib)
- info s (size of integers and pointers)
Minor changes
- interpn now supports any numerical data type and converts the result to double
- when structures and lists are displayed, control chacters in strings are displayed as question marks
- support for fflush with files
- syntax f(...) to evaluate a function reference or an inline or anonymous function stored in a variable f now supports multiple output arguments
- classdef is a new reserved keyword
- apply has now a limit of 256 output arguments if their number is not specified
- horzcat and vertcat accept any number of input arguments
- in interpn, optional argument for the extrapolated value
- in ode23 and ode45, time step is reduced before events to improve their precision and reduce the risk of event repeating
- with an output argument, info, inmem, and dbstack return now a structure array instead of a list of structures
Bug fixes
- interpn with decreasing input coordinates could produce NaN when it shouldn't; fixed
LME 5.0.1
New features
- includeifexists
Minor changes
- fgets and fgetl now return an empty string upon end-of-file, so that while feof(fd) can be used without error catching
- interpn check the size of input arguments before the coordinate monotonicity, to give a more informative error in case the result of meshgrid is given instead of vectors of coordinates
- improved help and lookfor: help for functions defined in libraries provided with Sysquake is available also before the library has been loaded with use
Bug fixes
- when requesting more data than available, fread gave an end-of-file error in text mode only; fixed
- in the command-line interface, once an attempt to call a function in a library was made before the library was imported, a subsequent use statement didn't define the function in the correct context; fixed
- ss2tf numerator degree reduction could introduce dummy zeros which become apparent in some cases, such as magnitude frequency responses with loglog scale; fixed
LME 5.0
New features
- anonymous functions with captured variables and optional argument to inline functions for constant parameters
- new _pragma directive, with _pragma line which changes the current line number (useful in code translated from another source file)
- new function hypot
- support for styled text with fd=4
- styled text for help
- internal support to mark libraries from some sources as untrusted, so that their functions run in the sandbox
- info b displays u after each untrusted function (functions which cannot be executed in the sandbox) and L=info('b') return the trusted flag for each function
Bug fixes
- in some uncommon cases, index expressions in assignments with multiple output arguments where the indexed array wasn't a variable weren't interpreted correctly (e.g. (a,b)=size((1:10)(2:6)) threw an error) ; fixed
- when built-in functions and operators permitted by str2obj were overridden by an extension, their use became illegal; fixed
LME 4.7.1
Bug fixes
- element deletion along one of multiple dimensions with logical selection, such as V(:,[false,true,false],:)=[], might corrupt variables; fixed
- fft whose argument length was a multiple of a prime number larger or equal to 31 was wrong; fixed
LME 4.7
New features
- in command syntax, arguments can be enclosed in single quotes; then spaces and escape sequences beginning with a backslash are interpreted like in normal quoted strings
- new functions inmem, goldenratio
- new functions meshgrid and ndgrid (removed from library stdlib)
- support for complex matrices in built-in versions of null, orth and pinv
- support for nonsymmetric and complex matrices in built-in version of eig
Minor changes
- (U,S,V)=svd(M,false) removes not only m-n last columns of U if m>n, but also n-m last columns of V if m<n (to have the same behavior as before, write svd(M,size(M,1)<size(M,2)))
- clc with an optional file descriptor
- format '+' displays negative numbers as - and pure imaginary nonzero numbers as I
Bug fixes
- when the last element of varargout was an empty array, it was ignored; fixed
- sort and unique with complex matrices produced garbage; fixed
- support for single type in sort
- support for single type in operator :
- assignments with a colon in the indices and incompatible dimensions of the right-hand side expression, such as v=[]; v(:,1)=[1,2], could cause a crash; fixed
- built-in version of orth didn't always produce the correct result; fixed
- in rare cases, built-in schur, and functions which depend on it (lyap, dlyap, care, and dare), didn't converge (e.g. schur([0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0])); fixed
- d1~=d2, where d1 and/or d2 was complex, wasn't always correct; fixed
- on platforms using Unicode, disp didn't display correctly strings with characters code >127 in list elements or structure fields; fixed
- assignment v(...)=[], where v was undefined and indices contained at least one colon, corrupted variable data and could lead to a crash; fixed
- fprintf and sprintf, with format %d, %i, %o or %x, displayed finite numbers instead of inf, -inf or nan; fixed
- literal strings beginning with characters between 0 and 127 followed by characters between 128 and 255 were corrupted; fixed
LME 4.6
New features
- new functions intmin and intmax
- new function num2cell
- new function orderfields
- unique with two or three output arguments
- new functions for sets: union, intersect, setdiff, setxor, ismember
- fft and ifft use a fast algorithm for any nonprime size, not only powers of 2
- fft2 and ifft2 are native now
- new functions fftn and ifftn
- moment, var, std, skewness and kurtosis are native now
- new function interpn
- new functions tsearchn, tsearch, griddatan, griddata
- new functions cross (removed from library stdlib) and dot
- new native functions for quaternions (library quaternion.lml is now mostly obsolete, though linear algebra on quaternions such as LU factoring have been left out)
- new function strtok
Minor changes
- sinc(x) is defined as sin(pi*x)/(pi*x) instead of sin(x)/x
- sum, prod and mean now return an empty array for empty inputs when the dim parameter is specified
- scalar operators with a scalar operand are faster
- findstr(s1,s2) with an empty s2 returns an empty array instead of 1:length(s1)+1
- integer and single numbers can be used as indices in array subscripts
- format %i in fscanf and sscanf accept binary numbers prefixed by 0b or 0B
- in ode23 and ode45, the time step is now reset when an event occurs to avoid an unlimited growing when the ode is integrated without error
- operators / and \ throw error "Non-square matrix" instead of "Incompatible size" when the left or right operand is a non-square matrix, respectively
Bug fixes
- permute and ipermute converted single arguments to double; fixed
- isempty with an argument of type single always gave false; fixed
- fft with real argument along second dimension crashed sometimes; fixed
- ind2sub with scalar size argument for square matrices didn't work as documented; fixed
- class gave 'binary' instead of the actual name of built-in objects such as longint; fixed
- List elements were displayed as bin instead of the actual name of built-in objects such as longint; fixed
- V(:)=expr didn't always set all elements of V; fixed
- in error messages, the symbol wasn't always correct; fixed
- in ode23 and ode45, events were missed if the OnEvent function provoked a change of sign of the value returned by the Events function; fixed
- inline without input argument produced undefined results instead of a clean error; fixed
- in ode23 and ode45, events are disabled during the integration step following an event, to prevent shattering
- matrix multiplication by empty matrix and division of empty matrix didn't always give an empty matrix; fixed
LME 4.5.2
New features
- new function numel (number of elements in an array)
- new syntax f(arguments) for calling the inline function or function reference f which can be a variable or an expression
- new function sha1 (SHA-1 digest)
- new functions reallog, realpow, realsqrt
- polyder with multiple arguments for derivative of polynomial products and ratios
- new functions cast, typecast, swapbytes
- the prompt of command-line interface is associated with file descriptor 3 instead of 1 (stdout)
Minor changes
- new error message "Undefined input argument"
- with format long, single numbers are displayed with 7 digits
Bug fixes
- spaces weren't supported between a list of variables in the left-hand side of an assignment and the closing bracket (such as [a,b ]=size(c)); fixed
- parenthesis/brackets mismatch around a list of variable in the left-hand side of an assignment was accepted (e.g. (a,b]=size(c)); fixed
- linprog didn't always produced the correct result with both lower and upper bounds on the same variables; fixed
- md5 didn't accept single characters or bytes; fixed
- v(sel)=[], where v was a column vector and sel a logical vector, didn't produce a result with the correct size; fixed
- relational operators weren't defined for type single; fixed
- ode45 and ode23 didn't always updated the integration step in an optimal way; fixed
Mac OS X
- extensions can have the suffix ".dylib" instead of ".so", to make development with XCode easier
LME 4.5.1
New features
- graycode and igraycode (conversion to and from Gray code)
- function echo to log a trace of the execution of functions
- functions sec, csc, cot, asec, acsc, acot, sech, csch, coth, asech, acsch, acoth, and log2 are now built in, not in library stdlib anymore
LME 4.5
New features
- sandboxtrust (unrestricted execution of code from a sandbox)
- cell arrays (arrays whose elements have arbitrary types, like lists but with multiple dimensions); semicolon supported between braces to create 2-dim cell arrays; new functions cell, cellfun, and iscell; support in apply, beginning, cat, ctranspose, disp, dumpvar, end, flipdim, fliplr, flipud, for, horzcat, ipermute, isempty, join, length, map, ndims, permute, repmat, reshape, rot90, size, squeeze, subsasgn, subsref, transpose, vertcat, and variable refererence and assignment
- lookfor on platforms where help is supported
- new functions factorial, ellipam, ellipf, ellipe, delaunay, delaunayn, voronoi, voronoin, isdigit
- cal2julian and julian2cal (date conversion)
- c2dm with 'match' method for zeros and poles matching
- matrixrow and matrixcol (row or column index to be used in index expressions, like beginning and end)
Minor changes
- execution speed has been improved
- to remove element(s) from a list or a cell array, the syntax listvar(index)=[] is supported in addition to listvar(index)={}, for compatibility with Matlab
- user breaks (with Control-C or its platoform-dependent equivalent) is not caught by catch anymore
- global and persistent variables are now forbidden in code executed by sandbox (sandboxtrust can be used to circumvent this restriction)
- the transpose operators (' and .') can be applied to any kind of arrays, not only 2-dim; dimensions 1 and 2 are permuted
- fminbnd and fminsearch with 2 or 3 output arguments
- support for single-precision input arguments in min, max, sort, unique, find, and repmat
- support for all kinds and dimensions of numerical, char, and logical arrays in num2list
- new options 'Priority' and 'Sandbox' in threadset
- the second output argument of sort for lists (and cell arrays) is now a row vector instead of a column vector, so that S===L(I) for (S,I)=sort(L)
- x^2, where x is a real scalar double, is implemented as x*x for faster execution and exact output when possible
- option for ascending or descending direction in sort
- support for 2 or 3 input arguments in find to limit the number of values found
- find preserves the type char or logical in the 3rd output argument to match the input type
- find generates an error with input arrays with more than 2 dimensions and 2 or 3 output arguments (ind2sub can be used to get the subscripts for arrays of any dimension)
- care with 5 input arguments
- on platforms which use UTF-8, initial BOM (Byte-Ordering Mark) in libraries are ignored
- tril, triu, and diag accept 2-d arrays of any numerical, logical or char class
- beginning can be defined as a variable or a function (then the built-in definition used in index expressions will be hidden)
- fft has been accelerated for real input
- format now accepts option bank for display with 2 fixed decimal digits, and format '+' for display of arrays with + for nonzero elements and spaces for zero elements
- functions fprintf, sprintf and bprintf support the format %i and the flag #
Bug fixes
- end in an index expression for a single-precision array variable returned an error; fixed
- size wth an empty array and multiple output arguments gave 1 for trailing (superfluous) dimensions instead of 0; fixed
- v{ix} where v was a structure was accepted; fixed
- threadsleep didn't always suspend threads correctly; fixed
- on some platforms, ss2tf with a single output argument crashed since LME 4.3; fixed
- bitshift with two input arguments, the first one being an integer, didn't produce the correct result; fixed
- size(A,dim) where A was empty and dim>2 gave 1 instead of 0; fixed
- funm([],fun), sqrtm([]), and logm([]) gave an error; fixed (give [], and 0 for the optional second output argument of funm)
- the number of libraries was limited to 16 by context; now it's limited only by memory
- in assignments to subscripted lists where subscripts weren't in ascending order, the assigned elements weren't in the correct order (for instance L([2,1])={20,10} set the 2 leading elements of L to 20 and 10); fixed
- unique didn't produce a row vector when the input was a row vector of a non-double type; fixed
- dumping the state of LME cleared unused memory space, which was useless and forced memory allocation on systems with virtual memory; fixed
- there was no error message for unexpected else; fixed
- functions and, balance, chol, ctranspose, eig, eye, flipdim, fliplr, flipud, funm, hess, householder, householderapply, ind2sub, isscalar, isvector, kron, linprog, lu, ndims, ones, or, pinv, rand, randn, schur, str2fun, sub2ind, trace, transpose, tril, triu, unique, xor, and zeros couldn't be overloaded; fixed
- assignments like a(i,j)=[] threw the error Deleting elements along multiple dimensions even when i and j selected 0 element because they were empty or false; fixed
- lu works now with singular and rectangular matrices
- c2dm with first-order hold and transfer function didn't always produce the correct numerator; fixed
- with command syntax, spaces between the last argument and a semicolon or a comma caused an empty string to be passed as an additional input argument (e.g. disp a ; was interpreted as disp('a','')); fixed
- on platforms which supported it (Mac OS X and other unix), loading user extensions from several places didn't work correctly; fixed
- assignments like A(sel,...)=B with multiple subscripts, where sel was a logical vector, didn't always produce the correct result; fixed
- repmat didn't copy elements correctly when the result was a column vector; fixed
- number beginning with 08 or 09 were decoded as decimal; now they're considered as illegal octal
- dumpvar with a negative file descriptor threw an out of memory error; now they throw an bad file descriptor error