Since MATLAB supports Java, it is straightforward to call CloudTurbine API methods from this package. The first step is to add the CloudTurbine library (CTlib.jar) to MATLAB’s Java class path. This library is available in the CTapps.zip distribution file included with CloudTurbine releases. Add this library to either the MATLAB “static path” or “dynamic path” (https://www.mathworks.com/help/matlab/matlab_external/java-class-path.html). Our recommendation is to add CTlib.jar to the static path. Follow the instructions at https://www.mathworks.com/help/matlab/matlab_external/static-path.html to accomplish this.
Once CTlib.jar has been added to MATLAB’s Java class path and MATLAB has been restarted, you should be able to create CloudTurbine objects and call API methods. As a test, try running the following in the MATLAB Command Window:
0 1 2 |
ctr = cycronix.ctlib.CTreader('.') |
If MATLAB returns an error message such as
0 1 2 |
Undefined variable "cycronix" or class "cycronix.ctlib.CTreader". |
then the CloudTurbine library is not on MATLAB’s Java class path (double check the instructions above).
However, if MATLAB successfully created the CloudTurbine CTreader object you will see a message similar to the following:
0 1 2 3 4 5 6 |
>> ctr = cycronix.ctlib.CTreader('.') ctr = cycronix.ctlib.CTreader@195924ad |
The sample MATLAB function shown below fetches data output from CTmousetrack (part of CTexample.jar, included in CTapps.zip). CTmousetrack saves the x,y position of your mouse to CloudTurbine files. To display the mouse position in MATLAB: launch CTmousetrack; start MATLAB; call the sample function found below, giving it the full path to the parent folder which contains the CTmousetrack output source folder. See the sample screenshot of the MATLAB plot showing mouse position below.
% % Demonstrate calling CloudTurbine API from MATLAB % % Use this with the CTmousetrack sample program which has 2 % output data channels: x,y % % 2017-09-15 John P. Wilson, Erigo Technologies % % Input: rootFolder Full path to the folder which contains the % CTmousetrack source folder % function displayMousetrack(rootFolder) % Import classes from the CloudTurbine CTlib library import cycronix.ctlib.* % Create CTreader ctr = CTreader(rootFolder); srcName = 'CTmousetrack'; % Create the MATLAB axes hAxes = axes(); hAxes.XLim = [0 1]; hAxes.YLim = [0 1]; hold(hAxes,'on'); hPlot = plot(hAxes,0,0); % Repeatedly fetch the newest 10 sec of CloudTurbine data and plot it % Note that CTmousetrack stores output data as comma-separated values, % therefore fetch it using getDataAsNumericF32() while true % Use CTreader.getData to fetch data, 1 channel at a time ctdata = ctr.getData(srcName,'x',0,10,'newest'); time_x = ctdata.getTime(); data_x = ctdata.getDataAsNumericF32(); % Do absolute request for y (this will keep x,y channels time aligned) ctdata = ctr.getData(srcName,'y',time_x(1),time_x(end)-time_x(1),'absolute'); data_y = ctdata.getDataAsNumericF32(); % Make sure the arrays are the same length % If not, trim off right edge (newest data) of array (since we % should be aligned on oldest time in these arrays) len = min(length(data_x),length(data_y)); if length(data_x) ~= len data_x = data_x( 1 : len ); end if length(data_y) ~= len data_y = data_y( 1 : len ); end % Display the data set(hPlot,'XData',data_x,'YData',data_y); drawnow(); pause(0.1); end end