Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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 dir()需要永远运行_Matlab_Dir - Fatal编程技术网

Matlab dir()需要永远运行

Matlab dir()需要永远运行,matlab,dir,Matlab,Dir,我在一个有500000个文件的目录中使用“dir”命令。它已经运行了15分钟了 有没有办法加快速度?也许是另一个命令 提前感谢, Gil.如果您只需要文件名,请尝试files=ls。根据帮助,我相信应该可以在任何操作系统上工作。在您的案例中花费这么长时间的原因是它正在计算每个文件的文件大小、修改日期等。我知道这是一篇旧文章,但是 我想指出的是,如果您决定使用“ls”函数(与“dir”相反),那么在Unix和Windows操作系统中的行为略有不同,因此请注意这一点 例如,考虑以下内容: a=ls

我在一个有500000个文件的目录中使用“dir”命令。它已经运行了15分钟了

有没有办法加快速度?也许是另一个命令

提前感谢,


Gil.

如果您只需要文件名,请尝试
files=ls。根据帮助,我相信应该可以在任何操作系统上工作。在您的案例中花费这么长时间的原因是它正在计算每个文件的文件大小、修改日期等。

我知道这是一篇旧文章,但是

我想指出的是,如果您决定使用“ls”函数(与“dir”相反),那么在Unix和Windows操作系统中的行为略有不同,因此请注意这一点

例如,考虑以下内容:

a=ls
在Unix中,上面的命令将生成一个包含工作目录内容的1xM数组(char类型)

在Windows中,它将生成一个包含目录内容的NxM数组(char类型),其中N等于工作目录中的文件和目录数,M是最长文件(或目录)名称的字符长度

“dir”是可移植的,在Unix和Windows FME中的行为相同


由于这个原因,我在过去(特别是CentOS 6.2)在Windows和Unix之间移植MATLAB代码时遇到了一些小困难。

尝试使用
[~,files]=system('ls')
[~,files]=system('dir')
,检查它们是否更快。您使用的是什么操作系统?谢谢您的帮助@他说的对。我的猜测是,这种差异可以追溯到Matlab的旧时代,当时几乎所有字符串都像矩阵一样处理,带有额外的填充空间(不好玩)。我认为,将Windows上的
ls
的输出转换为UNIX系统上的格式的一种简单方法是:
a=cellstr(ls)
sprintf('%s\n',a{:})
。这甚至可以在UNIX机器上使用
ls
——至少在OS X 10.9.4和最新的Matlab上是这样。