我希望能够从定义它的目录中运行一个函数。 假设这是我的文件夹结构:
./matlab
./matlab/functions1
./matlab/functions2
我在MATLAB路径中有所有目录,所以我可以调用这些目录中的函数。
假设我的函数“func”位于'matlab / functions1'中。我的函数包含命令
csvwrite('data.csv', data(:));
现在,如果我从./matlab调用“func”,则会在./matlab中创建“data.csv”。如果我从./matlab/functions2调用它,它将在该目录中创建。但我想函数总是在定义函数的目录(./matlab/functions1)中编写'data.csv',无论我当前的目录是什么。我怎样才能做到这一点?
答案 0 :(得分:5)
mfilename返回函数路径和名称。
fullPath = mfilename('fullpath');
pathString = fileparts(fullPath);
dataPath = [ pathString filesep 'data.csv'];
csvwrite(dataPath, data(:));
答案 1 :(得分:4)
除了@zellus建议的内容之外,您可以使用functions
获取有关特定功能的信息,无论同时执行任何m文件。您可以通过赋予functions
函数句柄来设置感兴趣的函数:
funInfo = functions(@func);
fullPath = funInfo.file;