「annotation」と呼ばれる変数の1つおよび組み込みのMATLAB関数「annotation」とMATLAB名が衝突しているようです。
私の関数では、変数アノテーションを含む.matファイルをロードしてから、それを別の関数の引数として使用しようとしています。最小限の作業例は次のようになります。
function test()
filenames = { 'file1.mat', 'file2.mat', 'file3.mat' };
for i = 1:numel(filenames)
in_file = char(filenames{i});
out_file = strrep(in_file, '.mat', '_out.mat');
prepare(out_file); % do something with the out file
load(out_file); % contains one variable named "annotation"
which annotation % just to be sure
other_function(annotation);
end
end
function prepare(filename)
annotation = rand(25, 1);
save(filename);
end
function other_function(annotation)
whos % just a stub - see whether it has been called
end
ここで、関数prepareで、ファイルに「annotation」という名前の変数が含まれていることを確認しました。これをメイン関数のループにロードすると、「which」コマンドはそれが変数として存在することを通知しますが、other_functionの呼び出しでは、MATLABは関数「annotation」を呼び出そうとします。
注釈は変数です。
??? 71で==>アノテーションを使用中にエラーが発生しました
入力引数が十分ではありません
==>14でのテストのエラー
other_function(annotation);
プログラムのいくつかの部分で変数名「annotation」を関数呼び出しのパラメーターとしても使用しているため、混乱しています。私が想像できる唯一の説明は、MATLABがどういうわけか私のコードをプリコンパイルするということです-「コンパイル時」では、変数「annotation」は表示されません。ただし、実行時には、「which」コマンドの出力からわかるように検出されます。
どんな助けでも大歓迎です!よろしくお願いします。
注:MATLAB 7.12.0(R2011a)を使用しています。