我有两组文件:
Set 1:{reactant.1.h.txt,reactant.2.h.txt,reactant.3.h.txt}
第2集:{no2conc.txt,so2conc.txt,coconc.txt}
我可以使用
打开每一个reactanct_1 = fopen('reactant.1.h.txt','r');
no2_conc = fopen('no2conc.txt','r');
第1组中的“1”,“2”和“3”实际上是指第2组中的NO2,SO2和CO。
我想编写一个函数,如果我在函数中输入NO2,它将打开两组中的两个特定文件。
所以,我设计为:
function openfile(chemical)
switch chemical
case NO2
id = 1; % for the use of set 1
string = 'no2'; % for the use of set2
case SO2
id = 2; % for the use of set 1
string = 'so2'; % for the use of set2
case CO
id = 2; % for the use of set 1
string = 'co'; % for the use of set2
end
但是,我试用了%d指的是我的化学品ID而$ s指的是化学名称:
reactanct = fopen('reactant.%d.h.txt', id, 'r');
conc = fopen('%sconc.txt', string,'r');
但是matlab会给我Error using fopen
。
感谢您的帮助。
答案 0 :(得分:1)
问题在于您如何将文件名传递给fopen
。从the documentation开始,fopen
的(可选)第二个输入需要是文件访问类型,在此您可以将其定义为化学ID和化学名称。
您应该可以通过sprintf
调用来解决此问题,以生成您的文件名:
function openfile(chemical)
switch chemical
case NO2
id = 1; % for the use of set 1
mychem = 'no2'; % for the use of set2
case SO2
id = 2; % for the use of set 1
mychem = 'so2'; % for the use of set2
case CO
id = 2; % for the use of set 1
mychem = 'co'; % for the use of set2
end
reactanct = fopen(sprintf('reactant.%d.h.txt', id), 'r');
conc = fopen(sprintf('%sconc.txt', mychem), 'r');