⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdferror.m

📁 matlab数字信号处理工具箱
💻 M
字号:
function [EDF,status]=sdferror(EDF)
% Inquires EDF file error status 
% [EDF,status]=sdferror(EDF)
% 
% EDF.ErrNo-1024
%              1: ascii(0) in 1st header
%              2: ascii(0) in 2nd header
%              3: invalid gain (zero or infinity) 
%              4: invalid SPR
%              4: invalid samples_per_record-values
%              8: date not in EDF-format (tries to guess correct date, see also E2)
%             16: invalid number_of-channels-value
%             32: invalid value of the EDF header length
%             64: invalid value of block_duration
%            128: Polarity of #7 probably inverted  
%
% EDF.ErrNo    1: first 8 bytes different to '0       ', this violates the EDF spec.
%              2: Invalid date (unable to guess correct date)
%              4: Incorrect date information (later than actual date) 
%             16: incorrect filesize, Header information does not match actual size
% 
% See also: ferror, SDFREAD, SDFWRITE, SDFCLOSE, SDFSEEK, SDFREWIND, SDFTELL, SDFEOF
%

%
% This program is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 2
% of the License, or (at your option) any later version.
% 
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
% 
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.


%	Version 0.84
%	05 Mar 2002
%	Copyright (c) 1997-2002 by Alois Schloegl
%	a.schloegl@ieee.org	

% transformation of error codes from binary representation to a list
status=EDF.ErrNo;

if (EDF.T0(1)>EDF.AS.Date(1)) 
%        fprintf(EDF.FILE.stderr,'Warning %s: recording date %4i.%02i.%02i %02i:%02i:%02i is in the future or computer clock %4i.%02i.%02i %02i:%02i:%02i is not correct ''%s'' \n',upper(EDF.AS.Method),EDF.T0,EDF.AS.Date,EDF.FileName); 
end;
EDF.FILE.stderr=2;


if any(EDF.ErrNo==1)
        fprintf(EDF.FILE.stderr,'Error %s: Invalid or corrupted EDF/GDF file or invalid Version number ''%s''\n',upper(EDF.AS.Method),EDF.VERSION); 
        EDF.ErrNo(EDF.ErrNo==1)=[];
end;
if any(EDF.ErrNo==2)
        fprintf(EDF.FILE.stderr,'Error %s: Invalid recording date %4i.%02i.%02i %02i:%02i:%02i \n', upper(EDF.AS.Method),EDF.T0); 
        EDF.ErrNo(EDF.ErrNo==2)=[];
end;
if any(EDF.ErrNo==4)
        fprintf(EDF.FILE.stderr,'Error %s: Invalid recording date %4i.%02i.%02i %02i:%02i:%02i \n', upper(EDF.AS.Method),EDF.T0); 
        EDF.ErrNo(EDF.ErrNo==4)=[];
end;
if any(EDF.ErrNo==8)
        fprintf(EDF.FILE.stderr,'Error %s: unable to read header in %s\n',upper(EDF.AS.Method),EDF.FileName); 
        EDF.ErrNo(EDF.ErrNo==8)=[];
end;
if any(EDF.ErrNo==16)
        fprintf(EDF.FILE.stderr,'Warning %s: Incorrect HeaderInformation in "%s" does not fit to filesize\n',upper(EDF.AS.Method),EDF.FileName);
        fprintf(EDF.FILE.stderr,'endpos %i\tEDF.HeadLen %i\tEDF.NRec %i\tEDF.AS.bpb %i\tDIFF %f blocks\t\n',EDF.AS.endpos,EDF.HeadLen,EDF.NRec,EDF.AS.bpb,(EDF.AS.endpos-EDF.HeadLen)/EDF.AS.bpb-EDF.NRec);
        %fprintf(EDF.FILE.stderr,'Error %s: filesize doesnot fit to header information %s\n',upper(EDF.AS.Method),EDF.FileName); 
        EDF.NRec = floor((EDF.AS.endpos - EDF.HeadLen) / EDF.AS.bpb);
        EDF.ErrNo(EDF.ErrNo==16)=[];
