方法を見つけましたが、最善ではありません。元のハンドルを取得するには、パスを変更して一度戻る必要がありますopenvar
function openvar(name,array)
persistent org_openvar
if isempty(org_openvar)
curdir=pwd;
cd(fullfile(matlabroot,'toolbox/matlab/codetools'));
org_openvar = @openvar;
cd(curdir);
end
if numel(array)>1e5
if strcmp(questdlg(sprintf('Opening ''%s'' which has %d elements.\n\nAre you sure? This is gonna take a while!',name,numel(array)), ...
'Variable editor','Yes','Cancel','Cancel') , 'Yes')
org_openvar(name,array)
end
else
org_openvar(name,array)
end
end
そのハンドルを取得することが最大の問題です。それを呼び出すことは問題ありません。組み込みの場合は、関数builtinopenvar
を使用できます。
builtin('openvar',name,array)
しかし、残念ながらそうではありません:(完全なパスと組み合わせた
str2funcも機能しません。少なくとも私はそれを機能させません...