我已经创建了自己的mfile,并希望将其永久添加到内置函数中,以便我不必指定路径。有办法吗?
答案 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;
}
}
文件(.m
或script
)存储在属于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