testMatFileIO.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /**
  2. * @file testMatFileIO.cpp
  3. * @brief
  4. * @author Paul Bodesheim
  5. * @date 06/01/2012 (dd-mm-yyyy)
  6. */
  7. #include <vector>
  8. #include <iostream>
  9. #include <stdlib.h>
  10. #include <stdarg.h>
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include <math.h>
  14. #ifdef NICE_USELIB_MATIO
  15. #include "core/matlabAccess/MatFileIO.h"
  16. using namespace NICE;
  17. #endif
  18. using namespace std;
  19. int main (int argc, char* argv[])
  20. {
  21. #ifdef NICE_USELIB_MATIO
  22. std::string filenameA = "/home/bodesheim/data/2012-01-09-testMatFileIO/sparse3x3matrixA.mat";
  23. #if defined(MAT73) && MAT73
  24. printf("\nMAT73 defined \n");
  25. #endif
  26. // A
  27. MatFileIO matfileIOA = MatFileIO(filenameA,MAT_ACC_RDONLY);
  28. printf("\n%d \n", matfileIOA.getNumberOfVariables());
  29. sparse_t sparseA;
  30. matfileIOA.getSparseVariableViaName(sparseA,"A");
  31. printf("\nget done\n");
  32. printf("\n%d\n", (int) sparseA.nzmax);
  33. printf("\n%d\n", (int) sparseA.ndata);
  34. for (uint i = 0; i < (int) sparseA.nzmax; i++) std::cout << ((double*)sparseA.data)[i]<< " ";
  35. std::cerr << std::endl;
  36. std::cerr << "now start reading imagenet-data" << std::endl;
  37. std::string filename = "/home/dbv/bilder/imagenet/devkit-1.0/demo/demo.train.mat";
  38. std::string variable1 = "training_instance_matrix";
  39. std::string variable2 = "training_label_vector";
  40. //
  41. // test matvar functions
  42. //
  43. mat_t * mat;
  44. matvar_t * matvar;
  45. mat = Mat_Open(filename.c_str(),MAT_ACC_RDONLY);
  46. matvar = Mat_VarReadNext(mat);
  47. while (matvar != NULL) {
  48. printf("dimension of variable: %i : ",matvar->rank);
  49. printf("%i ",*(matvar->dims));
  50. for (int i = 2; i<=matvar->rank; i++) {
  51. matvar->dims++;
  52. printf("x %i ",*(matvar->dims));
  53. }
  54. printf("\n");
  55. matvar = Mat_VarReadNext(mat);
  56. };
  57. //
  58. // test class MatFileIO
  59. //
  60. MatFileIO matfileIO = MatFileIO(filename,MAT_ACC_RDONLY);
  61. printf("\nnumber of variables: %d \n", matfileIO.getNumberOfVariables());
  62. sparse_t sparse;
  63. matfileIO.getSparseVariableViaName(sparse,variable1);
  64. printf("\nSparse Matrix \n");
  65. for ( int i = 0; i < 5; i++ ) {
  66. for ( int j = sparse.jc[i]; j < sparse.jc[i+1] && j < sparse.ndata && j < sparse.jc[i]+5; j++ ) {
  67. printf("\t\t(%d,%d)\t%f", sparse.ir[j]+1,i+1,((double*)sparse.data)[j]);
  68. }
  69. printf("\n");
  70. }
  71. // int count = 0;
  72. //
  73. // for ( int i = 0; i < sparse.njc-1; i++ ) {
  74. // for ( int j = sparse.jc[i]; j < sparse.jc[i+1] && j < sparse.ndata; j++ )
  75. //
  76. // if (count < 15) {
  77. //
  78. // printf(" (%d,%d) %f\n", sparse.ir[j]+1,i+1, data[j]);
  79. // count++;
  80. // }
  81. // }
  82. NICE::Vector vec;
  83. matfileIO.getVectorViaName(vec,variable2);
  84. std::cout << std::endl << "Vector" << std::endl << std::endl;
  85. for (size_t k = 0; k < 15; k++) {
  86. std::cout << vec[k] << " ";
  87. }
  88. std::cout << "..." <<std::endl;
  89. #else
  90. std::cout << "The MATIO Library has to be installed to run this program." << endl;
  91. #endif
  92. return 0;
  93. }