Matlab:引用一组m文件中的函数

时间:2017-02-12 11:05:58

标签: matlab image-processing

我有一个包含n个m文件(cI_0001.m,cI_0002.m,...)的目录,用于定义每个应该用于图像转换的复杂函数,其中包含以下类型:

conformal = maketform('custom', 2, 2, [], @cI_0001, []);
T = imtransform(C, conformal, ...);

在最简单的情况下,我想要一个循环,将imtransform应用于所有给定函数的图像C.所以我为没有扩展名的m文件名(m_name_list)创建了一个单元格数组,我想我需要在maketform()中使用一种指针来指定m_name_list中的元素。如何正确制定?

for i=1:n
   conformal = maketform('custom', 2, 2, [], @pointer_to_the_ith_element_in_m_name_list, []);
   T = imtransform(C, conformal, ...);
   imwrite(T, ...);
end

我在How to set function arguments to execute different set of m-files中看到了提案,但这似乎与使用maketform()中的函数无关。

编辑:我包含一个包含函数名称+扩展名的列表,可以在其中创建指针(可能扩展到路径列表+名称):

m_dir_entries = dir(strcat(CM_inverse_folder_path, '*.m'));
m_name_list   = cell(1,length(m_dir_entries));
for k=1:length(m_dir_entries)
  m_name_list{k} = m_dir_entries(k).name; 
end

1 个答案:

答案 0 :(得分:1)

您可以使用str2func为每个.m文件创建一个函数句柄

% Add the folder to your path
addpath(CM_inverse_folder_path)

function_list = {'cI_0001.m', 'cI_0002.m'};

% Remove the extensions
[~, function_list] = cellfun(@fileparts, function_list, 'UniformOutput', false);

for k = 1:n
    func = str2func(function_list{k});
    conformal = maketform('custom', 2, 2, [], func, []);
    T = imtransform(C, conformal, ...);
    imwrite(T, ...);
end

% Remove the folder from the path
rmpath(CM_inverse_folder_path)