MATLAB Release Notes |
Major Bug Fixes
MATLAB 6.5.1 includes these major bug fixes:
Note In addition to the bug fixes described on this page, there are several bug fixes relating to MATLAB mathematics that are documented in a separate HTML bug-fix report. |
Seeking Within a File
In Release 13, when you opened a file in write-only ('wb'
) mode, you could not seed to a position in the file without first seeking to the beginning of the file. The fseek
function has been fixed to allow seeking from any position of the file.
Reshaping to More Than Two Dimensions
In Release 13, under certain circumstances, reshaping an array to have more than two dimensions produced a two dimensional result. This has been corrected.
mkdir No Longer Fails On Windows NT
In Release 13, if on Windows NT you called the dir
, exist
, isdir
, or what
function on a nonexistent directory name on a network drive, it caused a windows handle to remain open to that directory name until you exit the MATLAB session. This condition caused any attempts to use mkdir
on that directory to fail. This problem also affected the mkdir
command when run from a DOS command prompt. This condition would persist until you exited MATLAB, thus freeing the handle.
This bug is fixed in this release.
Using sqrt with Complex Input
In Release 13, under certain circumstances, the sqrt
function incorrectly produced a real result when called with a complex input. This bug has been corrected.
Multiplying Matrices with Non-Double Entries
In Release 13, MATLAB gave an incorrect answer or crashed for expressions of the following forms:
when either A
or B
was a numeric, non-double value (single
, int32
, etc.). This has been fixed for this release.
Sorting a Sparse Row Vector or Matrix
In Release 13, a segmentation violation occurred when you used the command sort(S,2)
to sort a sparse row vector or to sort a sparse matrix along its rows. This bug is fixed in this release.
diff Produces Correct Results with Logical Inputs
In Release 13, the diff
function could produce an incorrect result when you passed a logical array to it. This bug is fixed in this release.
Opening Modal Dialog with Third-Party GUI Open
In Release 13, MATLAB would occasionally hang if the user tried to open a modal dialog box when a third-party GUI was open. This no longer happens.
Serial Port Object with Latest Windows Service Pack
Under certain hardware configurations, or when using the latest Service Pack from Microsoft Windows, the serial port object in both MATLAB and the Instrument Control Toolbox could cause MATLAB to crash or hang. This problem is resolved in this release.
Several additional problems affecting the serial port have also been identified and fixed:
COM8
were not recognized by MATLAB. As of this release, MATLAB supports up to 256 ports.
OpenGL Problem Using Notebook
This version of MATLAB uses an improved algorithm for selecting pixel formats when using the UseGenericOpenGL
feature on Windows. This improvement fixes rendering problems seen with Notebook.
For information on graphics rendering, see Tech Note 1201.
Lcc C Compiler Fixed to Handle Large C Files
Lcc version 2.4.1 MathWorks patch 1.29 corrects a bug encountered when compiling very large C files. Although this bug has only been observed when using large Stateflow® models, we suggest that you upgrade to the new version to avoid potential problems when compiling MEX-files.
If you choose not to upgrade your version of Lcc, you can select a different C compiler using mex -setup
from the MATLAB command line.
Bug Fixes in MATLAB Interface to COM
This release includes the following bug fixes in the COM interface:
Blank Spreadsheet Cells Returned as NaNs
When reading from a Microsoft Excel spreadsheet in a COM environment where MATLAB is the COM client and Excel the server, MATLAB now returns any empty cells in the spreadsheet as NaN
s. In MATLAB 6.5 (Release 13), this same operation had returned a matrix of empty ([]
) values.
For example, if the range A1
to D3
in a currently active workbook sheet contains no data, MATLAB 6.5.1 returns the following matrix of NaN
values:
eActiveSheet = get(e, 'ActiveSheet'); eActiveSheetRange = get(eActiveSheet, 'Range', 'A1', 'D3'); eActiveSheetRange.Value ans = [NaN] [NaN] [NaN] [NaN] [NaN] [NaN] [NaN] [NaN] [NaN] [NaN] [NaN] [NaN]
Importing Excel Worksheets Containing Currency Format
In MATLAB 6.5, using a COM interface to Excel to import worksheet data containing currency format failed with either a field access error or segmentation violation. This bug is fixed in this release.
Getting the Forms Font Interface
In MATLAB 6.5, attempts to get the Font
interface from a forms.textbox.1
control, as done in the second line below, caused MATLAB to crash.
This bug is fixed in this release.
Programmatic Identifiers Containing Space Characters
Using the actxcontrol
function with a ProgID
argument containing one or more spaces failed in MATLAB 6.5. This bug is fixed in this release. For example, the following command now works:
Naming of Interfaces Returned by invoke or get
In MATLAB 6.5, interfaces returned by the invoke
and get
functions were given a name composed of the programmatic identifier (ProgID
) for the component and the name of the method or property being invoked. In cases where a method or property implemented multiple interface types, this naming algorithm resulted in interface names that were not always unique.
For example, when invoking a method that returns an Excel and a Word interface, you could obtain any number of either type of interface (Excel or Word), but you could not obtain interfaces of both types. In such cases, you might be unable to access methods and properties of this interface.
In this release, interface names constructed by MATLAB are composed of the name of the type library and the class name, thus ending this potential naming conflict. If you invoke the method described in the last paragraph, MATLAB now returns the following for any Excel interfaces that you request:
And MATLAB returns a different handle for Word interfaces:
Optional Input and Output Arguments Supported
MATLAB now supports optional input and output arguments passed in COM method calls. These arguments are declared as [in, optional]
and [out, optional]
respectively.
Memory Leak with MATLAB as COM Client
In Version 6.5, a memory leak developed under certain circumstances when MATLAB was configured as a COM client. This was caused by internal MATLAB code failing to release memory allocated by the method StringFromCLSID
. This bug is fixed in this release.
Support for Multiple Type Libraries
MATLAB now supports multiple type libraries. If a COM object has many interfaces that are described in multiple type libraries, MATLAB can now retrieve the information correctly.
MATLAB Now Supports Skipping an Optional Argument
When calling ActiveX automation server methods, you can skip any optional arguments in the argument list by specifying that argument value as an empty matrix ([]
). For example, the Add
method shown below accepts as many as four optional arguments:
To call this method, specifying values for After
and Count
, but no values for Before
or Type
, use this syntax.
Use []
for any arguments you skip, and that also precede the ones you do specify in the argument list. In this case, the Before
argument is not specified but two subsequent arguments are.
Saving COM Objects Created with actxserver
Release 13 does not support saving COM objects that have been created with the actxserver
function. You can use save
only on control objects (created with actxcontrol
). Attempting to use save
on a COM server object causes MATLAB to hang temporarily, and eventually crash.
This bug has been fixed in this release so that if you now attempt to save a COM server object, MATLAB saves the object and any base properties of the object, but does not attempt to save any interfaces that might exist.
The same behavior applies to the pack
function on COM objects.
This example creates a server running Microsoft Excel, adds a new property to the object, and saves it to the file excelserver.mat
. It then reloads the server from the MAT-file.
e = actxserver ('Excel.Application'); addproperty(e, 'NewProperty'); set(e, 'NewProperty', 500); get(e, 'NewProperty') ans = 500 save('excelserver.mat') clear get(e, 'NewProperty') ??? Undefined function or variable 'e'. load('excelserver.mat') get(e, 'NewProperty') ans = 500
Creating Certain Servers That Do Not Have Type Libraries
In the Release 12.1 and Release 13 releases, the actxserver
function generated an error when attempting to create a COM object for certain servers. One error commonly returned by actxserver in these releases was
h = actxserver('msdev.application') ??? Error using ==> actxserver Cannot find type library. COM object creation failed.
This has now been fixed in this release.
Creating Microsoft Controls
Earlier versions of MATLAB would crash if you attempted to create certain Microsoft COM controls with the actxcontrol
function. Examples of these controls, by programmatic identifier (ProgID
), are shown below. MATLAB now successfully creates the controls.
mschart20lib.mschart msdatalistlib.datacombo msdatagridlib.datagrid MSComCtl2.DTPicker.2 msdatalistlib.datalist MSHierarchicalFlexGridLib.MSHFlexGrid.6
ActiveX Controls Created with Visual Basic 6.0
In Release 13, if you attach a callback routine to an event, and this event is eventually fired by a control created in Visual Basic 6.0, an error dialog box appears with the message "Run-Time error."
This has been fixed in this release.
Type Mismatch Error Fixed
Some COM objects may define methods that pass scalar inputs by reference. This might appear in a type library signature as shown here for the x
input:
Note that when input or output is not specifically stated, as is the case here for x
, MATLAB defaults to input ([in]
). So the line shown above is interpreted by MATLAB as
In MATLAB, the [in]
and by-reference (*
) specifications are considered incompatible for scalar arguments. In Release 13, MATLAB ignores the by-reference specifier for scalar inputs and passes such arguments by value instead. Thus, any modified value for such an argument is not received by the calling function. You may also see a type mismatch
error displayed, even when trying to access valid control methods.
MATLAB 6.5.1 fixes this bug by treating the [in]
specifier for scalar references as if it were [in,out]
.
In this example using MATLAB syntax, the GetWinVersionX
function passes six double
arguments by reference, yet none are returned in MATLAB 6.5:
In MATLAB 6.5.1, all scalar reference arguments specified (or defaulting to) [in]
are treated as [in,out]
, and all references cause a value to be returned:
GetWinVersionX = [int32, double, double, double, double, double, double] GetWinVersionX( handle, double, double, double, double, double, double)
Note that this bug affects only scalar arguments. The VT_DISPATCH
and VT_VOID
types are not affected.
Bug Fixes in Creating GUIs
This release includes the following bug fixes related to creating, converting, and exporting GUIs:
Converting a MATLAB 5.3 GUI to MATLAB 6.5
Converting a MATLAB 5.3 (R11) GUI to MATLAB 6.5 sometimes resulted in the error:
Using GUIDE on Existing GUIs with Empty Tag Property
In MATLAB Version 6.5, editing a GUI that contained a uicontrol whose Tag property was set to []
(empty) sometimes generated the following error message:
Exporting GUIs from GUIDE to a Single M-file
In MATLAB Version 6.5, some GUIs exported from GUIDE failed to open. In other cases, attempting to export a GUI resulted in one of the following errors:
??? Error using ==> guidefunc Error using ==> == Matrix dimensions must agree. ??? Error using ==> guidefunc Error using ==> == Function '==' is not defined for values of class 'struct'.
These problems have been fixed.
MATLAB Hangs when Using Property Inspector from GUIDE
Using the Property Inspector from GUIDE sometimes caused MATLAB Version 6.5 to hang. This problem has been fixed.
Recursion Limit Error when Running Existing GUIs from GUIDE
In MATLAB Version 6.5, running some existing GUIs from GUIDE generated the following error message:
??? Error using ==> guidefunc Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer. Could not create figure: 127
Reading and Writing L*a*b* Color Data | Upgrading from an Earlier Release |
© 1994-2005 The MathWorks, Inc.