• Viernes 15 de Noviembre de 2024, 07:52

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - rpg245

Páginas: [1]
1
C/C++ / optimizando el código
« en: Martes 9 de Diciembre de 2008, 16:27 »
Bueno pues como leéis en el título del post, después de hacer todo mi programa, ahora voy a tratar de optimizarlo, y voy a ver si me podéis echar una mano.
El caso es que mi código es un bucle que se realiza millones de veces, por lo que reducir el tiempo de computación de cualkier instrucción dentro del bucle conlleva el ahorro de bastante tiempo.
Según he visto, y es curioso, una de las cosas que más tarda en mi código es la generación de un número aleatorio con: random(rand_max);...!!!

Alguien sabe alguna forma de generar un número aleatorio de forma más rápida???!!!!

Otra cosa que quería saber es si me podéis ayudar con esto:

for (i=0;i<5;i++){
           cvSetReal2D(A,i,0,(double) X*X-Y*Y);
           cvSetReal2D(A,i,1,(double) 2*X*Y);
           cvSetReal2D(A,i,2,(double) X);
           cvSetReal2D(A,i,3,(double) Y);
           cvSetReal2D(A,i,4,(double) 1.0);
 }

Esta es la forma que tengo de asignar los valores a una matriz, pero me gustaría saber si lo puedo hacer de una forma directa sin usar un bucle,algo del siguiente estilo...:

cvSetReal2D(A,i,(double) X[0]*X[0]-Y[0]*Y[0],(double) X[1]*X[1]-Y[1]*Y[1],(double) X[2]*X[2]-Y[2]*Y[2],(double) X[3]*X[3]-Y[3]*Y[3],(double) X[4]*X[4]-Y[4]*Y[4]);

así asigno a la columna "i" ese vector, no sé o algo que me sirva, escucho proposiciones...un saludo y muchas gracias por adelantado!!!!!

2
C/C++ / Usando OPENCV ---cvSolve...
« en: Lunes 3 de Noviembre de 2008, 16:37 »
Hola a todos. Estoy pasando un programa de Matlab a C, y para ello uso la biblioteca OPENCV.
En concreto ahora estoy utilizando cvSolve que resuelve el sistema de ecuaciones A*X=B, donde A y B son conocidas...
Supuestamente haciendo cvSolve(A,B,X, CV_LU), en X debería obtener el resultado, pero no sé cómo acceder al resultado.

La cabecera de la función es esta:
int cvSolve( const CvArr* A, const CvArr* B, CvArr* X, int method=CV_LU );

He probado haciendo X->data.db[] y nada, y con cvGetReal tampoco....a ver si alguien sabe cómo acceder a los datos de X...
En concreto, X, es una matriz columna de 5 filas...espero vuestra respuesta..un saludo!!

Páginas: [1]