我的实验室里有很多MATLAB代码.问题是没有办法组织它.由于所有函数都必须在同一个文件夹中调用(或者你必须在MATLAB的path环境变量中添加一堆文件夹),似乎我们注定在同一个文件夹中有大量文件,全都在全局命名空间.有没有更好的方法来组织我们的文件和功能?我真的希望有某种模块系统......
为了避免命名空间膨胀,我使用包.例如,让我们Foo成为一个名为的函数FooPackage
function Foo()
disp('Foo');
end
Run Code Online (Sandbox Code Playgroud)
我想在另一个函数中使用这个函数Bar.
function Bar()
InFunc1();
InFunc2();
InFunc3();
end
Run Code Online (Sandbox Code Playgroud)
这个函数调用子函数.朴素的方式是在每次调用中明确说出包名
function InFunc1()
FooPackage.Foo();
end
function InFunc2()
FooPackage.Foo();
end
function InFunc3()
FooPackage.Foo();
end
Run Code Online (Sandbox Code Playgroud)
或者,我可以在每个函数中使用导入:
function InFunc1()
import FooPackage.*
Foo();
end
function InFunc2()
import FooPackage.*
Foo();
end
function InFunc3()
import FooPackage.*
Foo();
end
Run Code Online (Sandbox Code Playgroud)
这两种方式都令人筋疲力尽.这里的答案说这是唯一的方法.有没有人有更好的建议?
我在许多子文件夹(空间计量经济学工具箱)中下载了一个包含许多文件的工具箱,以便在一个特定项目中使用,我不想将其添加到路径中,因为我不认为我会习惯于使用它,我不知道它是否会隐藏在stats工具箱中的函数.
如何访问此工具箱中的功能?有没有办法可能以编程方式将其添加到路径中,只是为了调用脚本的Matlab特定会话?处理这个问题的正确方法是什么?
假设我有很多源文件,我想在文件夹树结构中组织它们.
我可以拥有几个具有相同名称的文件,并在我需要的地方使用它们,或者我必须拥有不同名称的所有函数和类吗?
在C++中我必须#include介绍我需要的功能,就在这里?
只是为了说明:
.\main.m
.\Algorithms\QR\Factory.m % function Factory
.\Algorithms\QR\Algorithm.m % function Algorithm
.\Algorithms\SVD\Factory.m % function Factory
.\Algorithms\SVD\Algorithm.m % function Algorithm
Run Code Online (Sandbox Code Playgroud)