如何控制函数在MATLAB中的运行位置?

时间:2011-02-01 04:08:00

标签: matlab

我希望能够从定义它的目录中运行一个函数。 假设这是我的文件夹结构:

./matlab
./matlab/functions1
./matlab/functions2

我在MATLAB路径中有所有目录,所以我可以调用这些目录中的函数。

假设我的函数“func”位于'matlab / functions1'中。我的函数包含命令

csvwrite('data.csv', data(:));

现在,如果我从./matlab调用“func”,则会在./matlab中创建“data.csv”。如果我从./matlab/functions2调用它,它将在该目录中创建。但我想函数总是在定义函数的目录(./matlab/functions1)中编写'data.csv',无论我当前的目录是什么。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

从函数'inside'调用的

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;