Matlab:如何使用变量名称的名称打开几个.txt文件

时间:2016-07-05 15:28:34

标签: matlab

我有两个{2}的.txt个文件,我想导入并使用第二列进行后续操作。我的文本文件的名称为:profileA1.txtprofileA2.txt等...我的变量对应于第二列的数据在后续代码中命名为A1A2A3等......

代码有效但目前我必须使用导入数据向导手动打开每个.txt文件,更改第二列的名称并单击导入选择。我试着写一个代码(见下文)来自动化这些步骤,但它不起作用?任何人都有任何想法修复此代码?

由于

for k = 1:5
     myfilename = sprintf('profileA%d.txt', k);
     mydata = importdata(myfilename);
     Aloop = ['A' num2str(k)];
     A{k} = load(myfilename.data(:,2), k);
end

1 个答案:

答案 0 :(得分:0)

你的例子有点偏,因为你将myfilename从一个字符数组转换为一个神奇的结构。我会通过将整个文本文件读入字符单元格数组然后使用cellfuntextscan来读取列来实现此目的。像这样:

function C = ReadTextFile(infile)
if (exist(infile, 'file') ~= 2)
    error('ReadTextFile:INFILE','Unknown file: %s.\n', infile);
end

fid = fopen(infile, 'r');
C = textscan(fid, '%s', 'delimiter','\n');
C = C{1};
fclose(fid);

end

% assign an output file
outFile = 'SomeRandomFile.mat';

for k = 1:5
    C = ReadTextFile(sprintf(‘profileA%d.txt’, k));
    val = cell2mat(cellfun(@(x) textscan(x, '%*f %f','CollectOutput',1),C));
    varName = sprintf('A%d', k);        
    assignin('base', varName, val);
    save(outFile, varName, '-append')
end

你可以先将整个阅读作为一个字符数组跳过,但我已经有了这个功能,所以我只是重复使用它。