循环空文件时如何避免错误

时间:2014-04-22 16:34:29

标签: matlab matlab-figure

我有很多文件,有些文件是空的,但是当循环到空时,它会返回错误信息。如何避免这种情况,并在文件中没有任何内容时返回0。 这是我的代码,我想要满足两个条件,检查'A27_data'是否进入'data2',而某些'data2'文件是空的。

data2 = importdata(strcat('f9data\','f7_data', int2str(i)));
feature27_data=(cellfun(@(n) ~isempty(n), strfind(data2, A27_data)))

enter image description here

以下是我的完整代码,我已经检查了空文件。

data = importdata('DATA/URL/testing_URL')

domain_URL = regexp(data,'\w*://[^/]*','match','once')

[sizeData b] = size(domain_URL);

for i = 1:5

A27_data = domain_URL{i};

s =dir(strcat('f9data\','f7_data', int2str(i)));
if s.bytes == 0
    return 0;
else
    data2 = importdata(strcat('f9data\','f7_data', int2str(i)));
end;

feature27_data=(cellfun(@(n) ~isempty(n), strfind(data2, A27_data)))

B27(i)=sum(feature27_data)
end

feature27(B27>=10)=1;
feature27(B27<10&B27>5)=0;
feature27(B27<=5)=-1;

feature27'

1 个答案:

答案 0 :(得分:0)

基于this answer,这是怎么回事:

for i = 1:5

    A27_data = domain_URL{i};

    s = dir(strcat('f9data\','f7_data', int2str(i)));

    if s.bytes == 0
        B27(i) = NaN;
    else
        data2 = importdata(strcat('f9data\','f7_data', int2str(i)));
        feature27_data=(cellfun(@(n) ~isempty(n), strfind(data2, A27_data)));
        B27(i)=sum(feature27_data);

    end
end

在加载任何数据之前,请检查文件是否为空。如果是,请将NaN分配给B27(i)(或任何其他默认值)。如果文件实际包含数据,请对其执行处理。

修改
如果你不喜欢NaN,你可以做别的事情,例如:

B27(i) = 0;

修改2

  • 坚持使用B27(i) = NaN选项。
  • if / else循环后,插入此内容:

    if ~isnan(B27(i))
        B27(i) = data2
    end  
    
  • for - 循环之后,插入:

    B27(isnan(B27))=0;
    clear data2
    data2 = B27;