我希望能够从定义它的目录运行一个函数.假设这是我的文件夹结构:
./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',无论我当前的目录是什么.我怎样才能做到这一点?
从'inside'函数调用的mfilename返回函数路径和名称.
fullPath = mfilename('fullpath');
pathString = fileparts(fullPath);
dataPath = [ pathString filesep 'data.csv'];
csvwrite(dataPath, data(:));
Run Code Online (Sandbox Code Playgroud)