如何将我们自己的mfile包含到matlab库中?

时间:2015-09-05 08:53:42

标签: matlab

我已经创建了自己的mfile,并希望将其永久添加到内置函数中,以便我不必指定路径。有办法吗?

2 个答案:

答案 0 :(得分:0)

您应将public class SystemOutToSlf4j extends PrintStream { private static final PrintStream originalSystemOut = System.out; private static SystemOutToSlf4j systemOutToLogger; /** * Enable forwarding System.out.println calls to the logger if the stacktrace contains the class parameter * @param clazz */ public static void enableForClass(Class clazz) { systemOutToLogger = new SystemOutToSlf4j(originalSystemOut, clazz.getName()); System.setOut(systemOutToLogger); } /** * Enable forwarding System.out.println calls to the logger if the stacktrace contains the package parameter * @param packageToLog */ public static void enableForPackage(String packageToLog) { systemOutToLogger = new SystemOutToSlf4j(originalSystemOut, packageToLog); System.setOut(systemOutToLogger); } /** * Disable forwarding to the logger resetting the standard output to the console */ public static void disable() { System.setOut(originalSystemOut); systemOutToLogger = null; } private String packageOrClassToLog; private SystemOutToSlf4j(PrintStream original, String packageOrClassToLog) { super(original); this.packageOrClassToLog = packageOrClassToLog; } @Override public void println(String line) { StackTraceElement[] stack = Thread.currentThread().getStackTrace(); StackTraceElement caller = findCallerToLog(stack); if (caller == null) { super.println(line); return; } org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(caller.getClass()); log.info(line); } public StackTraceElement findCallerToLog(StackTraceElement[] stack) { for (StackTraceElement element : stack) { if (element.getClassName().startsWith(packageOrClassToLog)) return element; } return null; } } 文件(.mscript)存储在属于MatLab function的文件夹中。

要将自己的文件夹添加到MatLab search path,您可以使用eiterh:

  • MatLab上提供的search path工具Set Path

  • 使用内置函数Home toolbar(来自path或者,例如,作为脚本的一部分)

电子。克。

Command Window

希望这有帮助。

答案 1 :(得分:0)

编写文件并保存,然后将包含的文件夹添加到MATLAB搜索路径中。你不需要每次都寻找它。

addpath('c:/matlab/myfiles')

注意:您的文件名不应该存在于MATLAB中,否则当您调用该命令时,您的文件将是默认文件。

您还可以从命令行执行大部分工作: 首先,创建一个文件夹,

mkdir('c:/matlab/myfiles')

将其添加到搜索路径的顶部,

addpath('c:/matlab/myfiles')

然后保存未来MATLAB会话的搜索路径

savepath c:/matlab/myfiles/pathdef.m