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

Gre*_*ret 4 matlab

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

./matlab
./matlab/functions1
./matlab/functions2
Run Code Online (Sandbox Code Playgroud)

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

假设我的函数"func"位于'matlab/functions1'中.我的函数包含命令

csvwrite('data.csv', data(:));
Run Code Online (Sandbox Code Playgroud)

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

zel*_*lus 5

从'inside'函数调用的mfilename返回函数路径和名称.

fullPath = mfilename('fullpath');
pathString = fileparts(fullPath);
dataPath = [ pathString filesep 'data.csv'];
csvwrite(dataPath, data(:));
Run Code Online (Sandbox Code Playgroud)