@@ -129,18 +129,26 @@ inline mxArray* make_mx_array(const std::vector<nix::Dimension> &dims) {
129
129
return nullptr ;
130
130
}
131
131
132
+ const char *field_names[] = { " dtype" , " dimension" };
133
+ mwSize dim_arr[2 ] = {1 , dims.size ()};
132
134
nix::DimensionType dt;
133
135
134
- mxArray *data = mxCreateCellMatrix ( 1 , dims. size () );
136
+ mxArray *data = mxCreateStructArray ( 2 , dim_arr, 2 , field_names );
135
137
for (size_t i = 0 ; i < dims.size (); i++) {
136
138
dt = dims[i].dimensionType ();
137
139
138
140
switch (dt) {
139
- case nix::DimensionType::Set: mxSetCell (data, i, make_mx_array (dims[i].asSetDimension ()));
141
+ case nix::DimensionType::Set:
142
+ mxSetFieldByNumber (data, i, 0 , mxCreateString (" set" ));
143
+ mxSetFieldByNumber (data, i, 1 , make_mx_array (dims[i].asSetDimension ()));
140
144
break ;
141
- case nix::DimensionType::Range: mxSetCell (data, i, make_mx_array (dims[i].asRangeDimension ()));
145
+ case nix::DimensionType::Range:
146
+ mxSetFieldByNumber (data, i, 0 , mxCreateString (" range" ));
147
+ mxSetFieldByNumber (data, i, 1 , make_mx_array (dims[i].asRangeDimension ()));
142
148
break ;
143
- case nix::DimensionType::Sample: mxSetCell (data, i, make_mx_array (dims[i].asSampledDimension ()));
149
+ case nix::DimensionType::Sample:
150
+ mxSetFieldByNumber (data, i, 0 , mxCreateString (" sample" ));
151
+ mxSetFieldByNumber (data, i, 1 , make_mx_array (dims[i].asSampledDimension ()));
144
152
break ;
145
153
default : throw std::invalid_argument (" Encountered unknown dimension type" );
146
154
break ;
0 commit comments