nex_ts.m 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. function [n, ts] = nex_ts(filename, varname)
  2. % nex_ts(filename, varname): Read timestamps from a .nex file
  3. %
  4. % [n, ts] = nex_ts(filename, varname)
  5. %
  6. % INPUT:
  7. % filename - if empty string, will use File Open dialog
  8. % varname - variable name
  9. % OUTPUT:
  10. % n - number of timestamps
  11. % ts - array of timestamps (in seconds)
  12. n = 0;
  13. ts = 0;
  14. if(nargin ~= 2)
  15. disp('2 input arguments are required')
  16. return
  17. end
  18. if(ischar(filename) == 0)
  19. disp('input arguments should be character arrays')
  20. return
  21. end
  22. if(ischar(varname) == 0)
  23. disp('input arguments should be character arrays')
  24. return
  25. end
  26. if(isempty(filename))
  27. [fname, pathname] = uigetfile('*.nex', 'Select a Nex file');
  28. filename = strcat(pathname, fname);
  29. end
  30. fid = fopen(filename, 'r');
  31. if(fid == -1)
  32. disp('cannot open file');
  33. return
  34. end
  35. disp(strcat('file = ', filename));
  36. magic = fread(fid, 1, 'int32');
  37. version = fread(fid, 1, 'int32');
  38. comment = fread(fid, 256, 'char');
  39. freq = fread(fid, 1, 'double');
  40. tbeg = fread(fid, 1, 'int32');
  41. tend = fread(fid, 1, 'int32');
  42. nvar = fread(fid, 1, 'int32');
  43. fseek(fid, 260, 'cof');
  44. name = zeros(1, 64);
  45. found = 0;
  46. for i=1:nvar
  47. type = fread(fid, 1, 'int32');
  48. var_version = fread(fid, 1, 'int32');
  49. name = fread(fid, [1 64], 'char');
  50. offset = fread(fid, 1, 'int32');
  51. n = fread(fid, 1, 'int32');
  52. name = char(name);
  53. name = deblank(name);
  54. k = strcmp(name, deblank(varname));
  55. if(k == 1)
  56. found = 1;
  57. fseek(fid, offset, 'bof');
  58. ts = fread(fid, [1 n], 'int32');
  59. break
  60. end
  61. dummy = fread(fid, 128, 'char');
  62. end
  63. fclose(fid);
  64. if found == 0
  65. disp('did not find variable in the file');
  66. else
  67. ts = ts/freq;
  68. disp(strcat('number of timestamps = ', num2str(n)));
  69. end