vnl_matlab_filewrite.cxx
Go to the documentation of this file.
1 // This is core/vnl/vnl_matlab_filewrite.cxx
2 //:
3 // \file
4 
5 #include <sstream>
6 #include <iostream>
7 #include <complex>
8 #include "vnl_matlab_filewrite.h"
9 
10 #include <vnl/vnl_matlab_write.h>
11 
13  char const *basename)
14  : basename_(basename ? basename : "targetvar"), variable_int_(0)
15 {
16  out_.open(file_name, std::ios::out | std::ios::binary);
17  if (out_.bad())
18  std::cerr << __FILE__ << ':' << __LINE__ << ", WARNING : output stream is bad\n";
19 }
20 
21 std::string vnl_matlab_filewrite::make_var_name(char const* variable_name)
22 {
23  if (variable_name)
24  return std::string(variable_name);
25  else {
26  std::stringstream ss;
27  ss << variable_int_++;
28  return basename_ + ss.str();
29  }
30 }
31 
32 //--------------------------------------------------------------------------------
33 
34 //: scalar
35 void vnl_matlab_filewrite::write(double v, char const* variable_name)
36 {
37  vnl_matlab_write(out_, v, make_var_name(variable_name).c_str());
38 }
39 
40 //: vector
41 void vnl_matlab_filewrite::write(vnl_vector<double> const& v, char const* variable_name)
42 {
43  vnl_matlab_write(out_, v.data_block(), v.size(), make_var_name(variable_name).c_str());
44 }
45 
46 void vnl_matlab_filewrite::write(vnl_vector<std::complex<double> > const& v, char const* variable_name)
47 {
48  vnl_matlab_write(out_, v.data_block(), v.size(), make_var_name(variable_name).c_str());
49 }
50 
51 //: matrix
52 void vnl_matlab_filewrite::write(vnl_matrix<float> const& M, char const* variable_name)
53 {
54  vnl_matlab_write(out_, M.data_array(), M.rows(), M.cols(), make_var_name(variable_name).c_str());
55 }
56 
57 void vnl_matlab_filewrite::write(vnl_matrix<double> const& M, char const* variable_name)
58 {
59  vnl_matlab_write(out_, M.data_array(), M.rows(), M.cols(), make_var_name(variable_name).c_str());
60 }
61 
62 void vnl_matlab_filewrite::write(vnl_matrix<std::complex<float> > const& M, char const* variable_name)
63 {
64  vnl_matlab_write(out_, M.data_array(), M.rows(), M.cols(), make_var_name(variable_name).c_str());
65 }
66 
67 void vnl_matlab_filewrite::write(vnl_matrix<std::complex<double> > const& M, char const* variable_name)
68 {
69  vnl_matlab_write(out_, M.data_array(), M.rows(), M.cols(), make_var_name(variable_name).c_str());
70 }
71 
72 void vnl_matlab_filewrite::write(double const * const *M, int rows, int cols, char const* variable_name)
73 {
74  vnl_matlab_write(out_, M, rows, cols, make_var_name(variable_name).c_str());
75 }
vnl_matlab_filewrite(char const *file_name, char const *basename=nullptr)
unsigned int cols() const
Return the number of columns.
Definition: vnl_matrix.h:183
std::string make_var_name(char const *variable_name)
bool vnl_matlab_write(std::ostream &s, T const &x, char const *name)
scalars.
#define v
Definition: vnl_vector.h:42
An ordinary mathematical matrix.
Definition: vnl_adjugate.h:22
void write(double v, char const *variable_name=nullptr)
Add scalar/vector/matrix variable to the MAT file using specified variable name.
T const *const * data_array() const
Access the 2D array, so that elements can be accessed with array[row][col] directly.
Definition: vnl_matrix.h:609
unsigned int rows() const
Return the number of rows.
Definition: vnl_matrix.h:179
Write to a MAT file.