在matlab中将字符串变量作为文件名

Giving a string variable as a filename in matlab

我正在使用下面提到的代码根据图像的 id 从 images_1 文本文件中获取图像的文件名作为字符串,并使用它们从目录

中读取图像
image_count=1;
for image_count=1:6
    file=fopen('D:\Academics\New folder\CUB_200_2011\images_1.txt','r');
    C = textscan(file, '%s');
    original_image=imread('D:\Academics\New folder\CUB_200_2011\images\%s','C{1}{2*(image_count)}');
    imshow(original_image)
end

我可以获取文件名但无法使用它。 此代码显示以下错误-

'File "D:\Academics\New folder\CUB_200_2011\images\%s" does not exist.

我对matlab有点陌生,谁能帮帮我。

您需要将反斜杠 \ 更改为正斜杠 /,否则一些 \ 后跟一个字母可能是 sprintf 函数中的命令,例如 \N\a。有关详细信息,请参阅 formatSpec 区域中的 sprintf documentation

original_image=imread(sprintf('D:/Academics/New folder/CUB_200_2011/images/%s', C{1}{2*(image_count)}));

要连接部分文件路径,您必须使用 fullfile

 imread(fullfile('D:\Academics\New folder\CUB_200_2011\images\',C{1}{2*(image_count)}))

Strcat 是另一种选择,但 fullfile 负责在任何需要的地方使用一个文件分隔符。