[[tags: egg ffi]] [[toc:]] This page is maintained in the this package's [[https://github.com/abarbu/matlab-chicken|github repository]]. == matlab This Chicken egg provides matlab bindings. It makes matlab somewhat bearable. See ''matlab-example.scm'' for how a quick example. Note that this egg doesn't at the moment deal well with Matlab errors and it currently only supports marshalling lists, vectors and matrices of doubles. === Example (matlab "'hello'") (matlab "a=2+2") (matlab-get-variable "a") (scheme->matlab! "a" '(3)) (matlab-get-variable "a") (with-matlab-default-output-buffer (lambda (matlab-result-string) (matlab-eval-string "A=[[1,2,3];[4,5,6]]") (matlab-eval-string "B='Hi'") (matlab-eval-string "C=1") (matlab-show-variable "A") (matlab-show-variable "B") (matlab-show-variable "C") (matlab-eval-string "D=randn(2,2,2,2)") (display (matlab-result-string)) (matlab-show-variable "D") (matlab-eval-string "'Can also get the output from matlab'") (display (matlab-result-string)) (newline))) This does a few random things in matlab to show off the API. === High-level API (matlab-eval-string s) (matlab-eval-strings . strings) (matlab . strings) Execute one or more strings. ''(matlab . strings)'' returns the output of the command as a string. The return value of the other two calls is unspecified. These commands will start up an engine automatically if needed. (matlab-append-to-path directory) Performs an ''addpath''. (matlab-load-variables filename) (matlab-save-variables filename . variables) Performs a ''load'' or a ''save''. Saves the entire workspace if no variables are provided. (start-matlab!) Starts the Matlab engine. Note that calling this function multiple times has no effect. (matlab->scheme variable-name) Marshal a variable from Matlab to scheme. Only supports arrays and strings. (scheme->matlab! variable-name object) Assign to a Matlab variable. Only supports matrices, vectors, and lists. === Low-level API Many internal low-level functions for dealing with Matlab exist but they are of interest only to developers. Only those that may be of interest to users are listed here. (matlab-start arguments) (matlab-stop engine) Start or stop an engine. (matlab-set-visible engine visible?) (matlab-get-visible engine visible?-pointer) Get and set if the visibility of the Matlab UI. *default-matlab-engine-command* The parameters to use when starting the global Matlab engine. Currently ''-nosplash -nodesktop''. If you wish to add to these variables you can use the environment variable ''MATLAB_LOCAL_ARGS'' *matlab-engine* The current matlab engine. === License Copyright 2013 Andrei Barbu. All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses.