clarmar ysobele justyne

0 views
Skip to first unread message

Lavonda Busing

unread,
Aug 2, 2024, 8:38:08 PM8/2/24
to htennaconctos

MATLAB (an abbreviation of "MATrix LABoratory"[22]) is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages.

Although MATLAB is intended primarily for numeric computing, an optional toolbox uses the MuPAD symbolic engine allowing access to symbolic computing abilities. An additional package, Simulink, adds graphical multi-domain simulation and model-based design for dynamic and embedded systems.

As of 2020[update], MATLAB has more than four million users worldwide.[23] They come from various backgrounds of engineering, science, and economics. As of 2017[update], more than 5000 global colleges and universities use MATLAB to support instruction and research.[24]

MATLAB was invented by mathematician and computer programmer Cleve Moler.[25] The idea for MATLAB was based on his 1960s PhD thesis.[25] Moler became a math professor at the University of New Mexico and started developing MATLAB for his students[25] as a hobby.[26] He developed MATLAB's initial linear algebra programming in 1967 with his one-time thesis advisor, George Forsythe.[25] This was followed by Fortran code for linear equations in 1971.[25]

In the 1980s, Cleve Moler met John N. Little. They decided to reprogram MATLAB in C and market it for the IBM desktops that were replacing mainframe computers at the time.[25] John Little and programmer Steve Bangert re-programmed MATLAB in C, created the MATLAB programming language, and developed features for toolboxes.[26]

MATLAB was first released as a commercial product in 1984 at the Automatic Control Conference in Las Vegas.[25][26] MathWorks, Inc. was founded to develop the software[30] and the MATLAB programming language was released.[28] The first MATLAB sale was the following year, when Nick Trefethen from the Massachusetts Institute of Technology bought ten copies.[26][33]

By the end of the 1980s, several hundred copies of MATLAB had been sold to universities for student use.[26] The software was popularized largely thanks to toolboxes created by experts in various fields for performing specialized mathematical tasks.[29] Many of the toolboxes were developed as a result of Stanford students that used MATLAB in academia, then brought the software with them to the private sector.[26]

Over time, MATLAB was re-written for early operating systems created by Digital Equipment Corporation, VAX, Sun Microsystems, and for Unix PCs.[26][28] Version 3 was released in 1987.[34] The first MATLAB compiler was developed by Stephen C. Johnson in the 1990s.[28]

In 2000, MathWorks added a Fortran-based library for linear algebra in MATLAB 6, replacing the software's original LINPACK and EISPACK subroutines that were in C.[28] MATLAB's Parallel Computing Toolbox was released at the 2004 Supercomputing Conference and support for graphics processing units (GPUs) was added to it in 2010.[28]

Some especially large changes to the software were made with version 8 in 2012.[35] The user interface was reworked[citation needed] and Simulink's functionality was expanded.[36] By 2016, MATLAB had introduced several technical and user interface improvements, including the MATLAB Live Editor notebook, and other features.[28]

The MATLAB application is built around the MATLAB programming language. Common usage of the MATLAB application involves using the "Command Window" as an interactive mathematical shell or executing text files containing MATLAB code.[37]

Variables are defined using the assignment operator, =. MATLAB is a weakly typed programming language because types are implicitly converted.[38] It is an inferred typed language because variables can be assigned without declaring their type, except if they are to be treated as symbolic objects,[39] and that their type can change. Values can come from constants, from computation involving values of other variables, or from the output of a function. For example:

Matrices can be defined by separating the elements of a row with blank space or comma and using a semicolon to separate the rows. The list of elements should be surrounded by square brackets []. Parentheses () are used to access elements and subarrays (they are also used to denote a function argument list).

MATLAB supports structure data types.[41] Since all variables in MATLAB are arrays, a more adequate name is "structure array", where each element of the array has the same field names. In addition, MATLAB supports dynamic field names[42] (field look-ups by name, field manipulations, etc.).

When creating a MATLAB function, the name of the file should match the name of the first function in the file. Valid function names begin with an alphabetic character, and can contain letters, numbers, or underscores. Variables and functions are case sensitive.[43]

MATLAB supports object-oriented programming including classes, inheritance, virtual dispatch, packages, pass-by-value semantics, and pass-by-reference semantics.[47] However, the syntax and calling conventions are significantly different from other languages. MATLAB has value classes and reference classes, depending on whether the class has handle as a super-class (for reference classes) or not (for value classes).[48]

