我有一段代碼在幾個例程中被重複,但是我無法做出它的功能,因爲它應該改變varargin的輸入。所以解決方案似乎將這段代碼放在一個m文件中,並在調用例程中提及該名稱。當我將代碼移動到一個文件並調用它時,所有變量都與代碼體完全一樣,但是在腳本返回錯誤後調用函數會返回錯誤:「Io many output arguments」when I把腳本放在正文中,這個錯誤不再顯示了!腳本導致錯誤
代碼:
function varargout=batchMean(@func,adrs,varargin)
% code I want to move to script file
grd=find(strcmp(varargin,'grid'));
grdfl=find(strcmp(varargin,'gridFile'));
if grd
% If grid is provided in the arguments
grid=varargin{grd+1};
varargin(grd:grd+1)=[];
elseif grdfl
grdFile=cellstr(ls([adrs varargin{grdfl+1} '*']));
varargin(grdfl:grdfl+1)=[];
if isempty(grdFile)
error('Hall_lab:batchAV:argin', ...
'Grid file mentioned in input could not be found');
end
[grid,err]=matRead([adrs grdFile{1}]);
if err
error('Hall_lab:batchAV:grid', ...
'Could not read grid file');
end
else
% Reading grid file
grdFile=cellstr(ls([adrs '*Grd.mat']));
if isempty(grdFile)
grdFile=cellstr(ls([adrs '*grd.mat']));
end
if length(grdFile)>1
error('Hall_lab:batchAV:fileSet', ...
'There is more than one file for grid');
elseif isempty(grdFile{:});
error('Hall_lab:batchAV:fileSet', ...
'There is no file for grid');
end
[grid,err]=matRead([adrs grdFile{:}]);
if err
error('Hall_lab:batchAV:grid', ...
'Could not read grid file');
end
files=setdiff(files,grdFile);
end
% end of code I want to move to script file
% calling the function
[varargout{1:outNums}]=func(grid,data,inf,varargin{:});
% actual function being called
function [ave]=meanPIV(~,data,~)
ave=mean(data,ndims(data));
end
你的代碼片段不是很清楚..什麼是func?什麼是meanpiv?你在哪裏使用batchmean? – lib
第一:如果你不理解它,你最好通過而不是downvoting。 1. func是一個函數處理函數, 2. meanPIV只是一個函數,如CLEARLY在代碼的末尾定義的。 3.你的問題與問題無關。 – anishtain4