另一個解決方法。定義我的輸入(見下文),並用它來替代輸入。正如在我的另一個解決方法中,您爲程序提供了兩個額外的輸入參數:交互式/批處理運行標誌(FlagBatch)和批處理文件名(BatchName)的字符串。也有
if FlagBatch==1, fid=open(BatchName); end
附近的程序頂部。當你有很多分散在程序(和各種子程序/函數)的輸入語句時,這種方法很好。
function A=myinput(fileID,prompt,formatSpec,sizeA)
% A=myinput(fileID,prompt,formatSpec);
% Function myinput will read from either stdin (keyboard) or from a file,
% allowing programs' inputs to be entered interactively or from a file.
% Use it instead of Matlab's built-in functions input and fscanf.
% fileID = file ID (fid) of the opened file, or 0 for keyboard input.
% prompt = the prompt string (not used for file input)
% formatSpec = string containing Matlab format spec;
% not used for keyboard input
% sizeA = size of A; basically specifies how many times to use formatSpec;
% not used for keyboard input
%
% Example Uses in Program (where fid would have been set earlier):
% NumOrcs=myinput(fid,'Enter # of orcs','%i',1);
% MapFile=myinput(fid,'Enter filename for LotR map','s',1);
% [Sgimli,Slegolas]=myinput(fid,'Strengths of Gimli and Legolas?','%g',2);
%
if fileID==0
if formatSpec=='%s'
A=input(prompt,'s');
else
A=input(prompt);
end
else
A = fscanf(fileID,formatSpec, sizeA);
end
return
來源
2017-06-15 20:47:28
dmm
我有兩個解決方法在下面,但仍然喜歡答案,如果存在。 – dmm
注意:我發現在Matlab v5中可以分別使用0和1作爲鍵盤和屏幕的文件標識符,分別使用fscanf和fprintf。所以我沒有瘋狂;我曾經能夠做我想問的事情。 – dmm
另請注意:我正在使用Windows操作系統(7)。 – dmm