如何在org模式下在同一文件中定义matlab函数

时间:2016-04-19 19:28:03

标签: matlab emacs org-mode

我正在使用org-mode为我的学校编写报告。这非常方便,因为我可以在同一个文件中包含一些Matlab代码。 然而,问题是我无法定义新函数,因为Matlab需要在单独的文件中声明函数。

这非常不方便,因为它阻止我只有一个中心文件需要修改。

1 个答案:

答案 0 :(得分:1)

这适用于我使用嵌套函数。输出有点难看,但这里没有文件创建,只是发送到Matlab的代码块。 (这适用于MacOSX和Linux。它过去在Windows上无法运行,现在还不确定。)

#+BEGIN_SRC matlab
function parent
disp('This is the parent function')
nestedfx

   function nestedfx
      disp('This is the nested function')
   end

end
#+END_SRC

#+RESULTS:
#+begin_example

                            < M A T L A B (R) >
                  Copyright 1984-2013 The MathWorks, Inc.
                     R2013a (8.1.0.604) 64-bit (maci64)
                             February 15, 2013


To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

>> >> This is the parent function
>> >> >> >> This is the nested function
>> >> >> >> 
#+end_example

要使用外部功能,您将使用纠缠,例如首先,定义你的功能。

#+BEGIN_SRC matlab :tangle myfunc.m
function myfunc
    disp('External function')
end
#+END_SRC

这个下一个块将m文件纠缠在一起。

#+BEGIN_SRC emacs-lisp
(org-babel-tangle)
#+END_SRC
#+RESULTS:
| myfunc.m |

现在我们在代码块中使用它

#+BEGIN_SRC matlab
myfunc()
#+END_SRC

#+RESULTS:
#+begin_example

                            < M A T L A B (R) >
                  Copyright 1984-2013 The MathWorks, Inc.
                     R2013a (8.1.0.604) 64-bit (maci64)
                             February 15, 2013


To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

>> External function
>> 
#+end_example