end;
if any(EDF.ErrNo==32)
	fprintf(2,'Invalid Filename %s\n', FILENAME);
        EDF.ErrNo(EDF.ErrNo==32)=[];
end;
if any(EDF.ErrNo==64)
        fprintf(EDF.FILE.stderr,'Error %s-R: Fixed Header not read correctly (%i bytes read )\n',upper(EDF.AS.Method));
        EDF.ErrNo(EDF.ErrNo==64)=[];
end;

if any(EDF.ErrNo==1025)
        fprintf(EDF.FILE.stderr,'Warning %s: fixed Header in %s contains non-printable ASCII characters\n',upper(EDF.AS.Method),EDF.FileName); 
        EDF.ErrNo(EDF.ErrNo==1025)=[];
end;
if any(EDF.ErrNo==1026)
        fprintf(EDF.FILE.stderr,'Warning %s: variable Header in %s contains non-printable ASCII characters\n',upper(EDF.AS.Method),EDF.FileName); 
        EDF.ErrNo(EDF.ErrNo==1026)=[];
end;
if any(EDF.ErrNo==1027)
        fprintf(EDF.FILE.stderr, 'Warning SDFOPEN: invalid NRec-value in header of %s\n',EDF.FILE.Name);
        EDF.ErrNo(EDF.ErrNo==1027)=[];
end;
if any(EDF.ErrNo==1028)
        fprintf(EDF.FILE.stderr, 'Warning SDFOPEN: invalid SPR-value in header of %s\n',EDF.FILE.Name);
        EDF.ErrNo(EDF.ErrNo==1028)=[];
end;
if any(EDF.ErrNo==1029)
        fprintf(EDF.FILE.stderr, 'Warning SDFOPEN: invalid scaling factor(s), gain is zero in  %s\n',EDF.FILE.Name);
        EDF.ErrNo(EDF.ErrNo==1029)=[];
end;
if any(EDF.ErrNo==1030)
        fprintf(EDF.FILE.stderr, 'Warning SDFOPEN: invalid scaling factor(s), gain is infinity in  %s\n',EDF.FILE.Name);
        EDF.ErrNo(EDF.ErrNo==1030)=[];
end;
if any(EDF.ErrNo==1032)
        fprintf(EDF.FILE.stderr,'Warnig %s: Invalid recording date; guessed date/time is  %04i/%02i/%02i %02i:%02i:%02i \n', upper(EDF.AS.Method),EDF.T0); 
        EDF.ErrNo(EDF.ErrNo==1032)=[];
end;
if any(EDF.ErrNo==1040)
        fprintf(EDF.FILE.stderr,'Warning %s: Incorrect HeaderInformation in "%s" does not fit to filesize\n',upper(EDF.AS.Method),EDF.FileName);
        fprintf(EDF.FILE.stderr,'endpos %i\tEDF.HeadLen %i\tEDF.NRec %i\tEDF.AS.bpb %i\tDIFF %f blocks\t\n',endpos,EDF.HeadLen,EDF.NRec,EDF.AS.bpb,(endpos-EDF.HeadLen)/EDF.AS.bpb-EDF.NRec);
        EDF.ErrNo(EDF.ErrNo==1040)=[];
end;
if any(EDF.ErrNo==1056)
        fprintf(EDF.FILE.stderr, 'Warning SDFOPEN: invalid HeadLen-value in header of %s\n',EDF.FILE.Name);
        EDF.ErrNo(EDF.ErrNo==1056)=[];
end;
if any(EDF.ErrNo==1088)
        fprintf(EDF.FILE.stderr, 'Warning SDFOPEN: invalid Dur-value in header of %s\n',EDF.FILE.Name);
        EDF.ErrNo(EDF.ErrNo==1088)=[];
end;

while any(EDF.ErrNo) 
        fprintf(EDF.FILE.stderr, 'WARNING SDFOPEN: Unidentified error code %i in %s\n',EDF.ErrNo(1),EDF.FILE.Name);
	EDF.ErrNo=EDF.ErrNo(2:length(EDF.ErrNo));        
end;

return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -