36 TMatlab::TMatlab(
int Inputs,
int Outputs) {
49 FInput =
new double[FNInputs];
50 FOutput =
new double[FNOutputs];
53 VersMatlab = nmMatlab65;
70 void TMatlab::IniciaECU() {
78 for(i = 0; i < 140; i++) {
84 ep = engOpenSingleUse(
"c:\matlab53\bin\matlab.exe", NULL, &retstatus);
87 int result = engEvalString(ep,
"disp('foo')");
91 printf(
"\nERROR: no se puede abrir una nueva sesion de MATLAB !");
97 FInputMatlab = mxCreateDoubleMatrix(1, FNInputs, mxREAL);
98 FOutputMatlab = mxCreateDoubleMatrix(1, FNOutputs, mxREAL);
100 engEvalString(ep,
"FInputMatlab=zeros(1,FNInputs);");
101 engEvalString(ep,
"FOutputMatlab=zeros(1,FNOutputs);");
103 strcat(daux,
"addpath '");
105 while(Fdirtrab[i - 9] !=
'\n') {
106 daux[i] = Fdirtrab[i - 9];
111 engEvalString(ep, daux);
113 engEvalString(ep, Fworkspace);
117 }
catch(exception &N) {
118 std::cout <<
"ERROR: IniciaECU" << std::endl;
119 std::cout <<
"Tipo de error: " << N.what() << std::endl;
127 void TMatlab::FinalizaECU()
132 }
catch(exception &N) {
133 std::cout <<
"ERROR: FinalizaECU" << std::endl;
134 std::cout <<
"Tipo de error: " << N.what() << std::endl;
142 void TMatlab::CalculaECU() {
145 memcpy(mxGetPr(FInputMatlab), FInput, 2 *
sizeof(
double));
146 engPutVariable(ep,
"FInputMatlab", FInputMatlab);
147 engEvalString(ep, Fficheme);
149 FOutputMatlab = engGetVariable(ep,
"FOutputMatlab");
150 memcpy(FOutput, mxGetPr(FOutputMatlab), 3 *
sizeof(
double));
151 mxDestroyArray(FOutputMatlab);
153 }
catch(exception &N) {
154 std::cout <<
"ERROR: CalculaECU" << std::endl;
155 std::cout <<
"Tipo de error: " << N.what() << std::endl;
163 void TMatlab::PutInput(
int i,
double valor) {
168 std::cout <<
"WARNING: El valor de la entrada a matlab se sale de rango" << std::endl;
169 std::cout <<
" Revisa el acceso a matlab" << std::endl;
171 }
catch(exception &N) {
172 std::cout <<
"ERROR: PutInput" << std::endl;
173 std::cout <<
"Tipo de error: " << N.what() << std::endl;
181 double TMatlab::GetOutput(
int i) {
186 std::cout <<
"WARNING: El valor de la salida de matlab se sale de rango" << std::endl;
187 std::cout <<
" Revisa el acceso a matlab" << std::endl;
190 }
catch(exception &N) {
191 std::cout <<
"ERROR: GetOutput" << std::endl;
192 std::cout <<
"Tipo de error: " << N.what() << std::endl;
200 void TMatlab::LeeFicherosECU(FILE *fich) {
202 fgets(Fdirtrab, 256, fich);
203 fscanf(fich,
"%s", &Fworkspace);
204 fscanf(fich,
"%s", &Fficheme);
205 }
catch(exception &N) {
206 std::cout <<
"ERROR: LeeFicherosECU" << std::endl;
207 std::cout <<
"Tipo de error: " << N.what() << std::endl;
215 #pragma package(smart_init)