Matlab 如果文件不';不存在?

Matlab 如果文件不';不存在?,matlab,import,Matlab,Import,tarfilename包含需要导入的所有文件的名称。某些文件可能不存在。如何跳过不存在的文件,使循环不会因此错误而停止: Error using imread (line 349) File "C:\Users\xyz.tif" does not exist. 代码: 如果存在(名称为“文件”)如果存在文件,则返回2;如果存在文件夹,则返回7 很抱歉,目前没有matlab可以为您编写和测试完整的代码 我想应该是这样的: for m = 1:length(tarFileNames) if

tarfilename包含需要导入的所有文件的名称。某些文件可能不存在。如何跳过不存在的文件,使循环不会因此错误而停止:

Error using imread (line 349)
File "C:\Users\xyz.tif" does not exist.
代码:

如果存在(名称为“文件”)
如果存在文件,则返回2;如果存在文件夹,则返回7

很抱歉,目前没有matlab可以为您编写和测试完整的代码

我想应该是这样的:

for m = 1:length(tarFileNames)
    if exists(tarFileNames{m}, 'file')
       tarConus = imread(tarFileNames{m});
       tarConus(end,:) = []; % Dropping last col and row from each page 
       tarConus(:,end) = [];
       tarAccum = plus(tarConus(select),tarAccum); 
    else
    end
end

您可以使用检查文件是否存在。请确保指定第二个输入参数,该参数指定只查找该名称的文件

%// Determine all of the files that don't exist.
doesExist = cellfun(@(x)exist(x, 'file') == 2, tarFileNames);

%// File which do not exist
invalidNames = tarFileNames(~doesExist);

%// File which do exist
validNames = tarFileNames(doesExist);

%// Only loop through the ones that do exist
for m = 1:numel(validNames)     
    tarConus = imread(validNames{m});
    tarConus(end,:) = []; % Dropping last col and row from each page 
    tarConus(:,end) = [];
    tarAccum = plus(tarConus(select),tarAccum); 
end
exist()
可以检查文件是否存在。这应该做到:

for m = 1:length(tarFileNames)
    if exist(tarFileNames{m}, 'file')
        tarConus = imread(tarFileNames{m});
        tarConus(end,:) = []; % Dropping last col and row from each page 
        tarConus(:,end) = [];
        tarAccum = plus(tarConus(select),tarAccum);
    end 
end

谢谢如何获取已跳过的文件列表?您可以使用
else
语句(在第一个
end
之前)将当前的
tarFileNames{m}
字符串存储到单元格或类似内容中。谢谢!我猜这在计算上比下面的解决方案更有效(这对我来说很重要,因为数据集很大)?另外,我可以得到一个被跳过的文件列表吗?@maximudooku更新。
for m = 1:length(tarFileNames)
    if exist(tarFileNames{m}, 'file')
        tarConus = imread(tarFileNames{m});
        tarConus(end,:) = []; % Dropping last col and row from each page 
        tarConus(:,end) = [];
        tarAccum = plus(tarConus(select),tarAccum);
    end 
end