Documentation:Reference:Matlab - MdsWiki
Navigation
Personal tools

From MdsWiki

Revision as of 15:44, 10 February 2020; Zack-vii (Talk | contribs)
(diff) ←Older revision | Current revision | Newer revision→ (diff)
Jump to: navigation, search


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. You should add this folder to your Matlab search path using the Set Path... option from the File menu or via:


%% add $MDSPLUS_DIR/matlab to path
addpath(fullfile(getenv('MDSPLUS_DIR'), 'matlab'))
savepath()

Additional configuration may be needed to use MDSplus from Matlab depending on the preferred API (java or python).

Setting up access via java mdsobjects.jar

By default the Matlab API is bridging thru mdsobjects.jar. For this you need to add the jar to your javaclasspath.txt. Further you have to add the folder of the libraries to javalibrarypath.txt. This script may help you doing that

addpath(fullfile(getenv('MDSPLUS_DIR'),'matlab'));
savepath;

%system(sprintf('echo %s> %s',[regexprep(getenv('MDSPLUS_DIR'),'\\','/'), '/bin64'],fullfile(prefdir,'librarypath.txt')));%old versions
system(sprintf('echo %s> %s',fullfile(getenv('MDSPLUS_DIR'),'bin64'),fullfile(prefdir,'javalibrarypath.txt')));%new versions
system(sprintf('echo %s> %s',fullfile(getenv('MDSPLUS_DIR'),'java','classes','mdsobjects.jar'),fullfile(prefdir,'javaclasspath.txt')));


Setting up access via pyhton API

To activate the pyhton API make sure the python MDSplus package can be found in your PYTHONPATH. Then once e.g. in startup.m execute "mdsUsePython(1)".

See:  MATLAB Specific Issues

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:

 mdsput('\data_node',somenumbers)

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:

 mdsgetmsg(265388426)

More Tools

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:

 mdsvalue('current_shot("mytree")')