MATLAB mode has a command to execute region in the MATLAB Shell from a .M file. I see no reason why you couldn't re-use that.
It may be it needs updating to also start the shell, or to chdir if there is a function, or something like that. Eric -----Original Message----- From: Uwe Brauer [mailto:o...@mat.ucm.es] Sent: Tuesday, October 24, 2017 4:54 PM To: matlab-emacs-discuss <matlab-emacs-discuss@lists.sourceforge.net> Subject: [Matlab-emacs-discuss] executing matlab in org mode files (using the matlab-shell) Hi I am using more and more org mode, a long with auctex and matlab.el. Orgmode comes in handy if I write a document which contains (matlab) code which I want to execute, but the rest of the file maybe text, which I can then export to latex. So a typical file looks like Given \droppoints \begin{displaymath} \begin{cases} \frac{du}{dt}&= -t u^2,\\ u(0)&=1, \end{cases} \end{displaymath} Solve using ... #+BEGIN_solution #+begin_src matlab :results output latex :exports results :eval never-export f=@(t,y)[-t*y^2]; [t,y]=mieuler(f,[0 1],1,2); disp('\begin{align*}') fprintf('t = [%g \\qquad %g \\quad %g] \\\\\n', t) fprintf('y = [%g \\qquad %g \\qquad %g] \n', y) disp('\end{align*}') #+end_src Now I can execute the matlab code in that org file using C-c C-c ( org-ctrl-c-ctrl-c, the *one-ring-to-rule-them-all* function in orgmode. Thanks thanks to a function provided to me by John Kitchin it executes matlab. It is as follows: (defun org-babel-execute:matlab (body params) (interactive "P") (let* ((current-file (buffer-file-name)) (code (org-element-property :value (org-element-context))) (result-params (cdr (assoc :result-params params))) m-file md5-hash) (with-temp-buffer (insert code) (setq md5-hash (md5 (buffer-string)) mbuffer (format "*m-%s*" md5-hash) m-file (format "m-%s.m" md5-hash))) ;; create the file to run (with-temp-file m-file (insert code)) (let ((results (shell-command-to-string (concat "/usr/local/bin/matlab " "-nodesktop -nojvm -nosplash -nodisplay <" m-file)))) (delete-file m-file) (when results ;; strip out >> (setq results (replace-regexp-in-string ">> " "" results)) ;; remove first 10 lines that are the header. ;; matlab license seem to expire soon, so 5 warning lines are added ;; change first 10 to first 15 lines (setq results (mapconcat 'identity (nthcdr 10 (split-string results "\n")) "\n"))) (org-babel-result-cond result-params results)))) The problem of that code is that it starts matlab every time I execute C-c C-c . There seems to be a python based kernel around which avoids this, but I thought that maybe with a bit of hacking one could use the elisp based matlab-shell and the corresponding functions. Anybody has an idea, Eric? Needless to say that I played a bit around but did get it to work.... Regards Uwe Brauer ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Matlab-emacs-discuss mailing list Matlab-emacs-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Matlab-emacs-discuss mailing list Matlab-emacs-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss