Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab使用变量中的filepath进行文本读取_Matlab - Fatal编程技术网

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', ',');