5 typedef ublas::matrix<double>
Matrix;
10 WindowedSVD::WindowedSVD()
15 raw_buffer.resize(0,0);
16 plugin_name =
"Windowed SVD";
19 std::map<std::string, CEBL::Param> WindowedSVD::getParamsList()
21 std::map<std::string, CEBL::Param> params;
23 CEBL::Param wsize(
"Window Size",
"How many samples per window?", window_size);
24 CEBL::Param wover(
"Window Overlap",
"How many samples do windows overlap??", window_overlap);
34 params[
"lags"] = lags;
35 params[
"wsize"] = wsize;
36 params[
"wover"] = wover;
40 void WindowedSVD::setParamsList( std::map<std::string, CEBL::Param> &p)
42 int new_lags = p[
"lags"].getInt();
43 int new_ws = p[
"wsize"].getInt();
44 int new_wo = p[
"wover"].getInt();
46 if(new_lags != n_lags || new_ws != window_size || new_wo != window_overlap)
50 window_overlap = new_wo;
57 ublas::matrix<double> WindowedSVD::use(
const ublas::matrix<double> &data)
63 if(
nrow(data)*(n_lags+1) > window_size)
64 throw(
"Window size must be larger than the number of features * (lags+1).");
69 cout <<
"\n\n\nReceived " <<
ncol(data) <<
" new samples.\n";
70 cout <<
"Already have " <<
ncol(raw_buffer) <<
" buffered samples\n";
74 if(
ncol(raw_buffer)==0) {
77 raw_buffer =
cbind(raw_buffer, data);
81 int nColsBuffer =
ncol(raw_buffer);
82 int window_shift = window_size - window_overlap;
84 lagged_data =
cppR::Lag(raw_buffer,n_lags);
86 int num_windows = int((
ncol(lagged_data)-window_size)/window_shift);
90 int num_lagged_samples_left =
ncol(lagged_data) - (num_windows-1) * window_shift - (num_windows>0 ? window_size : 0);
91 int num_raw_samples_left = num_lagged_samples_left + n_lags;
98 cout <<
"After lagging there are " <<
ncol(raw_buffer) <<
" buffered samples\n";
99 cout <<
"And " <<
ncol(lagged_data) <<
" samples of lagged data\n";
100 cout <<
"From this, we can create " << num_windows <<
" windows of " << window_size
101 <<
" samples shifted by " << window_shift << endl;
111 for(
int w=0; w < num_windows; w++)
113 this->inturruptionPoint();
117 w * window_shift, w * window_shift + window_size -1);
123 for (
unsigned int i = 0; i < sv.
d.size(); i++)
124 cout << sv.
d[i] <<
" ";
127 cout <<
"size of u " <<
nrow(sv.
u) <<
"x" <<
ncol(sv.
u) << endl;
128 cout <<
"size of d " << sv.
d.size() << endl;
129 cout <<
"size of v " <<
nrow(sv.
v) <<
"x" <<
ncol(sv.
v) << endl;
136 for(
int i=0;i<
ncol(singular_vectors);i++)
138 this->inturruptionPoint();
143 svdized =
cbind(svdized, temp);
149 raw_buffer =
submatrix(raw_buffer, 0,0, nColsBuffer - num_raw_samples_left - 1, nColsBuffer-1);
156 map<string, SerializedObject> ret;
158 ret[
"window_size"] =
serialize(window_size);
159 ret[
"window_overlap"] =
serialize(window_overlap);
167 deserialize(objects[
"window_overlap"],window_overlap);
171 void WindowedSVD::reset()
173 raw_buffer.resize(0,0);