varargin
いくつかの異なる形式で入力を使用する方法はありますか? 入力を構造体の名前にしたいのですが、セル配列または構造体配列を受け入れないvarargin
に渡すことも必要です。fprintf
次のような関数がある場合:
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 に渡されることを許可する必要があります。