Setting the Matlab Search Path
Once you have installed the MDSplus software on your desktop computer you can read and write data to and from MDSplus trees using Matlab. The m-file functions for MDSplus operations will be in your MDSplus directory, usually in C:\Program Files\MDSplus\Matlab for a standard Windows installation. You should add this folder to your Matlab search path using the Set Path... option from the File menu.
Some users may have difficulty getting Matlab to find the necessary files. If you get an error message indicating that Matlab cannot find a necessary library file try copying the file MdsIpShr.dll from the C:\Program Files\MDSplus folder into the C:\Program Files\MDSplus\Matlab folder.
Reading and Writing
If there is an MDSplus server on your Local Area Network at address 123.456.7.89 and a tree on the server named mytree then you connect and read data like this:
mdsconnect('123.456.7.89') mdsopen('mytree',42) somenumbers = mdsvalue('\data_node') mdsclose mdsdisconnect
In the above example we opened shot 42 of mytree and read data from the node with tag name data_node into a Matlab workspace variable named somenumbers. Most of the commands above will return some kind of answer when executed. Of importance is the fact that the mdsopen command will return the pulse number if successful and nothing if unsuccessful.
To write data simply use the mdsput command:
In the above example somenumbers can be any Matlab variable, including multi-dimensional arrays.
Decoding Error Messages
MDSplus can sometimes answer a request with a cryptic error message number. For example, if you try to store text in a numeric usage node you get the return code 265388426. Fortunately we can ask the MDSplus server to explain things with the mdsgetmsg command. Try this one:
Matlab is useful mainly as an analysis tool. In this role it is important to be able to read data from MDSplus trees and perhaps be able to write results back in. But if you really want to you can issue Tree Command Language (TCL) commands to the MDSplus server through Matlab. You do this by using the mdsvalue m-file.
mdsvalue('tcl($)','set current mytree 42')
In this example I set the current pulse number for mytree to 42. In general you can issue any TCL command in this way, as long as you have permission on the server to execute the command.
You can also query the MDSplus server to find out what the current shot number is. The TDI command is somewhat hard to find in the documentation, but it goes like this: