From 4ecb9e9841f2c2d7743fd3636b198ee7bab3f4f3 Mon Sep 17 00:00:00 2001 From: Marcel Kronfeld Date: Tue, 26 Feb 2008 17:54:26 +0000 Subject: [PATCH] MatlabControl is not required any more --- src/javaeva/tools/MatlabControl.java | 284 --------------------------- 1 file changed, 284 deletions(-) delete mode 100644 src/javaeva/tools/MatlabControl.java diff --git a/src/javaeva/tools/MatlabControl.java b/src/javaeva/tools/MatlabControl.java deleted file mode 100644 index e461335e..00000000 --- a/src/javaeva/tools/MatlabControl.java +++ /dev/null @@ -1,284 +0,0 @@ -package javaeva.tools; - -/* MatlabControl.java - * - * "Copyright (c) 2001 and The Regents of the University - * of California. All rights reserved. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose, without fee, and without written agreement is - * hereby granted, provided that the above copyright notice and the following - * two paragraphs appear in all copies of this software. - * - * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT - * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF - * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." - * - * $\Id$ - */ - -/** - * This class interfaces with the current Matlab session, allowing you - * to call matlab commands from Java objects - * - * @author Kamin Whitehouse - */ - -import com.mathworks.jmi.*; - -public class MatlabControl { - Matlab matlab = null; //this is the com.mathworks.jmi.Matlab class,which has functionality allowing one to interact with the matlab session. - boolean useCb=false; - Object returnVal; - String callbackFunction; - - /***************CONSTRUCTORS****************/ - /*** usually, the default constructor with no arguments is fine. - * Sometimes, a callback function is useful. A callback function - * allows the user to pass the command and its arguments to a - * matlab function, which will figure out the best way to execute - * it, instead of trying to execute it directly from java. This - * is often useful for handling/printing errors as well as dealing - * with native matlab data types, like cell arrays. The cell - * array is not really converted to a java type, only the handle - * of the cell array is converted to a java type, so often a - * matlab callback function is useful for dealing specially with - * cell arrays, etc. - ***/ - - public MatlabControl() { - this(false); - } - - public Matlab getMatlab() { - return matlab; - } - - public MatlabControl(boolean useCallback) { - this(useCallback,new String("matlabControlcb")); - } - - public MatlabControl(boolean useCallback, String CallBackFunction) { - try { - if (matlab == null) - matlab = new Matlab();//this command links to the current matlab session - } catch (Exception e) { - System.out.println(e.toString()); - } - returnVal = new String("noReturnValYet"); - this.useCb=useCallback; - callbackFunction=CallBackFunction; - } - - /***************USER-LEVEL FUNCTIONS****************/ - /***call these from any java thread (as long as the thread - * originated from within matlab) - ***/ - - /**Evaluate a string, Matlab script, or Matlab function**/ - public void eval(String Command) { - Matlab.whenMatlabReady(new MatlabEvalCommand(Command,useCb)); - } - - /**Evaluate a Matlab function that requires arguments. Each element of - the "args" vector is an argument to the function "Command"**/ - public void feval(String Command, Object[] args) { - Matlab.whenMatlabReady(new MatlabFevalCommand(Command, args,useCb)); - } - - /**Evaluate a Matlab function that requires arguments and provide return arg. - * Each element of the "args" vector is an argument to the function "Command"**/ - public Object blockingFeval(String Command, Object[] args) throws InterruptedException { - returnVal = new String("noReturnValYet"); - Matlab.whenMatlabReady(new MatlabBlockingFevalCommand(Command, args, useCb, this)); - if (returnVal.equals("noReturnValYet")) { - synchronized(returnVal){ - returnVal.wait(); - } - } - return returnVal; - } - - /**Echoing the eval statement is useful if you want to see in - * matlab each time that a java function tries to execute a matlab - * command **/ - public void setEchoEval(boolean echo){ - Matlab.setEchoEval(echo); - } - - /**********TEST FUNCTIONS***********************/ - /***call these functions from within Matlab itself. These are examples of the general execution order: - 1. instantiate java object from matlab - 2. spawn a new Java thread - 3. call matlab functions from new java thread - - EXAMPLE (from matlab prompt): - - >> mc=MatlabControl; - >> mc.testEval('x = 5') - x = - 5 - > mc.testFeval('help',{'sqrt'}) - SQRT Square root. - SQRT(X) is the square root of the elements of X. Complex - results are produced if X is not positive. - - See also SQRTM. - - Overloaded methods - help sym/sqrt.m - - >> mc.testBlockingFeval('sqrt',{x}) - 2.2361 - ****/ - - public void testEval(final String Command) { - class Caller extends Thread{ - public void run(){ - try{ - eval(Command); - } catch(Exception e){ - // System.out.println(e.toString()); - } - } - } - Caller c = new Caller(); - c.start(); - } - - public void testFeval(final String Command, final Object[] args) { - class Caller extends Thread{ - public void run(){ - try{ - feval(Command, args); - } catch(Exception e){ - // System.out.println(e.toString()); - } - } - } - Caller c = new Caller(); - c.start(); - } - - public void testBlockingFeval(final String Command, final Object[] args) { - class Caller extends Thread{ - public void run(){ - try{ - Object rets[] = new Object[1]; - rets[0] = blockingFeval(Command, args); - feval("disp",rets ); - } catch(Exception e){ - // System.out.println(e.toString()); - } - } - } - Caller c = new Caller(); - c.start(); - } - - - - /******** INTERNAL FUNCTIONS AND CLASSES *******/ - - public void setReturnVal(Object val) { - synchronized(returnVal){ - Object oldVal = returnVal; - returnVal = val; - oldVal.notifyAll(); - } - } - - /** This class is used to execute a string in Matlab **/ - protected class MatlabEvalCommand implements Runnable { - String command; - boolean useCallback,eval; - Object[] args; - - public MatlabEvalCommand(String Command, boolean useCallback) { - command = Command; - this.useCallback = useCallback; - eval=true; - args=null; - } - - protected Object useMatlabCommandCallback(String command, Object[] args){ - int numArgs = (args==null)? 0 : args.length; - Object newArgs[] = new Object[numArgs+1] ; - newArgs[0]=command; - for(int i=0;i