Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Problema memoria labview

¡Resuelto!
Ir a solución

Buenas,

 

Muchas Gracias por la ayuda. 

Te comento un poco lo que hace cada programa:

 

  • L_Muestras_F_primeros.vi, Me gestiona dentro de la matriz entera, la selección de cada fila, y engloba el calculo de los dos sub_vi:
    • M_Primeros.vi,Para cada fila, me va restando elemento por elemento el valor promedio, y lo almacena en un array_salida. a la vez me gestiona el index de datos (cada vez que entra y realiza todas las operaciones de la fila, el contador se incrementa 8 posiciones).
    • Promedio.vi,Calcula la media de los 100 primeros valores de la fila.

Agradecería cualquier sugerencia,

un saludo y muchas gracias,

 

 

0 kudos
Mensaje 11 de 16
1.381 Vistas

Hola.

 

Vamos por partes.

 

Promedio.vi calcula el promedio de los 100 primeros valores de una fila.

Este promedio se debe restar de cada unos de los miles de   valores de esa fila y eso genera un nuevo array.

 

¿Es asi?

 

A lo que veo, el proceso se hace unica y exclusivamente de fila en fila. Ello me lleva a considerar que calculas el promedio de una forma poco eficiente para cada valor de la fila, lo que es absurdo, ya que se debe calcula solo una vez y restarlo de golpe a toda la fila.

 

Si aclaras un poco estos aspectos, el codigo se puede mejorar bastante.

 

Lo de incrementar el contador de filas en 8 posiciones no lo veo claro.

 

En mi opinion, si el proceso es por filas y dados los pocos elementos que usas, el tiempo  de calculo no deberia llegar ni siquiera a un segundo. Te adjunto un ejemplo con tus datos y la operación que yo creo que quieres realizar.

 

 

 

 

Saludos.

Alipio.

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
Mensaje 12 de 16
1.370 Vistas

Hola Alipio,

 

Muchas gracias por tu ayuda.

Como dices, lo que intento hacer es calcular el promedio de los 100 primeros de una fila, y este valor ir restandolo uno a uno a todos los componentes de la fila.

He sacado fuera del sub.vi "Loop_Muestras.vi", el calculo del promedio para que sólo me lo realice una sola vez, y el programa se ejecuta muchísimo más rápido.

 

Lo que te comento del contador de filas, es debido a que no tomo todas las filas, sino cada 8. Luego cada vez que el indice es correcto, me calcula la nueva fila restandole los promedios y me incrementa el contador 8 lugares.

 

Por otro lado, me podrías por favor reenviar el ejemplo guardandolo para labview 9?

 

Un saludo y muchas gracias,

0 kudos
Mensaje 13 de 16
1.358 Vistas
Solución
Aceptado por juanfer23

Hola.

 

Te adjunto el ejemplo en Lv9. Como veras, se genera una matriz de 255x5000 y para cada fila se calcula el promedio de los primeros 100 elementos y este promedio se resta de cada uno de los 5000 elementos de la fila.

Todo el proceso se ejecuta en menos de un segundo, por lo que te recomiendo que lo acoples a tu aplicacion ya que el metodo del ejemplo es bastante más eficiente que el que usas ahora.

 

Saludos.

Alipio.

 

 

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
Mensaje 14 de 16
1.351 Vistas

Hola Alipio,

 

Muchas gracias por tu ayuda. Lo he implementado para ejecutarlo únicamente en las filas que selecciono según el contador que te comentaba y me va muchísimo más rápido 😉

 

Un saludo!!

0 kudos
Mensaje 15 de 16
1.333 Vistas

 

De nada. Aqui estamos para ayudar en lo que se pueda.

 

Si crees que alguna otra parte del codigo va lenta, avisa y podemos intentar mejorarla.

 

Saludos.

Alipio.

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 16 de 16
1.319 Vistas