?? getfiletype.m
字號:
function [HDR] = getfiletype(arg1)
% GETFILETYPE get file type
%
% HDR = getfiletype(Filename);
% HDR = getfiletype(HDR.FileName);
%
% HDR is the Header struct and contains stuff used by SOPEN.
% HDR.TYPE identifies the type of the file [1,2].
%
% see also: SOPEN
%
% Reference(s):
% [1] http://www.dpmi.tu-graz.ac.at/~schloegl/matlab/eeg/
% [2] http://www.dpmi.tu-graz.ac.at/~schloegl/biosig/TESTED
% 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.
% $Revision: 1.4 $
% $Id: getfiletype.m,v 1.4 2004/09/13 17:27:27 schloegl Exp $
% (C) 2004 by Alois Schloegl <a.schloegl@ieee.org>
% This is part of the BIOSIG-toolbox http://biosig.sf.net/
if ~isstruct(arg1),
HDR.FileName = arg1;
[pfad,file,FileExt] = fileparts(HDR.FileName);
HDR.FILE.Name = file;
HDR.FILE.Path = pfad;
HDR.FILE.Ext = FileExt(2:length(FileExt));
else
HDR = arg1;
end;
if ~isfield(HDR.FILE,'stderr'),
HDR.FILE.stderr = 2;
end;
if ~isfield(HDR.FILE,'stdout'),
HDR.FILE.stdout = 1;
end;
HDR.TYPE = 'unknown';
if exist(HDR.FileName,'dir') & strcmpi(HDR.FILE.Ext,'ds'), % .. & isdir(HDR.FileName)
f1 = fullfile(HDR.FileName,[HDR.FILE.Name,'.meg4']);
f2 = fullfile(HDR.FileName,[HDR.FILE.Name,'.res4']);
if (exist(f1)==2) & (exist(f2)==2), % & (exist(f3)==2)
HDR.FILE.Path = HDR.FileName;
HDR.FILE.Ext = 'meg4';
HDR.FileName = f1;
end;
end;
fid = fopen(HDR.FileName,'rb','ieee-le');
if fid < 0,
if exist(HDR.FileName,'dir') % isdir(...)
else
fprintf(HDR.FILE.stderr,'Error GETFILETYPE: file %s not found.\n',HDR.FileName);
return;
end;
else
[s,c] = fread(fid,[1,132],'uchar');
if c < 132,
s = [s, repmat(0,1,132-c)];
end;
if c,
%%%% file type check based on magic numbers %%%
type_mat4=str2double(char(abs(sprintf('%04i',s(1:4)*[1;10;100;1000]))'));
ss = setstr(s);
if all(s(1:2)==[207,0]);
HDR.TYPE='BKR';
elseif strncmp(ss,'Version 3.0',11);
HDR.TYPE='CNT';
elseif strncmp(ss,'0 ',8);
HDR.TYPE='EDF';
elseif all(s(1:8)==[255,abs('BIOSEMI')]);
HDR.TYPE='BDF';
elseif strncmp(ss,'GDF',3);
HDR.TYPE='GDF';
elseif strncmp(ss,'EBS',3);
HDR.TYPE='EBS';
elseif strncmp(ss,'CEN',3) & all(s(6:8)==hex2dec(['1A';'04';'84'])') & (all(s(4:5)==hex2dec(['13';'10'])') | all(s(4:5)==hex2dec(['0D';'0A'])'));
HDR.TYPE='FEF';
HDR.VERSION = str2double(ss(9:16))/100;
HDR.Encoding = str2double(ss(17:24));
if any(str2double(ss(25:32))),
HDR.Endianity = 'ieee-be';
else
HDR.Endianity = 'ieee-le';
end;
if any(s(4:5)~=[13,10])
fprintf(2,'Warning GETFILETYPE (FEF): incorrect preamble in file %s\n',HDR.FileName);
end;
elseif strncmp(ss,'MEG41CP',7);
HDR.TYPE='CTF';
elseif strncmp(ss,'MEG41RS',7) | strncmp(ss,'MEG4RES',7);
HDR.TYPE='CTF';
elseif strncmp(ss,'MEG4',4);
HDR.TYPE='CTF';
elseif strncmp(ss,'CTF_MRI_FORMAT VER 2.2',22);
HDR.TYPE='CTF';
elseif strncmp(ss,'PATH OF DATASET:',16);
HDR.TYPE='CTF';
elseif strcmp(ss(1:8),'@ MFER ');
HDR.TYPE='MFER';
elseif strcmp(ss(1:6),'@ MFR ');
HDR.TYPE='MFER';
elseif all(s(17:22)==abs('SCPECG'));
HDR.TYPE='SCP';
elseif strncmp(ss,'ATES MEDICA SOFT',16); % ATES MEDICA SOFTWARE, NeuroTravel
HDR.TYPE='ATES';
elseif strncmp(ss,'POLY_SAM',8); % Poly5/TMS32 sample file format.
HDR.TYPE='TMS32';
elseif strncmp(ss,'"Snap-Master Data File"',23); % Snap-Master Data File .
HDR.TYPE='SMA';
elseif all(s([1:2,20])==[1,0,0]) & any(s(19)==[2,4]);
HDR.TYPE='TEAM'; % Nicolet TEAM file format
elseif strncmp(ss,HDR.FILE.Name,length(HDR.FILE.Name));
HDR.TYPE='MIT';
elseif strncmp(ss,'DEMG',4); % www.Delsys.com
HDR.TYPE='DEMG';
elseif strncmp(ss,'NEX1',4);
HDR.TYPE='NEX';
elseif strcmp(ss([1:4]),'fLaC');
HDR.TYPE='FLAC';
elseif strcmp(ss([1:4]),'OggS');
HDR.TYPE='OGG';
elseif strcmp(ss([1:4]),'.RMF');
HDR.TYPE='RMF';
elseif strncmp(ss,'.snd',4);
HDR.TYPE='SND';
HDR.Endianity = 'ieee-be';
elseif strncmp(ss,'dns.',4);
HDR.TYPE='SND';
HDR.Endianity = 'ieee-le';
elseif strcmp(ss([1:4,9:12]),'RIFFWAVE');
HDR.TYPE='WAV';
HDR.Endianity = 'ieee-le';
elseif strcmp(ss([1:4,9:11]),'FORMAIF');
HDR.TYPE='AIF';
HDR.Endianity = 'ieee-be';
elseif strcmp(ss([1:4,9:12]),'RIFFAVI ');
HDR.TYPE='AVI';
HDR.Endianity = 'ieee-le';
elseif ~isempty(findstr(ss(1:16),'8SVXVHDR'));
HDR.TYPE='8SVX';
elseif strcmp(ss([1:4,9:12]),'RIFFILBM');
HDR.TYPE='ILBM';
elseif strcmp(ss([1:4]),'2BIT');
HDR.TYPE='AVR';
elseif all(s([1:4])==[26,106,0,0]);
HDR.TYPE='ESPS';
HDR.Endianity = 'ieee-le';
elseif all(s([1:4])==[0,0,106,26]);
HDR.TYPE='ESPS';
HDR.Endianity = 'ieee-le';
elseif strcmp(ss([1:15]),'IMA_ADPCM_Sound');
HDR.TYPE='IMA ADPCM';
elseif all(s([1:8])==[abs('NIST_1A'),0]);
HDR.TYPE='NIST';
elseif all(s([1:7])==[abs('SOUND'),0,13]);
HDR.TYPE='SNDT';
elseif strcmp(ss([1:18]),'SOUND SAMPLE DATA ');
HDR.TYPE='SMP';
elseif strcmp(ss([1:19]),'Creative Voice File');
HDR.TYPE='VOC';
elseif strcmp(ss([5:8]),'moov'); % QuickTime movie
HDR.TYPE='QTFF';
elseif all(s(1:16)==hex2dec(reshape('3026b2758e66cf11a6d900aa0062ce6c',2,16)')')
%'75B22630668e11cfa6d900aa0062ce6c'
HDR.TYPE='ASF';
elseif strncmp(ss,'MPv4',4);
HDR.TYPE='MPv4';
HDR.Date = ss(65:87);
elseif strncmp(ss,'RG64',4);
HDR.TYPE='RG64';
elseif strncmp(ss,'DTDF',4);
HDR.TYPE='DDF';
elseif strncmp(ss,'RSRC',4);
HDR.TYPE='LABVIEW';
elseif strncmp(ss,'IAvSFo',6);
HDR.TYPE='SIGIF';
elseif any(s(4)==(2:7)) & all(s(1:3)==0); % [int32] 2...7
HDR.TYPE='EGI';
elseif all(s(1:4)==hex2dec(reshape('AFFEDADA',2,4)')'); % Walter Graphtek
HDR.TYPE='WG1';
HDR.Endianity = 'ieee-le';
elseif all(s(1:4)==hex2dec(reshape('DADAFEAF',2,4)')');
HDR.TYPE='WG1';
HDR.Endianity = 'ieee-be';
elseif strncmp(ss,'RIFF',4)
HDR.TYPE='EEProbe-CNT'; % continuous EEG in EEProbe format, ANT Software (NL) and MPI Leipzig (DE)
elseif all(s(1:4)==[38 0 16 0])
HDR.TYPE='EEProbe-AVR'; % averaged EEG in EEProbe format, ANT Software (NL) and MPI Leipzig (DE)
elseif strncmp(ss,'ISHNE1.0',8); % ISHNE Holter standard output file.
HDR.TYPE='ISHNE';
elseif strncmp(ss,'rhdE',4); % Holter Excel 2 file, not supported yet.
HDR.TYPE='rhdE';
elseif strncmp(ss,'RRI',3); % R-R interval format % Holter Excel 2 file, not supported yet.
HDR.TYPE='RRI';
elseif strncmp(ss,'Repo',4); % Repo Holter Excel 2 file, not supported yet.
HDR.TYPE='REPO';
elseif strncmp(ss,'Beat',4); % Beat file % Holter Excel 2 file, not supported yet.
HDR.TYPE='Beat';
elseif strncmp(ss,'Evnt',4); % Event file % Holter Excel 2 file, not supported yet.
HDR.TYPE='EVNT';
elseif strncmp(ss,'CFWB',4); % Chart For Windows Binary data, defined by ADInstruments.
HDR.TYPE='CFWB';
elseif any(s(3:6)*(2.^[0;8;16;24]) == (30:40))
HDR.VERSION = s(3:6)*(2.^[0;8;16;24]);
offset2 = s(7:10)*(2.^[0;8;16;24]);
if HDR.VERSION < 34, offset = 150;
elseif HDR.VERSION < 35, offset = 164;
elseif HDR.VERSION < 36, offset = 326;
elseif HDR.VERSION < 38, offset = 886;
else offset = 1894;
end;
if (offset==offset2),
HDR.TYPE = 'ACQ';
end;
elseif all(s(1:4) == hex2dec(['FD';'AE';'2D';'05'])');
HDR.TYPE='AKO';
elseif all(s(1:2)==[hex2dec('55'),hex2dec('AA')]);
HDR.TYPE='RDF';
elseif all(s(1:2)==[hex2dec('55'),hex2dec('3A')]); % little endian
HDR.TYPE='SEG2';
HDR.Endianity = 'ieee-le';
elseif all(s(1:2)==[hex2dec('3A'),hex2dec('55')]); % big endian
HDR.TYPE='SEG2';
HDR.Endianity = 'ieee-be';
elseif strncmp(ss,'MATLAB Data Acquisition File.',29); % Matlab Data Acquisition File
HDR.TYPE='DAQ';
elseif strncmp(ss,'MATLAB 5.0 MAT-file',19);
HDR.TYPE='MAT5';
fseek(fid,126,'bof');
tmp = fread(fid,1,'uint16');
if tmp==(abs('MI').*[256,1])
HDR.Endianity = 'ieee-le';
elseif tmp==(abs('IM').*[256,1])
HDR.Endianity = 'ieee-be';
end;
elseif any(s(1)==[49:51]) & all(s([2:4,6])==[0,50,0,0]) & any(s(5)==[49:50]),
HDR.TYPE = 'WFT'; % nicolet
elseif all(s(1:3)==[255,255,254]); % FREESURVER TRIANGLE_FILE_MAGIC_NUMBER
HDR.TYPE='FS3';
elseif all(s(1:3)==[255,255,255]); % FREESURVER QUAD_FILE_MAGIC_NUMBER or CURVATURE
HDR.TYPE='FS4';
elseif all(s(1:3)==[0,1,134]) & any(s(4)==[162:164]); % SCAN *.TRI file
HDR.TYPE='TRI';
elseif all((s(1:4)*(2.^[24;16;8;1]))==1229801286); % GE 5.X format image
HDR.TYPE='5.X';
elseif all(s(1:2)==[105,102]);
HDR.TYPE='669';
elseif all(s(1:2)==[234,96]);
HDR.TYPE='ARJ';
elseif s(1)==2;
HDR.TYPE='DB2';
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -