Matlab:使用matlab GUI计算文件夹中的图像

时间:2016-05-25 13:02:19

标签: matlab

我想使用Matlab指南2015b中创建的GUI计算文件夹中的图像数量。 我写了这段代码:

Id = 3 (actually the value of id will be given by user at          run time)
path =strcat ( ' c:\user\Desktop\New\TrainData\',Id)
path=strcat  (path,'\')
d=dir (path)
n=length (d)

它显示dir不能用于单元格输入的错误。当我使用命令提示符时,此代码正在运行。 它仅在我想通过GUI使用时显示错误。最初我认为这是关于路径的问题。 所以我展示了路径,但它给出了完美的结果。 我很迷惑。请在Matlab中提供一些解决方案

2 个答案:

答案 0 :(得分:1)

而不是strcat,您应该使用fullfile

path = fullfile('c:\user\Desktop\New\TrainData',num2str(Id))

小心dir,dir还列出子文件夹,所以检查你是否只考虑了图像文件:

d    = dir(path);
name = d(~[d.isdir]).name 

答案 1 :(得分:1)

您有可能从Id或其他内容获取inputdlg变量。它被作为字符串单元数组而不是字符串读入。您可以使用iscell

进行检查
iscell(Id)
%   1

在点击dir命令之前,您没有看到任何问题,因为strcat能够正常处理此问题,但会产生字符串的单元格数组。

out = strcat('123', {'4'});
class(out)
%   cell

如果您彻底阅读了错误消息,则错误会明确指出dir的输入是单元格而不是字符串。解决此问题的方法是首先检查Id是否为单元格数组,并在必要时转换为字符串。

Id = inputdlg('Enter an ID');

% Convert to a string if Id is a cell array
if iscell(Id)
    Id = Id{1};
end

% Get a listing of all files/directories
d = dir(fullfile(folder, num2str(I)));

% Get number of files
nFiles = sum(~[d.isdir]);

此外,您不希望尝试将数字与字符串(strcat('abc', 1))连接起来,因为这会将数字转换为它的ASCII代码。相反,您需要使用num2str,如上所示。