01-22-2015 04:25 PM
Hi everyone,
I have computed 6*4*100 3D matrix (i.e. the rank number of the matrix is 6, the column is 4, and there are together 100 matries like this ) in Matlab before, and now want to input them into Labview for further application.
Could anyone give me some suggestions to do this in Labview?
THX very much!
Cheers
01-22-2015 05:34 PM
I have computed 6*4*100 3D matrix (i.e. the rank number of the matrix is 6, the column is 4, and there are together 100 matries like this ) in Matlab before, and now want to input them into Labview for further application.
Could anyone give me some suggestions to do this in Labview?
The important question is how the numbers are saved in the file. Are they strings? Integers? Floats? What size (I32, Sgl, Dbl)? Is the byte order the same for Matlab and LabVIEW? Does Matlab prepend size information when it writes the array?
I just did a little demo for myself, since I'd not (yet) worked with 3D arrays in LabVIEW. I generated 24 integers (from 0 .. 23), made an array with 2 rows, 3 columns, and 4 whatevers, wrote them to a binary file with the default "prepend array size", closed the file, then looked at it. Here's the code:
Here's what I found. Everything was 4-byte integers (I32). The contents were 2, 3, 4, 0, 1, ... 23. That is, the three dimensions and the 24 values.
Reading works similarly, Wire an empty I32 array having three dimensions to the Type input of the Read. You end up with a 2x3x4 matrix containing your numbers. Note that the first index (which can be 0 or 1, i.e. size 2) has what looks like a 3x4 array, the first being 0..11, the second 12..23. The arrays have 4 columns and 3 rows (so my description above was wrong).
Very straightforward.
Bob Schor
01-22-2015 05:55 PM
Dear Bob,
Thanks very much for your immediate reply!
I think I did not express my meaning well in last post.
I mean, the 6*4*100 matrix have been obtained in matlab already like this ( only the first five matries have been captured on the figure)
These matries are saved in matlab as the .mat file. But they can also be copied and then saved in txt file.
What I want to do is to input the 100 matries into the time loop in Labview. At each sampling time (5ms), one 6*4 matrix will be input into the time loop for computation. therefore, the time loop will sample together 100 times.
Thanks very much!
Cheers
02-18-2016 09:47 AM
Hello Stanley,
I am stucked in a very similar situation. Could you please let me know if you have already got the solution to this problem?
I also want to get my .mat file from MATLAB to LabVIEW.
The file contains a 3D matrix with 121*121*231 data.
I have already tried with the 'Data Storage' .MAT plugin but it seems to support only for 2D matrices.
Request you or anyone to please help in this regards.
Thanks
Rahul
Knorr- Bremse, Munich
02-18-2016 09:56 AM
Hello Stanley,
perhaps best would be, to save your values in a txt- file and post a sample of it. Then it's much easier to give the appropriate advices.
02-18-2016 01:12 PM
Dear Stanley and Rahul,
I believe the .mat format is a proprietary Matlab file format, with multiple versions and featuring file compression. When a colleague sent me .mat files to analyze, I wrote a small "Mat to Dat" function in Matlab that looked for .mat files, loaded the Variable in Matlab, opened a .dat file (of the same name, e.g. "My Data.mat -> My Data.dat") and wrote the data out.
Since what you get is a simple Binary file, it is fairly simple to read these data back into LabVIEW, as I demonstrated in an earlier post to this topic -- you (of course) need to know the data format (I32, Sgl, Dbl, etc.).
Bob Schor
02-19-2016 12:47 PM