Matlab 如何使用textscan导入具有选定列的多个csv文件?
我有大量的csv文件要处理。我只想在每个文件中选择列,然后从某个文件夹加载所有文件,然后作为一个组合文件输出。以下是我的代码运行时出现的错误。。。。有人能帮我解决这个问题吗Matlab 如何使用textscan导入具有选定列的多个csv文件?,matlab,csv,textscan,Matlab,Csv,Textscan,我有大量的csv文件要处理。我只想在每个文件中选择列,然后从某个文件夹加载所有文件,然后作为一个组合文件输出。以下是我的代码运行时出现的错误。。。。有人能帮我解决这个问题吗 data_directory = 'C:\Users\...\data'; numfiles = 17; for n = 1:numfiles filepath = [data_directory,'data_', num2str(n),'_output.csv']; fid = fopen (filepat
data_directory = 'C:\Users\...\data';
numfiles = 17;
for n = 1:numfiles
filepath = [data_directory,'data_', num2str(n),'_output.csv'];
fid = fopen (filepath, 'rt');
wanted_columns= [2 3 4 5 10 11 12 13 14 15 16 17 35 36 41 42 44 45 59 61];
format = [];
columns = 109;
for i = 1 : columns;
if any (i == wanted_columns)
format = [format '%s'];
else
format = [format '%*s'];
end
end
data = textscan(fid, format, 'Delimiter',',','HeaderLines',1);
fclose(fid);
end
我想你应该检查一下文件是否被正确打开。错误消息似乎表明情况并非如此。如果不是,请检查
文件路径是否正确
fid = fopen (filepath, 'rt');
if fid == -1
error('Failed to open file');
end
如果在这里抛出错误,您就知道'fopen'
有问题
当然,我不知道您的计算机上有哪些文件,但我假设文件名中的“…”
不在实际的matlab文件中,只是在您的问题中。
但是可能是您重复了单词'data'
,而实际的文件名只包含'data'
一次吗?您现在编写的代码将生成类似于“'C:\Users\…\datadata\u 1\u output.csv'
”的文件名。也许应该在数据\u目录
或文件路径=…
?以下是另一种以矢量化方式设置格式字符串的方法:
fcell = repmat({'%*s '},1,n_columns);
fcell(wanted_columns) = {'%s '};
formatstr = [fcell{:}];
注意format
是MATLAB中的内置函数,最好不要用于变量名 您得到的错误是什么?@ThijsW错误是:???使用==>文本扫描无效文件标识符时出错。使用fopen生成有效的文件标识符。错误==>数据导入失败,16个数据=textscan(fid,格式,'分隔符',','标题行',1);嗨,这很有帮助。我改变了所有可能引起混乱的重复单词,现在可以了。非常感谢--Jackiec我可以再问一个关于如何继续将数据集作为一个文件输出的问题吗?谢谢你的帮助。以前没有看到你的评论。请走开。也许最好在这个网站上创建一个新的问题,保持事物的整洁。