有没有办法以varargin
几种不同的形式使用输入。我希望varargin
输入成为结构的名称,但我也希望将其传递到fprintf
不接受单元格或结构数组的 a 中。如果我有这样的功能:
function[] = myfunc(varargin)
for k = varargin
for m = 'ABC'
for n = 1:10
varname = sprintf('%c%d',m,n);
filename = sprintf('Images\\%s',varname);
fprintf('Take measurement %s for %s\n',k,varname);
image = imread(fullfile(filename));
pause
cursor_info = evalin('base','cursor_info');
p1 = cursor_info(2).Position
p2 = cursor_info(1).Position
[d,s] = measure(p1,p2) %measure is a separate function in my directory
k.(varname) = [d,s]
end
end
save('Distances,'k','-append')
end
我的函数用于分析几张图片,因此是 ABC 和 1:10 for 循环。如果我使用“M1”、“M2”、“M3”的输入调用该函数,我希望该函数以 A1、B1、C1 - A10、B10、C10 作为字段名称创建结构 M1、M2 和 M3 . [d,s] 将是通过imagesc
GUI 和功能找到的每个字段中保存的数据measure
。
问题是,在循环迭代中,我希望将 varargin 输入输入到 fprintf 中,并且我还希望 varargin 输入成为结构名称。我可以编辑代码,以便 fprintf 使用函数接受输入char
。但是是否可以将函数中的输入变成结构的名称来填充数据?如果是这样,解决方案仍然必须允许将迭代器 k 传递给 fprintf。