12-10-2010 09:12 AM
No. You don't turn the 3rd index into an array. That makes no sense. Remove that "Build Array" function from the middle of the broken wire and turn that 0 into some other value such as 5 or 10, or whatever number of pages of data do you need.
What you want is a 3-D array. It consists of rows, columns, and pages. If you indexed out a page, now you have a 2-D array of rows and columns. If you indexed out a page and a row, you'd have a 1-D array of columns.
You have to start visualizing your data in a 3-D cube and depending on whether you are specify something in one dimension only, your result is a 2-D array. If you specify in two dimension, you are left with a 1-D array. If you specify in all 3 dimensions, then you are left with a single element of the array.
12-14-2010 05:36 AM
Yes, it is clear but the reason why I tried to put there the array as a third dimension is that I don't know the exact size of the "3-D cube". I cannot pre-specify it. I namely know how many sensor I have [this is the 2D array because the sensors are arranged into a matrix] but I don't know how many thousands of measurement points I need to acquire. These measurement points would make the third dimension, I would put them into an array that is constantly growing as the data acquisition is going on. When the cube reaches a certain limit, it should be passed to another parallel running while loop that streams the content of the cube into the respective files.
Probably there is a much better solution for this problem but this is the way how I thought about it.
So there is a 2D array, a matrix. To each element of the matrix connects an empty array that would make the third dimension. And these attached arrays will continuously grow as the measurement data are saved into them.
12-14-2010 10:10 AM - edited 12-14-2010 10:11 AM
First, a 2-D array is not a matrix. They are actually 2 different entities with in LabVIEW. However, there are a lot of similarities between them and many of the array functions
You can grow the 3-D array as needed. You can start off with a 5 x 5 x 0 array if you wanted, (5 x 5 "matrix" of sensors and 0 data points collected) then use build array to put on a 5 x 5 array so you now have a 5 x 5 x 1 array, and so on.
01-06-2011 09:59 AM
Brilliant idea, thanks! I'll give it a go very soon.
However as I started to think about the application I ran into the question of how to stream out such an amount of data. In reality there is a 20x20 sensor matrix, the PXIe-6358 will collect say 100 data points of each sensor in a complete sensor matrix readout cycle. The frequency of the complete sensor matrix readout should be at around 1 kHz. This will repeat until the measurement stops that takes in worst case days.
I thought of a kind of producer/customer architecture like solution. Namely, after every 1000 data acquisition cycle the VI would start to store data into a new 3D cube and would send the old 3D cube to a separate while loop that would stream the data into files by TDMS.
Would it make sense to do it with producer/customer queues or the amount of data would be too large for this? Any ideas are welcome.
01-12-2011 12:26 PM
I need some help! I am writing code for a force plate - FX,FY,FZ + moment X, moment Y and momentZ
So I have a 6x6 calibration matrix for my force plate
I am acquiring data continuously but my program will wait for a wireless pulse from a Delsys electromyography program, then collect and write to a lvm file for 5-10 seconds. My question, for all 6 channels or columns in my lvm file seem to display a cyclical pattern. I do not think I am getting the numbers I want.
I will attach vi
I have captured 5 seconds of data standing on the plate; the values for Fz are in the 3rd column (FZ).
Lvm format Fx,Fy,Fz, torqueX, torqueY, torqueZ
01-12-2011 12:32 PM
Ned, start a new thread for your question and you will get help quickly. (No thread hijacking lol) Post your VI and a screenshot in your new thread when you ask your question