LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Display (huge amount) data in intensity graph

Hello,
 
I need to display a huge amount of data in a intensity graph as follows:
 
A measurement system gets data (--> Z-Axis of intesity graph) across a steel strip in 30 steps (--> Y-Axis of intensity graph). The strip can reach a length of 15000 meters (-->X-Axis of intensity graph)....
In first step I initialized an 2d Array with a size of 30x15000. This means of cause a huge memory usage..Smiley Sad The data is inserted using the [Replace Array subset] function.
In fact only the last 1000meters should be visible, an array of 30x15000 is not needed, 30x1000 would normally be enough, but the intesity graph can't be handeled like an XY-graph........(the measurement system
might be turned off for a while but the strip is still running forward in this time. The problem is now ho to insert the correct X-index)
 
 
 
 
Has someone an idea how to arrange the situation with the intensity graph?
 
 
 
 
 
0 Kudos
Message 1 of 6
(3,364 Views)
Is it possible to only look at the last 1000 meters in the graph at all times?
 
If so, then you could have an array of values and only index (or extract) the last 1000m and those values would be sent to the intensity graph.
 
What I mean by the above is that you would have a Producer Consumer arrangement.  Every new 1000 m data would then go into a queue buffer and the consumer would refresh your intensity graph with the new values. 
 
If you want to refresh the intensity graph more often (more granularity over the 1000 m length), then you could use previous data and add the quantity of new data at the end and write the last 1000m to the queue.  It would then look like a constantly changing intensity graph instead of 1000m snapshots.
 
RayR


Message Edited by JoeLabView on 05-09-2008 08:41 AM
0 Kudos
Message 2 of 6
(3,343 Views)
The graph can only display as many points as there are pixels in the graph window. If you feed more data points to the graph than it has pixels, it will perform some data reduction before displaying. So plan your data block size to match the graph size. If you want to display 1000 m of data at 1 pixel per meter, use a graph 1000 pixels long. If you want to display 1000 m of data and you get a new data set every millimeter, then you have 1000 data points per pixel. You can decide whether you want to average those 1000 points, use the maximum, the median, the RMS value, or another algorithm of your choice.

Separating the display from data storage or other analysis is often useful. In any case careful planning will let you avoid making unnecessary copies of your data.

Lynn
Message 3 of 6
(3,332 Views)


_avr_ wrote:
In fact only the last 1000meters should be visible, an array of 30x15000 is not needed, 30x1000 would normally be enough, but the intesity graph can't be handeled like an XY-graph........

Simply use an intensity chart with a history size of 1000. 🙂
0 Kudos
Message 4 of 6
(3,323 Views)
I like your suggestion Altenbach, but I was assuming that 1000m did not necessarily equal 1000 datapoints 😉
0 Kudos
Message 5 of 6
(3,310 Views)
(But _avr_ was talking about array sizes of  30x15000 vs. 30x1000. ....)
_avr_, could you attach a simplified version of your VI so we can get a better picture? Thanks!
 
An array of 30x15000 is not very big for a modern computer (just a few MB for DBL). If you get a "huge amount of memory usage" (your words!) you have way to many data copies in memory or some other problem. What IS your memory usage?
 
 
0 Kudos
Message 6 of 6
(3,305 Views)