使用 dir 和 fullfile 创建一个有效的文件名

Creating a valid filename with dir and fullfile

我在我的代码中保留 运行 这个错误:

Path = 'C:\Users606\OneDrive\Documents\Spheroids For Brandon\Spheroids-8WT';
Content = dir(Path); 
SubFold = Content([Content.isdir]); % Keep only the directories
MyData = []; 
for k = 3:length(SubFold)
    F = fullfile(Path, SubFold(k).name);
    fileID = fopen(F);
    MyData{end+1} = fopen(fileID,'%s\n');
    fclose(fileID);

导致错误:

Error using fopen
Invalid filename (line 8)

该代码试图遍历 main 的多个子文件夹中的多个图像。目标是为每个文件使用边缘检测算法处理图像,但这不是重点。为什么在代码中指定了路径、内容和子文件夹时,程序会给出一个无效的文件名?提到的变量与错误有什么关系吗?最后,有没有更好的迭代打开和读取图像的方法?

按顺序读取文件确实通常是通过循环 dir() 调用来完成的,即您的策略是有效的。这里出了什么问题, Path 是目录路径,而不是文件路径。 SubFold 然后只有 目录 ,因为它们在 Path 上找到。 fullfile(Path, SubFold(k).name) 最终创建了 Path 的子目录的路径。子目录不是文件,因此 fopen 会告诉您这是一个不正确的文件名。

您可能需要另一个 dir() 电话,例如dir(F) 获取 F.

指定路径上的所有 文件