Matlab使用变量中的filepath进行文本读取
我无法让这段代码正常工作Matlab使用变量中的filepath进行文本读取,matlab,Matlab,我无法让这段代码正常工作 for i = 1:length(names) distrfile = ls(strcat('./sample_distributions/sample-distribution_',names{i}(6:end),'*.csv')); [threadlength, frequency] = textread(distrfile,'%d %d', 'delimiter', ','); end 我为DistribFile获取的值不是空的,也没有引用不存在的文件。我也
for i = 1:length(names)
distrfile = ls(strcat('./sample_distributions/sample-distribution_',names{i}(6:end),'*.csv'));
[threadlength, frequency] = textread(distrfile,'%d %d', 'delimiter', ',');
end
我为DistribFile获取的值不是空的,也没有引用不存在的文件。我也在正确的工作目录中。如果我手动将distrfile的值粘贴到代码中,如
[threadlength, frequency] = textread('distribution_44_start_50_end_100.csv','%d %d', 'delimiter', ',');
然后它就开始工作了。然而,我不知道我的Distfile变量中包含什么对象字符串或任何东西,因为我从未使用过matlab。我只能保证此变量的控制台输出指向确实存在的文件,但我得到以下错误:
???在167处使用==>textread时出错
找不到文件
错误==>65处的线程SPlot
[threadlength,frequency]=文本读取(分发文件,'%d%d','delimiter',
','); 看起来像是通过MATLAB执行的
ls
命令返回一个char
值,在文件的末尾加上一个空格。尝试以下操作(在使用textread读取之前丢弃最后一个空字符):
这可能是由MATLAB在ls
内部调用unix
命令引起的:
[~,file_name] = unix(['ls', file_name]);
您也可以使用dir
,而不是ls
,并使用结果结构的.name
字段获取文件名:
distrfile = dir(file_name);
[threadlength, frequency] = textread(distrfile.name,'%d %d', 'delimiter', ',');
注意:除此之外,您还可以将
文件名
直接传递到文本读取
(无需ls
,因为您的外部循环在每次迭代时都会索引一个已知的文件名
) 万分感谢!!!我怀疑它的结尾包含一个换行符,但不是一个空格……请注意:文件名还不完全清楚。它可以在*字符表示的部分中变化
distrfile = dir(file_name);
[threadlength, frequency] = textread(distrfile.name,'%d %d', 'delimiter', ',');