How to create a Matlab module

200 visualizaciones (últimos 30 días)
B Verhaar
B Verhaar el 1 de Mayo de 2018
Movida: Walter Roberson el 9 de En. de 2023
Hi I'm trying to find out how to create a module in Matlab, that can be called using module.include() However I'm surprised to find out that I can't seem to find any official documentation about it. When I search in in mathworks.com, in the documentation, the first hit is even about Python modules ... (see screen shot). Does anyone know how to find this information? Thanks!

Respuestas (4)

Rajesh Balagam
Rajesh Balagam el 3 de Mayo de 2018
If you are referring to equivalent of Python modules in MATLAB, you can use packages. Refer to the following MATLAB documentation page for more information:
  4 comentarios
B Verhaar
B Verhaar el 7 de Mayo de 2018
Hi Walter
The evidence you requested, you can obtain by typing "help module" in the command window.
I would expect to find more extensive info (e.g. with an introduction to modules) somewhere in the Matlab documentation.
Walter Roberson
Walter Roberson el 7 de Mayo de 2018
Editada: Walter Roberson el 7 de Mayo de 2018
>> help module
module not found.
Use the Help browser search field to search the documentation, or
type "help help" for help command options, such as help for methods.
I do not have all of the toolboxes installed, but I have quite a number of them.
What shows up for
which -all module

Iniciar sesión para comentar.


José Crespo Barrios
José Crespo Barrios el 12 de Jul. de 2019
Editada: José Crespo Barrios el 12 de Jul. de 2019
The fast roundabout I make to create a python-like module in matlab is to define a module-function with only two arguments: 1) str_function (string with the function inside the module to be called), and 2) cell_args (cell with the input arguments for that function). "resp" is the response to be exported by the module-function, and the functions inside it.
function resp = module_LoL(str_function, cell_args)
if strcmp(str_function,'myfun_1')
resp = myfun_1(cell_args);
elseif strcmp(str_function,'myfun_2')
resp = myfun_2(cell_args);
elseif strcmp(str_function,'myfun_3')
resp = myfun_3(cell_args);
end %endif str_function
end %endmod module_LoL
% functions inside module -------------------
function resp = myfun_1(cell_args)
% arithmetic mean
[input_1, input_2] = cell_args{:};
resp = (input_1 + input_2)/2;
end % endfun myfun_1
function resp = myfun_2(cell_args)
% geometric mean
[input_1, input_2] = cell_args{:};
resp = sqrt(input_1 * input_2);
end % endfun myfun_2
function resp = myfun_3(cell_args)
% arithmetic-geometric mean: agm
[a,g] = cell_args{:}; % [input_1,input_2]
for ii = 1:10 % 10 iterations
a = myfun_1({a,g});
g = myfun_2({a,g});
end %endfor
resp = a;
end % endfun myfun_3
So that I can use the functions of this module outside, just by calling the head function-module as it would be a normal function (as a matter of fact it does).
value_1 = 2;
value_2 = 3;
am = module_LoL('myfun_1', {value_1, value_2}) % arithmetic mean
gm = module_LoL('myfun_2', {value_1, value_2}) % geometric mean
agm= module_LoL('myfun_3', {value_1, value_2}) % arithmetic-geometric mean
Besides that, the aspect is very nice inside the editor, because you can inspect every function inside the module with a single click in the proper panel of the editor, as shown in the next image,
  3 comentarios
José Crespo Barrios
José Crespo Barrios el 14 de Jul. de 2019
Thank you for your contribution, very elegant. Just wanted to show didactically that it is no necessary to download special packages to have a kind of python-like module. It is just putting a head function and redirect to inner functions with "str_function" and "cell_args". Regards
ScubaNinjaDog
ScubaNinjaDog el 9 de En. de 2023
Very Cool!

Iniciar sesión para comentar.


Steven Lord
Steven Lord el 7 de Mayo de 2018
I have access to a copy of the current release with all the products, and like Walter I cannot find any module function in them. I did a quick Google search and I found a submission on the File Exchange that may be what you're looking for. However, that doesn't have a function or method named "include" in it.

Peeyush Prasad
Peeyush Prasad el 26 de Nov. de 2018
Movida: Walter Roberson el 9 de En. de 2023
Hi B.Verhaar,
After quite some head-scratching, I realized that 'Modules' is supplemental software(I think it is a toolbox) to manage the matlab search path. It needs to be installed on top of your regular Matlab installation, not sure if it comes in a 'full' installation. After installation, type 'Modules' on the cmdline, and a GUI pops open with all installed modules. Clicking on the 'Help' button reveals that it needs to be installed (see screenshot).matlab_modules.PNG
Also, 'which' returns the following:
>> which -all modules
C:\Users\peprasad.ASML-COM\AppData\Roaming\MathWorks\MATLAB\ModulesCache\732E09B121C82C10\R2018_10_02\Modules\Modules.m
so from the modules cache.
Hope that helps,
--Peeyush

Categorías

Más información sobre Search Path en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by