【问题标题】:How to control where the function is run in MATLAB?如何控制函数在 MATLAB 中的运行位置?
【发布时间】:2011-02-01 04:08:00
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

    mfilename 从函数“内部”调用返回函数路径和名称。

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

    【讨论】:

      【解决方案2】:

      除了@zellus 的建议之外,您还可以使用functions 来获取有关特定功能的信息,而不管同时执行的任何m 文件。您通过给functions 函数句柄来设置感兴趣的函数:

      funInfo = functions(@func);
      fullPath = funInfo.file;
      

      【讨论】:

      • 类文件有类似的功能吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      相关资源
      最近更新 更多