Major Bug Fixes

This document describes major bug fixes for the following:

Communications Blockset

Click on a problem area listed below to read how it has been fixed.

Fading channels
List of demos for which code can now be generated using Real Time Workshop
Passband FSK and CPM modulators and demodulators are more accurate
Reed-Solomon blocks now encode and decode correctly

Fading channels

The accuracy of Doppler spread of the Rayleigh and Rician Fading Channel Blocks has been improved. The blocks now give better results for high sampling rates and small Doppler frequencies, as specified in communication standards such as WCDMA.

List of demos for which code can now be generated using Real Time Workshop

The following demos now generate code using Real Time Workshop:

Passband FSK and CPM modulators and demodulators are more accurate

The passband FSK and CPM modulators have been modified to generate more accurate waveforms by performing FIR interpolation when upsampling. The FIR filters significantly reduce the levels of any spectral copies revealed by upsampling. They also introduce delay into the modulators.

Reed-Solomon blocks now encode and decode correctly

The Reed-Solomon blocks now encode and decode signals correctly.

Communications Toolbox

Click on a problem area listed below to read how it has been fixed.

Reed-Solomon decoder corrects up to t errors
Reed-Solomon encoder and decoder use more conventional format for data

Reed-Solomon decoder corrects up to t errors

The new function RSDEC accurately decodes Reed-Solomon codes containing up to t errors in each codeword. This new function replaces the earlier functions RSDECO and RSDECODE.

Reed-Solomon encoder and decoder use more conventional format for data

The new functions RSENC and RSDEC operate on the new Galois data type, which represents symbols using a decimal format. The formats used in the earlier functions, RSENCO, RSENCODE, RSDECO, and RSDECODE, are no longer supported. See "Updating Existing Reed-Solomon M-Code" in the Release Notes to learn how to convert your existing code data to the format used in the new coding functions.

Also, the new functions enable you to choose whether parity bits appear at the beginning or end of each codeword.

Embedded Target for TI C6000 DSP

Cannot generate code for multirate models where the fastest rate is faster than the codec frame rate

If a model's fastest block execution rate is faster than the execution rate of the codec blocks (the codec sample rate times the frame size), then incorrect code will be generated. The generated code will run at the codec rate. There is no error checking to detect this condition. If the codec block is the fastest executing block in the model, then the generated code will be correct.

Dials & Gauges Blockset

A source block in a different window is updated during the simulation

If you put a source block, such as a button or slider, in a different window and change the block's value using the mouse during the simulation, then the model now responds to your change.

Filter Design Toolbox

Click on a problem area listed below to read how it has been fixed.

firlpnorm help text was incorrect.
Need to use full property name/property value pair in quantizers
QFILT's sos method no longer embeds filter gain in each section.
QFILT's sos method no longer normalizes the filter after converting it to SOS

firlpnorm help text was incorrect.

For Release 13, the online help text for filter design function firlpnorm is now correct.

Need to use full property name/property value pair in quantizers

There is a change in behavior of the Quantizer object method set -- you can no longer enter a property value without an associated property name when you use set.

For example, let
q = quantizer;

In Version 2.1 or earlier of the toolbox
set(q,'wrap',[20 18])

was equivalent to
set(q,'OverflowMode','wrap','Format',[20 18])

With the new restriction requiring both the property name and value
set(q,'wrap',[20 18])

causes an error in Version 2.2 of the Filter Design Toolbox.

To maintain consistency with MATLAB objects, and other toolbox objects, the behavior of set needed to change.

Note that the constructor still can be used without property name- property value pairs:
q = quantizer('wrap',[20 18])

is equivalent to
q = quantizer('OverflowMode','wrap','Format',[20 18])

QFILT's sos method no longer embeds filter gain in each section.

The QFILT sos method no longer embeds the filter gain in each section. It now puts the filter gain into the ScaleValue property of the QFILT.

QFILT's sos method no longer normalizes the filter after converting it to SOS

The QFILT sos method no longer normalizes the filter coefficients after converting it to second-order sections, therefore care should be taken to avoid overflows by adjust the coefficient format of the filter.

Fuzzy Logic Toolbox

Click on a problem area listed below to read how it has been fixed.

ADDVAR systematically initialized the new variable with 3 membership functions, thus breaking the command line API
Simulink blocks for TRIMF and TRAPMF now correctly handle vertical slopes

ADDVAR systematically initialized the new variable with 3 membership functions, thus breaking the command line API

In Release 12, ADDVAR systematically initialized the new variable with 3 membership functions, thus breaking the command line API, where it is common first to add the variable and then define the membership functions. Release 13 added logic to allow GUIs to create 3 default membership functions without interfering with command line calls.

