jonathf/matlab2cpp

Typ før auxvariabel

Closed this issue · 9 comments

Det verkar inte gå att vælja typ før auxvariabler associerade med min/max (de syns inte i .m.py filen)

De skal ikke definineres i suppliment-filen, men håndteres utelukkende fra context.
Fikset nå.

Fungerar fortfarande inte før min/max

Eksempel?

Følgende:

a = [1,2]
min(a)
A = min(a)
[A,I] = min(a)
b = [3;4.]
max(b)
B = max(b)
[A,I] = max(b)

blir oversatt til:

int _a [] = {1, 2} ;
a = irowvec(_a, 2, false) ;
arma::min(a) ;
A = arma::min(a) ;
A = a.min(I) ;
double _b [] = {3, 4.} ;
b = vec(_b, 2, false) ;
arma::max(b) ;
B = arma::max(b) ;
A = b.max(I) ;

Problemet verkar vara relaterat till nestade operationer e.g.:

function y = EMIT_Proc_Mandrel_Simulated_LS(x)

casing_sizes = [2.875,3.5,4,4.5,5,5.5,6.625,7,7.625,7.75,8.625,9.625,10.75,11.75,13.375,16,18.625,20,22,24,26,28,30];
[y,i] = min(abs(casing_sizes-x))    

return

blir:

double EMIT_Proc_Mandrel_Simulated_LS(double x)
{
  double y ;
  uword i ;
  rowvec casing_sizes ;
  TYPE _aux_TYPE_1 ;
  double _casing_sizes [] = {2.875, 3.5, 4, 4.5, 5, 5.5, 6.625, 7, 7.625, 7.75, 8.625, 9.625, 10.75, 11.75, 13.375, 16, 18.625, 20, 22, 24, 26, 28, 30} ;
  casing_sizes = rowvec(_casing_sizes, 23, false) ;
  _aux_TYPE_1 = abs(casing_sizes-x) ;
  y = _aux_TYPE_1.min(i) ;
  return y ;
  return y ;
}

Der ja. Jeg tar en titt.

Fant feilen. Jeg får nå:

double _casing_sizes [] = {2.875, 3.5, 4, 4.5, 5, 5.5, 6.625, 7, 7.625, 7.75, 8.625, 9.625, 10.75, 11.75, 13.375, 16, 18.625, 20, 22, 24, 26, 28, 30} ;
casing_sizes = rowvec(_casing_sizes, 23, false) ;
_aux_double_1 = abs(casing_sizes-x) ;
y = _aux_double_1.min(i) ;

auxvariabeln skall vara en rowvec, inte en double

  • Fikset.
  • Lagt til 'abs' i reserved så den kan bli med på suggestions
  • Lagt suggestions i min/max til double og int for hhv. extremal-verdi og index.