もう1つの回避策。 myinput(下記参照)を定義し、の入力を置き換えるために、どこでも使用します。私の他の回避策と同じように、プログラムに2つの余分な入力パラメータを与えます:インタラクティブ/バッチ実行のフラグ(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
私は以下の2つの回避策を用意していますが、回答がある場合はそれでも解決します。 – dmm
注:Matlab v5では、それぞれfscanfとfprintfを使用して、それぞれキーボードとスクリーンのファイル識別子として0と1を使用できるという証拠が見つかりました。だから私は狂っていない。私は以前から私が求めていることをすることができた。 – dmm
注:私はWindows OS(7)で作業しています。 – dmm