打开具有不同选项的文件

时间:2015-07-29 17:58:09

标签: matlab file

我有两组文件:

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

感谢您的帮助。

1 个答案:

答案 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');