我是matlab的新手,并编写了以下代码:
datadir=('/.../prod/balanceSheet/DB/');
seriesnames = {'a.m','b.m','c.m','d.m','f.m','g.m','h.m','i.m'};
for proj=1:5;
database='';
switch proj
case 1
database=strcat(datadir,'scenario1');
case 2
database=strcat(datadir,'scenario2');
case 3
database=strcat(datadir,'scenario3');
case 4
database=strcat(datadir,'scenario4');
case 5
database=strcat(datadir,'scenario5');
end;
database;
gooddatanames={};
a=length(seriesnames);
for i=1:a
gooddatanames={gooddatanames,database,seriesnames(i)};
end
end
这是我第一次使用开关。基本上我要做的是从数据库中获取系列(1,2,3,...),以便所有系列都适用于所有场景。我错过了提取数据的函数,但上面的代码是否正在执行?
答案 0 :(得分:1)
变化:
gooddatanames={gooddatanames,database,seriesnames(i)};
到
gooddatanames={gooddatanames{:},database,seriesnames{i}};
并将gooddatanames = {}
移到循环之外,然后执行我认为您期望的操作,即生成具有交替文件夹和文件名的1x80单元阵列。
更有可能的是,进行一些更改,例如:
datadir=('/.../prod/balanceSheet/DB/');
seriesnames = {'a.m','b.m','c.m','d.m','f.m','g.m','h.m','i.m'};
gooddatanames={};
for proj=1:5;
database='';
switch proj
case 1
database=fullfile(datadir,'scenario1');
case 2
database=fullfile(datadir,'scenario2');
case 3
database=fullfile(datadir,'scenario3');
case 4
database=fullfile(datadir,'scenario4');
case 5
database=fullfile(datadir,'scenario5');
end;
for i=1:length(seriesnames);
gooddatanames{end+1} = fullfile(database,seriesnames{i});
end
end
导致单个文件的1x40完整路径数组。
答案 1 :(得分:0)
我同意Pursuit所写的内容,但我想补充一点,你的for / switch结构有点傻。如果您有效地必须枚举所有这些,就像您在实现它时使用'switch'一样,没有理由不完全取出for / switch循环而只留下命令。一种可能的替代方案是用以下内容替换整个不必要的“开关”:
database = fullfile(datadir, ['scenario', num2str(proj)]);