我有一个包含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
答案 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)