Simulink blocks for TRIMF and TRAPMF now correctly handle vertical slopes

The cases a-b or b=c in trimmf (a-b and c=d in trapmf) caused Divide by Zero and improper results in Simulink. These blocks have been reimplemented using the IF block to always produce answers consistent with the M file implementation

Image Processing Toolbox

Click on a problem area listed below to read how it has been fixed.

cpselect would ask to save points when it wasn't necessary
fspecial didn't accept a parameter value of 0 for 'laplacian' and 'unsharp' options
gray2ind returned a logical output if the input was logical
imadjust could error if passed degenerate inputs
imerode could get the first 32 rows wrong when performing binary erosion
imhist could cause a segmentation violation on IRIX if input contained NaNs
imnoise could return a column vector when using the Poisson option
pixval could give a confusing error message for figures with normalized units
Figures created by imshow sometimes not visible
Fixed a bug with dicomread
Fixed failure with reading signed data from DICOM files.
Fixed RLE decoder for DICOM files
Improved performance of dicomread and dicominfo
legend box was unresizable in cpselect
Modified the implementation of the Canny algorithm in the edge function.
Stray points could appear in cpselect in point-prediction mode

cpselect would ask to save points when it wasn't necessary

When you closed the contol-point selection tool (cpselect, it would ask if you wanted to save control points, even if you had already done so. This has been fixed.

fspecial didn't accept a parameter value of 0 for 'laplacian' and 'unsharp' options

The fspecial function now accepts a parameter value of 0 for the 'laplacian' and 'unsharp' options.

gray2ind returned a logical output if the input was logical

If the input image to gray2ind was logical, then the output was also logical. The gray2ind function now returns the correct output in such situations.

imadjust could error if passed degenerate inputs

A call to imadjust with identical low and high limits, such as
imadjust(A,[b b],[]),

would cause imadjust to error out. The problem was fixed by providing default limits when the input limits are degenerate.

imerode could get the first 32 rows wrong when performing binary erosion

When performing binary erosion with a decomposed structuring element, such as strel(ones(5,5)), the first 32 rows of the output image could be wrong. This has been fixed.

imhist could cause a segmentation violation on IRIX if input contained NaNs

The function imhist no longer causes a segmentation violation on IRIX if input contained NaNs.

imnoise could return a column vector when using the Poisson option

The function imnoise now returns a correctly- sized output instead of a column vector when using the Poisson option.

pixval could give a confusing error message for figures with normalized units

Turning on pixval for a figure in normalized units could produce a confusing error message. Pixval now issues a more informative error message if the figure is not in pixel units.

Figures created by imshow sometimes not visible

If invalid input was passed to imshow, it would sometimes error out after creating an invisible figure object. Subsequent calls to imshow would appear to not do anything, because the images were being sent to the invisible figure. The problem was fixed by adding additional input checking to imshow.

Fixed a bug with dicomread

The dicomread function no longer fails when reading from a file with private data using "explicit VR" syntax.

Fixed failure with reading signed data from DICOM files.

The dicomread function used no longer fails when reading signed data from pixels which were not "normal" lengths.

Fixed RLE decoder for DICOM files

The RLE decoder used by dicomread used to only work for 8-bit grayscale images (and only for certain ones at that). The decoder now correctly handles all bit depths and image types.

Improved performance of dicomread and dicominfo

dicomread and dicominfo parse files quicker than in the past, especially for files with a lot of metadata.

legend box was unresizable in cpselect

The legend box for the control-point selection tool (cpselect) was unresizable, which sometimes caused the title bar to be unreadable. This has been fixed.

Modified the implementation of the Canny algorithm in the edge function.

In the Canny algorithm in the edge function, Gaussian smoothing should be run perpendicular to the direction of differentiation. This has been implemented.

Stray points could appear in cpselect in point-prediction mode

When using the control-point selection tool (cpselect) in point-prediction mode, sometimes a stray control point would appear that could not be deleted. This has been fixed.

Mapping Toolbox

Click on a problem area listed below to read how it has been fixed.

Computed distances no longer have spurious imaginary part
Fixed coordinate limitations in map legends for regular matrix maps
Fixed incorrect UTM coordinates in the southern hemisphere
Fixed problem reading ETOPO5 Fata files at full resolution

Computed distances no longer have spurious imaginary part

Version 1.43 eliminates the round-off problem that caused the return value of the distance function to include a small, nonzero imaginary part for certain inputs.

Fixed coordinate limitations in map legends for regular matrix maps

Version 1.3 fixes setpostn to handle longitude limits that straddle the prime meridian.

Fixed incorrect UTM coordinates in the southern hemisphere

A typographical error in defaultm in the false northing for Universal Transverse Mercator (UTM) has been corrected. That error had caused incorrect UTM/geographic conversions for points in the southern hemisphere.

Fixed problem reading ETOPO5 Fata files at full resolution

Padding added as needed in etopo5 when reading different numbers of elements from the northern and southern hemisphere files.

MATLAB

Click on a problem area listed below to read how it has been fixed.

'cubic' method in griddata no longer produces segmentation fault.
filter function has better support for multidimensional data
log10(10^i) now returns i, exactly
lsqr now converges for rectangular systems.
sqrtm now returns correct results for singular Hermitian matrix.
Array Editor supports more than 10,000 elements
Better handling of negative order for diff function
Import Wizard opens large files more quickly
Improved Workspace browser performance with many variables
Modal dialog behavior improvements
Serial port fixes
Workspace browser allows renaming variables

'cubic' method in griddata no longer produces segmentation fault.

Previously, the 'cubic' method of the griddata function would occasionally encounter a segmentation fault. This no longer happens.

filter function has better support for multidimensional data

For multidimensional inputs, filter sometimes produced incorrect error messages or the wrong results. This no longer happens.

log10(10^i) now returns i, exactly

Previously, log10 was computed directly as log(x) / log(10), where log is the natural logarithm. The error in this was particularly visible in computations of the form log10(10^i), for example:

>> log10(1e6)
ans =
     5.999999999999999e+00

Now, log10 does some additional scaling to compute log10(10^i) to the nearest bit.

lsqr now converges for rectangular systems.

Previously, lsqr only converged for square, consistent systems A*x=b and returned a solution x where norm(b-A*x) was small.

Now, lsqr also converges for rectangular systems and returns a solution x where norm(b-A*x) is not necessarily small, but is minimized, and in fact norm(A'*(b-A*x)) is small.

sqrtm now returns correct results for singular Hermitian matrix.

A matrix square root always exists for Hermitian matrices. Previously, sqrtm(X) sometimes returned a matrix of all NaNs for matrices X that were both Hermitian and singular. Now sqrtm(X) returns the correct results for these matrices. sqrtm is now also faster for Hermitian matrices.

Array Editor supports more than 10,000 elements

The Array Editor can now show arrays with more than 10,000 elements. It does not support arrays with more than 65,536 (2^16) elements.

Better handling of negative order for diff function

Previously, MATLAB encountered a segmentation fault when computing diff(sparse([1;1]),-1). Now, an error message is displayed if the order is not a real positive integer.

Import Wizard opens large files more quickly

In previous releases, the Import Wizard was sometimes slow when opening large files, but the problem has been fixed in this version.

Improved Workspace browser performance with many variables

There is no longer a performance problem with more than 1000 variables open in the Workspace browser.

Modal dialog behavior improvements

Modal dialogs on Windows platforms have been improved in terms of common appearance and stability. In Release 12, MATLAB would sometimes lock up due to modal dialogs. In Release 13, this is fixed.

Serial port fixes

Workspace browser allows renaming variables

You can now rename variables from within the Workspace Browser. Right-click a variable name, select Rename from the context menu, and edit the name.

Model-Based Calibration Toolbox

Click on a problem area listed below to read how it has been fixed.

3-D and 4-D design views
Breakpoint filling using "ShareCurvThenAve" algorithm
Converting variables to aliases
Cross Section tool now displays correct model error
Differences in the history of 1-D tables
Fitting and pruning RBF models
Importing data from Excel into a Dataset
Local sweep notes kept during data augmentation
Optimal designs no longer allow incorrect number of stratified levels
Outlier sweeps appearing in the global outlier list
Previewing Large Latin Hypercube designs now faster
Stratified Latin Hypercube designs
Viewing imported data in Datasets
You can now delete designs without crashing the Model Browser

3-D and 4-D design views

The 3-D and 4-D design views will now correctly display all of the points in a design. Previously, for some factor ranges points at the edges of the graph, limits were not displayed.

Breakpoint filling using "ShareCurvThenAve" algorithm

Breakpoint filling using "ShareCurvThenAve" now works correctly in all cases and is significantly faster than the previous version.

Converting variables to aliases

You can now convert all Variable Dictionary items into an alias of another Variable Dictionary item. Previously, this would cause an error in some circumstances where the items were being used elsewhere in the Cage project.

Cross Section tool now displays correct model error

The Cross Section view of the Model Selection window now displays the correct model error while the input factor lines are being dragged. Previously, the error shown while dragging the line was different to that shown when the mouse button was released.

Differences in the history of 1-D tables

1-D tables in Cage now correctly show the difference between two versions in the history.

Fitting and pruning RBF models

Re-fitting an RBF model after pruning now uses the correct value for log10 (GCV).

Importing data from Excel into a Dataset

You can now import large amounts of data from Excel into a Dataset. Previously, attempting to do this caused an error to occur.

Local sweep notes kept during data augmentation

When you add new data to a testplan that already has models, any sweep notes which have been made are now saved when the models are re-fitted.

Optimal designs no longer allow incorrect number of stratified levels

Optimal designs with stratified candidate sets will now correctly fail if there are not enough stratified levels to support the model. Previously, small numerical errors allowed the optimisation to proceed, but poor conditioning meant that the optimal value oscillated up and down.

Outlier sweeps appearing in the global outlier list

Previously, if a local sweep was removed from fitting at the local level, the global response features only showed the removed sweep in their list of removed points if one or more outliers was selected and removed at the global level. All removed points are now shown at the global response feature level all of the time.

Previewing Large Latin Hypercube designs now faster

You can now create large Latin Hypercube designs from the Classical Design Browser without MATLAB appearing to hang. Previously a full set of search iterations was erroneously done before the expected waitbar appeared and the search commenced.

Stratified Latin Hypercube designs

Stratified Latin Hypercube designs now choose their stratified levels so they split the stratified dimension into exactly equal sections. Previously, the levels were "snapped" to the nearest non-stratified level, which depends on the total number of points in the design. This meant that some levels were shifted down slightly and others up.

Viewing imported data in Datasets

You can now view Datasets that consist entirely of imported data. Previously, viewing these datasets caused Cage to crash.

You can now delete designs without crashing the Model Browser

You can now delete designs from anywhere in the Design Editor tree without causing errors. Previously, if your best design was at the end of the design tree and you deleted a design, you received an error when you closed the Design Editor.

Optimization Toolbox

Click on a problem area listed below to read how it has been fixed.

Ill-posed or ill-conditioned problems in fmincon
Use playshow command to run slideshow style demos

Ill-posed or ill-conditioned problems in fmincon

The function fmincon would in some small number of cases hang when the problem was ill-posed or ill-conditioned. In these cases, fmincon no longer hangs.

Use playshow command to run slideshow style demos

Starting in Release 13, to run slideshow style demos from the command line, you must use the playshow command. For example,

playshow circustent

You can continue to run other styles of demos from the command line by typing just the demo name. Optimization Toolbox demos that are affected: circustent, molecule, optdeblur.

Real-Time Workshop

Click on a problem area listed below to read how it has been fixed.

Added 'Alias' property to Simulink.RTWInfo Class
Comments not shown for reduced blocks When "Show eliminated statements" is off
Correct docs for LibBlockInputSignalConnected and LibBlockOutputSignalConnected
PreLook-Up Index Search block fixed to correctly handle discontiguous vector inputs
Pulse Generator code generation problems fixed
The BlockInstanceData function has been deprecated
Simulink Debugger does not recognize CurrentBlock parameter

Added 'Alias' property to Simulink.RTWInfo Class

The Simulink.RTWInfo class now has an additional property, Alias. The Alias property defines an identifier to be used in the generated code for a parameter, signal or block state. This allows you to override the name of the signal, parameter, or state. If an alias is used, Real-Time Workshop checks that the alias is unique, instead of checking the data name.

Comments not shown for reduced blocks When "Show eliminated statements" is off

The "Show eliminated statements" option (in the Real-Time Workshop General code generation options) is now off by default. As long as it remains off, the Real-Time Workshop no longer generates comments referring to blocks that have been removed from the model via block reduction optimization.

Correct docs for LibBlockInputSignalConnected and LibBlockOutputSignalConnected

LibBlockInputSignalConnected returns 1 if the specified input port is connected to a block other than the Ground block and 0 otherwise.

LibBlockOutputSignalConnected returns 1 if the specified output port is connected to a block other than the Terminator block and 0 otherwise.

PreLook-Up Index Search block fixed to correctly handle discontiguous vector inputs

The PreLook-Up Index Search block now generates correct code for the case of nonscalar vector inputs that are part of different actual signals, such as when 6 signals are combined using a Mux block.

Pulse Generator code generation problems fixed

Several problems with code generation for the pulse generator block have been fixed:

  1. If the block type is PulseGenerator instead of DiscretePulseGenerator, code can now be generated.

  2. The scalar expansion for the delay variable is now correct.

  3. The start function for the Time-based mode in a variable step solver now can generate code.

    Note: Problems 1 and 2 also affected the Simulink Accelerator.

The BlockInstanceData function has been deprecated

S-function TLC files should no longer use the BlockInstanceData method. All data used by a block should be declared using data type work vectors (DWork).

Signal Processing Toolbox

Click on a problem area listed below to read how it has been fixed.

cremez Example Fixed
Pole/Zero plot root multiplicity
Scaling of magnitude response in magnitude and phase plot
SPTool Filter Viewer Print Preview

cremez Example Fixed

The second example on the cremez reference page has been updated and now works correctly.

Pole/Zero plot root multiplicity

The pole/zero plot in FDATool and FVTool now can display multiple roots at a single plot point.

Scaling of magnitude response in magnitude and phase plot

The scaling of the magnitude response portion of the Magnitude and Phase Analysis plot in both FDATool and FVTool was incorrect for some filters. It now is scaled correctly.

SPTool Filter Viewer Print Preview

Print Preview, when no markers are displayed in the SPTool Filter Viewer, now works correctly.

Simulink

Click on a problem area listed below to read how it has been fixed.

Block parameter defaults now stored in mdl file
Bus Selector adapts to bus structure changes
Can't create Simulink data object classes in the MATLAB work directory
Dot Product block now works in loops
Error when selecting Tools->Coverage Settings when all Simulink licenses are checked out
Fixed a bug which caused Simulink to hang for large times
Fixed incorrect pulse generator error
Improved detection of evenly spaced breakpoints in PreLook-Up Index Search and Look-Up Table n-D blocks
Keyboard panning capabilities added to Simulink diagram editor
MATLAB and Simulink lockup after ESC during drag operation
PreLook-Up Index Search, Look-Up Table n-D (Flat interpolation) blocks now return top of table
Scope Block will not crash when "Save To Workspace" variable name is longer than 31 characters.
Shift+drag disconnects block inside a locked reference block
Simulink Accelerator now functions without an RTW license
Segmentation violation when adding or deleting Simulink blocks with Model Browser open on UNIX
Drag-selecting blocks freezes UNIX
Grouping blocks causes divide-by-zero error
Self-modifying masked library blocks have missing connections
Changing Configurable Subsystem selection can crash MATLAB
Breaking disabled library links from the command line
Simulink Debugger does not recognize CurrentBlock parameter
Propagating library changes creates recursive links

Block parameter defaults now stored in mdl file

The mdl file now has a new section, "BlockParameterDefaults." The default values for the parameters used by the block types present in the model are written into this section. Then, an individual block instance's parameter values are written into the mdl file only if they differ from the default. This technique reduces the size of the mdl file, as well as reducing the file load time. A block diagram parameter, SaveDefaultBlockParams, exists to control whether or not the parameter defaults are saved to the file. By default it is set to true.

Bus Selector adapts to bus structure changes

In previous releases, adding signals to a bus or otherwise changing its structure required that you update any Bus Selector blocks that select signals from the bus. In the current release, you need update the Bus Selector only if it selects signals that no longer exist or no longer have unique names.

Can't create Simulink data object classes in the MATLAB work directory

Previous releases of Simulink prevented you from creating Simulink data object classes in the MATLAB directory or any of its subdirectories. The current release allows you to create classes in the work subdirectory of the MATLAB root directory.

Dot Product block now works in loops

In Release 12.1, a Dot Product block in a loop cannot determine its port dimension and hence causes a simulation error. Now the block assigns a default dimension setting to the port, thereby avoiding the simulation error.

Error when selecting Tools->Coverage Settings when all Simulink licenses are checked out

The "Undefined variable names" error is no longer displayed when selecting Menu->Tools->Coverage Settings without an available Simulink license.

Fixed a bug which caused Simulink to hang for large times

For multirate models that are simulated to very large times, Simulink would eventually miss a sample hit for one of the rates. This would cause Simulink to hang. This has now been fixed and Simulink no longer hangs.

Fixed incorrect pulse generator error

The pulse generator block would somtimes report that the computed sample time is not an integer multiple fo the fixed step size when, in fact, it was. This has been fixed.

Improved detection of evenly spaced breakpoints in PreLook-Up Index Search and Look-Up Table n-D blocks

The option for using a fast index search algorithm that relies on evenly spaced breakpoints for look-up tables was enhanced to better detect evenly spaced breakpoints within a tolerance of value*eps. Note that breakpoint expressions such as [-5:0.1:5] may still need to be written as 0.1*[-50:50] to generate a dataset that is evenly spaced within the required tolerance. The linear and binary search options will of course still work on any strictly increasing breakpoint data set (not just evenly spaced ones).

Keyboard panning capabilities added to Simulink diagram editor

You can now scroll Simulink diagrams around using the keyboard by pressing the Ctrl key in conjunction with any of the arrow keys. This is sometimes more convenient than manipulating the scroll bars with the mouse.

MATLAB and Simulink lockup after ESC during drag operation

In previous releases, pressing the Esc key while dragging a block or performing other types of drag operations caused MATLAB and Simulink to become unresponsive. In the current release, pressing the Esc key will abort the drag operation.

PreLook-Up Index Search, Look-Up Table n-D (Flat interpolation) blocks now return top of table

The behavior of the PreLook-Up Index Search block (index only mode) and the Look-Up Table n-D block (in flat interpolation mode) were changed to return the last index in the table when the input value is at or above the last breakpoint value as this is more useful than the previous behavior. For the Look-Up Table n-D block, this is done on an individual dimension basis. In previous versions (Simulink 4.0 and 4.1), the index search would deliberately return the next to last index and the n-D flat look-up would deliberately return the next to last table value even when the input value was at or above the last breakpoint.

Scope Block will not crash when "Save To Workspace" variable name is longer than 31 characters.

Scope blocks with "Save To Workspace" variable names longer than the maximum MATLAB variable length (currently 31 characters) used to crash Simulink in unpredictable ways during simulation. Such variable names will no longer crash Simulink, though they will generate an error.

Shift+drag disconnects block inside a locked reference block

In previous releases, holding down the Shift key and dragging a block inside a reference block (i.e., a library link) disconnects the block's signal lines and brings up a dialog box asking if you would like to disable the link. In the current release, Simulink does not disconnect the lines.


(Simulink Accelerator) Correct minor step guard for enable, if, case

Under certain circumstances with the Simulink Accelerator, the generated code of models containing enable, if and case subsystems could be activiated during minor time steps, causing incorrect outputs. This has been fixed.

Simulink Accelerator now functions without an RTW license

The Simulink Accelerator no longer requires a Real-Time Workshop license to function properly.

Segmentation violation when adding or deleting Simulink blocks with Model Browser open on UNIX

On Unix platforms, a segmentation violation would occur if you added or deleted blocks in a Simulink model while the Model Browser was open. This has been fixed.

Drag-selecting blocks freezes UNIX

Releasing the left mouse button over the Simulink menu bar when drag-selecting multiple blocks caused UNIX to lock up. This has been fixed.

Grouping blocks causes divide-by-zero error

Grouping blocks in Simulink into a subsystem caused a divide-by-zero error if the blocks were too close to the top or left edge of the model. This has been fixed.

Self-modifying masked library blocks have missing connections

Library subsystems containing self-modifying masked blocks no longer have to be marked as MaskSelfModifiable for the linked blocks to be connected properly.

Changing Configurable Subsystem selection can crash MATLAB

The Configurable Subsystem has been made faster and more robust when changing block choices. This is especially noticeable for large subsystems.

Breaking disabled library links from the command line

Breaking disabled library links from the command-line now works.

Simulink Debugger does not recognize CurrentBlock parameter

In the previous release, you could not use get_param or set_param to set or get the value of the CurrentBlock parameter in the command-line debugger until you selected a block. The Simulink command-line debugger now allows you to set and get the value of this parameter without having to first select a block with the mouse.

Propagating library changes creates recursive links

If changes are made to a linked block, propagating such changes to the library via the Link options menu now does not result in recursive links.

Spline Toolbox

Click on a problem area listed below to read how it has been fixed.

pprfn fails when no breaks need be inserted
Data edits in splinetool now tracked properly
Errors in spcol for various unusual inputs corrected
Use playshow command to run slideshow style demos

pprfn fails when no breaks need be inserted

pprfn now properly returns the function unchanged in case all the additional breaks are already breaks for the function.

Data edits in splinetool now tracked properly

Each spline fit now remembers the data to which it was fit. If, at some point, you make a previously constructed spline fit the current one, then also the data currently showing get changed to the data to which that spline was fit.

Errors in spcol for various unusual inputs corrected

spcol now provides a correct sparse version of its output even for knot sequences with unusual end knot multiplicities, and when some sites lie to the right of the last knot while some site appears more than once. None of these cases is likely to occur in ordinary spline work since, in all of them, the resulting matrix is not invertible.

Use playshow command to run slideshow style demos

Starting in R13, to run slideshow style demos from the command line, you must use the playshow command. For example,

playshow splexmpl

You can continue to run other styles of demos from the command line by typing just the demo name. Splines Toolbox demos that are affected: splexmpl, histodem, ppalldem, spapidem, getcurv2, spalldem.

Stateflow

Click on a problem area listed below to read how it has been fixed.

Any chart or library chart can now export a function
Code generation for RTW target failed for array data initialized from workspace
Generated code for RTW target does not include custom code.
Hierarchical printing for closed charts caused transition and printout errors.
Impossible to stop infinite flow graph loops in Stateflow
Matrix support for the ml namespace operator and the ml function
Mismatched dimensions in assignments not flagged by parser
Model file names in Stateflow limited to 25 characters
Problem with some pointer and address operator uses in generated code.
Search and Replace error with LaTex strings in annotations
Smart transitions in resized grouped state made a graphical mess
ss
Stateflow now handles up to 254 events per chart
Stateflow now supports fixed-point data
Stateflow now supports matrix data that has scopy Input to Simulink and Output to Simulink.
Transition actions were handled incorrectly for a confluence of transitions
Transition highlighted for the rest of simulation

Any chart or library chart can now export a function

Any chart or library chart can now export a function and any other chart or library chart can call it as long as they are both (caller and callee) accessible through the same main model.

Code generation for RTW target failed for array data initialized from workspace

Code generation for an RTW target failed when the chart included output array data initialized from workspace. (Occurred in versions 3.0 through 4.1.1.)

Generated code for RTW target does not include custom code.

Code generated for an RTW target did not include custom code entered by user. (Occurred in versions 4.1 through 4.1.1.)

Hierarchical printing for closed charts caused transition and printout errors.

Hierachical Printing invoked from a Simulink window when the charts were closed caused transition label positions to change and also caused incorrect printouts. (Occured in version 4.0 through 4.1)

Impossible to stop infinite flow graph loops in Stateflow

In models containing an infinite flow graph loop, simulation could not be stopped using a keyboard ctrl-C, or with the Stop Simulation button in the diagram editor and debug window.

Matrix support for the ml namespace operator and the ml function

Matrix support is enabled for the ml namespace operator and the ml function. Expressions involving the ml namespace operator and the ml function call can take 2-dimensional matrix arguments and return 2-dimensional matrices. They are no longer limited to scalar arguments and return values as in previous versions.

Mismatched dimensions in assignments not flagged by parser

The Stateflow parser did not flag mismatched dimensions or array lengths in vectorized assignments such as x = y, where x and y are vector data with different dimensions and/or lengths. This caused crashes during runtime. (Occured in versions 2.0 through 4.1.)

Model file names in Stateflow limited to 25 characters

Models containing Stateflow charts must have file names limited to 25 characters or less. When you try to save a model with more characters, an error results. If you try to load a model with more than 25 characters in its file name, a warning results telling you to reduce the number of characters in the file name to 25 or less.

Problem with some pointer and address operator uses in generated code.

Certain uses of the pointer and address operators ('->' and '&', respectively) in state and transition actions caused uncompilable generated code (occurred in versions 3.0 through 4.1.1).

Search and Replace error with LaTex strings in annotations

The Stateflow Search and Replace Tool errored out in the presence of LaTeX format strings in Stateflow annotations. (Occured in Versions 4.0.2 through 4.1.)

Smart transitions in resized grouped state made a graphical mess

When a grouped state containing "smart" transitions was resized, the transitions in the newly resized state made a graphical mess.(Occured in Version 4.1)

ss

Stateflow now handles up to 254 events per chart

Stateflow now handles up to 254 events per chart. The previous maximum was 127. Stateflow now throws an error if your chart has more than 254 events.

Stateflow now supports fixed-point data

Stateflow now supports fixed-point data. Fixed-point numbers are commonly used to perform limited range and precision floating point operations with integers in embedded environments. See "Fixed-Point Data Types" in Chapter 7, Action Language, of the the Stateflow User's Guide.

Stateflow now supports matrix data that has scopy Input to Simulink and Output to Simulink.

Stateflow now supports vector and matrix array data with the scope "Input to Simulink" and "Output to Simulink." Previously, Stateflow supported only scalar data for these scopes.

Transition actions were handled incorrectly for a confluence of transitions

Transition actions were handled incorrectly for a confluence of transitions into a single destination such as the junction shown below:

Transition highlighted for the rest of simulation

During simulation an early return from an event broadcast from a transition left that transition highlighted for the rest of the simulation. (Occured in versions 3.0 through 4.1.)

Stateflow Coder

Click on a problem area listed below to read how it has been fixed.

Bug in the optimization of state exit functions caused incorrect code to be generated
Charts containing unstructured flow graphs caused compilation errors during RTW build
Missing return statements in some graphical functions
Optimization of simple "if" conditional statements caused incorrect code
Passing chart input data to graphical functions caused code generation failure for RTW targets.
Using min/max macros in Stateflow charts caused compilation failures during RTW build

Bug in the optimization of state exit functions caused incorrect code to be generated

Optimization of state exit functions caused incorrect code to be generated. (Occurred in version 4.2)

Charts containing unstructured flow graphs caused compilation errors during RTW build

Charts containing unstructured flow graphs caused compilation errors during RTW build.

Missing return statements in some graphical functions

For some graphical functions with a return value and unusual flow graph topology, a final return statement was missing from the generated code.

Optimization of simple "if" conditional statements caused incorrect code

Optimization of simple "if" conditional statements caused incorrect code to be generated. (Occurred in version 4.2)

Passing chart input data to graphical functions caused code generation failure for RTW targets.

Passing chart input data to graphical functions caused code generation failure for Real-Time Workshop targets.

Using min/max macros in Stateflow charts caused compilation failures during RTW build

Using min/max macros in Stateflow charts caused compilation failures during RTW builds of ert/grt embedded targets. This has been fixed.

Statistics Toolbox

Click on a problem area listed below to read how it has been fixed.

cluster function usable with larger problems
dendrogram graph corrected for plotting a subset of nodes
pdist more efficient for large data sets
ranksum uses a continuity correction
Corrected calculation of covratio statistic by regstats function
Linear and quadratic discriminant analysis added to classify
Negative binomial (nbin*) functions no longer require an integer R value
Use playshow command to run glmdemo

cluster function usable with larger problems

The cluster function is no longer recursive, so it no longer encounters a recursion limit when it is applied to a large data set. Consequently, cluster now succeeds with larger data sets than in the past.

dendrogram graph corrected for plotting a subset of nodes

In a plot of a subset of the nodes in a cluster tree, the dendrogram function now adjusts the Y axis limits to scale the tree properly, and it shows the correct distance values. Before Version 4.0 (Release 13), it was subtracting an offset to position the minimum distance value near zero, and therefore it was not possible to read the correct distance values from the Y axis of the resulting plot.

pdist more efficient for large data sets

pdist now makes more efficient use of memory, so it can be used on larger problems than in previous releases.

ranksum uses a continuity correction

The ranksum function uses an exact calculation for small sample sizes, and a normal approximation for larger sample sizes. Starting in Version 4.0 (Release 13), the normal approximation now includes a continuity correction.

Corrected calculation of covratio statistic by regstats function

In Version 3.0 and earlier of the Statistics Toolbox, the covratio statistic was calculated incorrectly. The calculation was fixed in Version 3.1. This statistic measures the ratio of the generalized variance of the coefficient estimates without a given row, to the generalized variance using all the data.

Linear and quadratic discriminant analysis added to classify

The algorithm that was previously implemented in classify used the Mahalanobis distance between sample points and training groups, with stratified estimates of covariance. The new implementation adds the standard algorithms for linear (default) and quadratic discriminant analysis. Use the type 'mahalanobis' in the new version to duplicate the behavior of the previous version.

Negative binomial (nbin*) functions no longer require an integer R value

Consistent with a more general interpretation of the negative binomial, these functions now accept any positive value, including nonintegers, for the size parameter R: nbincdf, nbininv, nbinpdf, nbinrnd,nbinstats.

Use playshow command to run glmdemo

Starting in Release 13, to run slideshow style demos such as
glmdemo

from the command line, you must use the playshow command. For example,
playshow glmdemo

You can continue to run other styles of demos from the command line by typing just the demo name. glmdemo is the only slideshow style demo in the Statistics Toolbox Version 4.0.

Wavelet Toolbox

Click on a problem area listed below to read how it has been fixed.

Different results for std2 function in Wavelets and Image Processing
Error in cmorwavf function
Errors using wpdec function with a user-defined function
Loading wptree object from a MAT-file
Loading complex data into Continuous Wavlet 1-D

Different results for std2 function in Wavelets and Image Processing

You no longer get slightly different results from the std (compute standard deviation of matrix elements) function in the Image Processing Toolbox and the Wavelet Toolbox.

Error in cmorwavf function

The two last input arguments are no longer reversed in the cmorwavf function.

Errors using wpdec function with a user-defined function

Using wpdec with a user-defined function no longer produces errors that were caused by wpdec's use of wentropy.

Loading wptree object from a MAT-file

wptree has been updated so that a wptree object can be loaded from a MAT-file.

Loading complex data into Continuous Wavlet 1-D

Complex data cannot be loaded into the Continuous Wavlet 1-D. An error message stating that the data must be real is displayed.

xPC Target

Polling mode with embedded option

Previously, when you created a Stand-alone application, polling mode did not start. Now, it does.