MATLAB supports developing graphical user interface (GUI) applications.[49] UIs can be generated either programmatically or using visual design environments such as GUIDE and App Designer.[50][51]

MATLAB can call functions and subroutines written in the programming languages C or Fortran.[52] A wrapper function is created allowing MATLAB data types to be passed and returned. MEX files (MATLAB executables) are the dynamically loadable object files created by compiling such functions.[53][54] Since 2014 increasing two-way interfacing with Python was being added.[55][56]

Libraries written in Perl, Java, ActiveX or .NET can be directly called from MATLAB,[57][58] and many MATLAB libraries (for example XML or SQL support) are implemented as wrappers around Java or ActiveX libraries. Calling MATLAB from Java is more complicated, but can be done with a MATLAB toolbox[59] which is sold separately by MathWorks, or using an undocumented mechanism called JMI (Java-to-MATLAB Interface),[60][61] (which should not be confused with the unrelated Java Metadata Interface that is also called JMI). Official MATLAB API for Java was added in 2016.[62]

In 2020, MATLAB withdrew services from two Chinese universities as a result of US sanctions. The universities said this will be responded to by increased use of open-source alternatives and by developing domestic alternatives.[66]

Is there a way to get the version of MATLAB without launching the engine? When launched (in non-GUI mode) it prints the version to stout - but I am using it remotely from Java and so that output is not available.

An additional hint; if you're looking for the version number to ensure that the installed MATLAB is no older than (some particular release number), check out the documentation for VERLESSTHAN, at It might help you solve your problem without having to parse the string yourself.

I had the same error when running executables from matlab's system() function. The executable was dependent on a different libstdc++ than matlab had available. For both matlab R2022a and R2022b on Ubuntu 22.04, I simply linked matlab's shortcut to the system's libc++ rather than the one that ships with matlab. Perhaps this is an edge case that doesn't match the OP's from years ago, but it's one I've run into with each version of matlab and had to fix multiple times, each time leading me to this Q&A.

The mechanism is finds "matlab" from your path rather than giving another configuration mechanism. Since this is the standard way of finding executables, why not fix your $PATH to ensure that the correct version is found first? Or add a wrapper (if you can't change the path, which seems a bit odd) called "matlab" which exists earlier in the path that executes the one you want?

Thank you Andrew, the short answer to your question is that the system path for "matlab" is fixed to an older version of MATLAB (there are other users in the same server that require it). If I launch system("matlab") through CIW, it indeed opens up the older version.

This usually isn't an issue since I can type a separate command on terminal that points to another path. I currently alias "matlab" to the command for the newer matlab, but unfortunately it seems like ADE doesn't see this.

Is it at all possible to somehow change environment in .cdsinit or something?

Hi @paulage,
Have you tried using the version of CytoMAP that works with a full installation of Matlab rather than the stand-alone installer? Now that you have a full version of Matlab.
It is not a solution, but it may be a work-around.

It might be possible for me to perform some sort of sensitivity analysis. To be honest, though, I guess I don't see the purpose. True, it would show you when your "long" burn might significantly change your answer, but this is KSP... aren't we all just going to go for it anyway?

I've added the apses to the orbit transfer map tonight. I'll have to think about the nodes, because you need to pick the correct plane for them to make sense. There's a fair bit of thought, design, and math that needs to go into plotting those. Honestly, they will probably come about later, if only because they're a very small feature that requires a lot of work.

In any event, I think you're right and some sort of indication of an optimized departure/arrival date/time is a good idea. Tonight I wrote the code to actually perform the optimization. It's just a matter of how to let the user call that. Right now I have it tied to the porkchop plot generator method: it generates the plot, then finds the optimal point within the plot. (Or, really, within 1 synodic period of the best point in the porkchop plot.) Do you have any suggestions on how I might present this "optimized" information to the user? I'm not sure I can use the data cursor thing I've got showing the best point computed for the porkchop plot, but I'll investigate anyway. Assuming that's a no-go, any thoughts? I'm thinking I either write it to the text box below the porkchop plot or bring up a pop-up box with the times in it. Would either of those be acceptable?

c01484d022
Reply all
Reply to author
Forward
0 new messages