I have a large project coded in MATLAB
, with 15-18 scripts
. It is becoming very challenging to understand the whole code. I was thinking that if I can put some scripts in another folder, it will become very straightforward to understand and maintain the code. Is it possible to do that?
Consider the below directory structure:
How can I call a function from main.m
that is placed in func.m
in Folder 1
?
Answers (1) There are two ways to call another method function from the same class. First, you can use a dot/period to access the method from the class variable. Second, you can simply call the function and pass the class object as an argument.
You must call a nested function either directly by name (without using feval ), or using a function handle that you created using the @ operator (and not str2func ). All of the variables in nested functions or the functions that contain them must be explicitly defined.
Manual solution
Perform the following:
At this stage, your scripts will be able to identify any function or script which resides in one of the inner subfolders which you chose. In addition you can call any script and function you would like by simply typing it's name in the command line.
Code solution
Instead of doing it manualy, it is also possible to add folders and subfolders into path by using the following code:
addpath(genpath(<path to your directory>))
Example
The tree structure of the current Matlab path
You can add the functions and scripts from Folder 1 into path by either writing the following code:
addpath(genpath('Folder 1'))
Or by using 'Adding folders and subfolders' option from the menu:
After doing so, it is possible to call func straight from main
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With