Skip to Main Content Skip to Search
File Exchange
MATLAB Newsgroup
Link Exchange
  Blogs  
 Contest 
MathWorks.com

Loren on the Art of MATLAB

November 14th, 2007

What Version is Being Used?

Sometimes it's important to have code work in multiple releases of MATLAB, while still taking advantage of new features when they exist. In recent articles, I've talked about the MException class and using try/catch. Here's another tool to add to your collection: verLessThan.

Contents

ver and version

The functions version and ver allow you to query for the MATLAB version and versions of additional products, as well as extra environmental information.

v = version
v =
7.5.0.342 (R2007b)
vmat = ver('matlab')
vmat = 
       Name: 'MATLAB'
    Version: '7.5'
    Release: '(R2007b)'
       Date: '02-Aug-2007'
vsim = ver('simulink')
vsim = 
       Name: 'Simulink'
    Version: '7.0'
    Release: '(R2007b)'
       Date: '02-Aug-2007'

There is additional information supplied when I ask for the information to be displayed instead of assigning it to a variable.

ver simulink
-----------------------------------------------------------------------------
MATLAB Version 7.5.0.342 (R2007b)
MATLAB License Number: DEMO
Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 2)
Java VM Version: Java 1.6.0 with Sun Microsystems Inc.
       Java HotSpot(TM) Client VM mixed mode
-----------------------------------------------------------------------------
Simulink                                           Version 7.0        (R2007b)

Trademarks
------------------
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, and xPC
TargetBox are registered trademarks and SimBiology, SimEvents, and
SimHydraulics are trademarks of The MathWorks, Inc. Other product or
brand names are trademarks or registered trademarks of their respective
holders. 

verLessThan for MATLAB versions 6.0-7.3

varLessThan started shipping with the MATLAB R2007a release. To bridge the gap back to the year 2000 and MATLAB version 6.0, look at this solution from the tech support web site. There's a link near bottom to get access to verLessThan M-file backward compatible to MATLAB 6.

References

Here are the references to the blog articles I mentioned earlier.

Other Compatibility Tools

I know there are other compatibility tools on MATLAB Central as well, such as this one from Tim Davis.

Thoughts?

We make a concerted effort to not introduce incompatibilities without good reason. We also try to supply tools to help you manage and use the new tools alongside older ones. If you have any thoughts or suggestions on the topic of managing compatibility, please share them here.


Get the MATLAB code

Published with MATLAB® 7.5

4 Responses to “What Version is Being Used?”

  1. Matt Whitaker replied on :

    Hi Loren,
    It should be noted that ver is not available in compiled code prior to R2007b. See tech solution:
    http://www.mathworks.com/support/bugreports/details.html?rp=225580

  2. Loren replied on :

    Yes Matt, that’s true. There was a bug using ver with the MATLAB Compiler and it has been fixed.

    –Loren

  3. Tim Davis replied on :

    It would be very helpful if there were a MATLAB_VERSION #define’d for use in a C/C++ mexFunction. For example:

    #if MATLAB_VERSION >= 7.3
    #define Int mxSignedIndex
    #else
    #define Int int
    #endif

    Int *p = mxGetJc ( … ) ;

    The new mx data type for an integer can’t be used in mexFunctions that attempt to port to older versions of MATLAB. Thus, I just use “long” and skip the use of mxSignedIndex that appeared in MATLAB 7.4 (or was it 7.3…? whichever …).

    The lack of a MATLAB_VERSION makes porting a mexFunction for different versions of MATLAB (both 32-bit and 64-bit) very very tricky, particularly ones that deal with sparse matrices since the mexFunction needs to know how the integers are stored inside the sparse matrix (32 or 64 bits).

    Those who write M-files don’t have to worry about this, but mexFunction authors do.

  4. Tim Davis replied on :

    In addition, the #define for MATLAB_VERSION should be ported back to older MATLAB versions, say in a #include “mex_version.h” file that could be back-ported. This mex_version.h file would figure out the MATLAB version number using details of the kind of #define’s inside the mex.h file, such as:
    #ifndef MATLAB_VERION
    #ifdef mxSignedInt

    MATLAB_version 7.3 (or whatever) to 7.5; use other
    aspects of mex.h to figure out which one.

    #else

    this is MATLAB 7.2 or earlier, etc.

    #endif

    #else

    this must be MATLAB 7.6 (or whatever) that has MATLAB_VERSION defined already

    #endif

    I’d write such a mex_version.h myself, but it would require some pretty deep analysis of the mex.h file and all the files it includes, to figure out what the best #if tests are. It would be best be done by someone at The MathWorks.

Leave a Reply


Loren Shure works on design of the MATLAB language at The MathWorks. She writes here about once a week on MATLAB programming and related topics.

  • Ulla Vainio: That error bar width adjustment was extremely useful and I would never have figured it out myself....
  • Peter Perkins: Jessee, there is a property that you can use to tag variables with units. For example, >> load...
  • Jessee: I could potentially see myself using dataset for casually looking at data, but from an application standpoint...
  • Loren: Oktay- It very much depends on the details of the calculations you are doing. Vectorization can sometimes...
  • Oktay: Hello, Is there any significant difference between using: - Vectorization inside a subfunction - Benefiting...
  • Loren: Clare- Yes, sum can sum a double vector: x = [.3 .4 pi/3] y = sum(x) x = 0.3 0.4 1.0472 y = 1.7472 You must...
  • Clare J: R2007a - Student Version When I use sum to sum a vector of type double I get this error message: ???...
  • Sarah Zaranek: Hi Jacob, Sorry about the slow response. You are correct that the code would be slower without the...
  • Navaneethan Santhanam: Thanks a lot, Loren! That worked perfectly.
  • Mike N: Should it be OK to use “persistent 221; variables in a deployed application? What if I have two...

These postings are the author's and don't necessarily represent the opinions of The MathWorks.

Related Topics