我有两个{2}的.txt
个文件,我想导入并使用第二列进行后续操作。我的文本文件的名称为:profileA1.txt
,profileA2.txt
等...我的变量对应于第二列的数据在后续代码中命名为A1
,A2
,A3
等......
代码有效但目前我必须使用导入数据向导手动打开每个.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
答案 0 :(得分:0)
你的例子有点偏,因为你将myfilename
从一个字符数组转换为一个神奇的结构。我会通过将整个文本文件读入字符单元格数组然后使用cellfun
和textscan
来读取列来实现此目的。像这样:
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
你可以先将整个阅读作为一个字符数组跳过,但我已经有了这个功能,所以我只是重复使用它。