jdebuhr Posted July 20, 2006 Report Share Posted July 20, 2006 Hey all, I am stuck, I am trying to ficure out how to sort data in a 2D array. I would like to have is sorted in decending or ascending order. but I would like to be able to choose multiple columns to do this. Currently I use Excel to do what I need as I have made some Vis based off of the Report Generation Tool kit. if there is any way that I could do this without having to have Excel that is what I am looking for. Any suggestions on where to start? Thanks Quote Link to comment
mross Posted July 20, 2006 Report Share Posted July 20, 2006 Hey all,I am stuck, I am trying to ficure out how to sort data in a 2D array. I would like to have is sorted in decending or ascending order. but I would like to be able to choose multiple columns to do this. Currently I use Excel to do what I need as I have made some Vis based off of the Report Generation Tool kit. if there is any way that I could do this without having to have Excel that is what I am looking for. Any suggestions on where to start? Thanks Samples of the data and vi's are aways good for getting a quality answer and making sure the answering person doesn't spin their wheels trying to fill in the blanks. The LAVA forums make that easy. Since I don't want to spin, I will make a general answer: index out the column and sort it, put it back together. Mike Quote Link to comment
crelf Posted July 20, 2006 Report Share Posted July 20, 2006 Start here - it already exists in the OpenG toolkit. Quote Link to comment
jdebuhr Posted July 20, 2006 Author Report Share Posted July 20, 2006 Start here - it already exists in the OpenG toolkit. I assume I need OpenG Commander to get that toolkit? If so, I am not able to access it from work. I have OpenG Cpmmander installed, but it times out. I assume it is a firewall issue but I cannot find any setting to chnge it. Samples of the data and vi's are aways good for getting a quality answer and making sure the answering person doesn't spin their wheels trying to fill in the blanks. The LAVA forums make that easy.Since I don't want to spin, I will make a general answer: index out the column and sort it, put it back together. Mike See attach sample of data.. it is in a CSV text file. I will remove 2 header lines leaving one. this is for my project at home. this is Automotive scan data.. Lets say I will want to sort by Engine Speed, then by MAP then by BLM, Then maybe 2 or 3 others. I have no code started for what I want to do with it other then the sorting features of excel. Download File:post-5194-1153410247.txt Quote Link to comment
mross Posted July 20, 2006 Report Share Posted July 20, 2006 I assume I need OpenG Commander to get that toolkit? If so, I am not able to access it from work. I have OpenG Cpmmander installed, but it times out. I assume it is a firewall issue but I cannot find any setting to chnge it.See attach sample of data.. it is in a CSV text file. I will remove 2 header lines leaving one. this is for my project at home. this is Automotive scan data.. Lets say I will want to sort by Engine Speed, then by MAP then by BLM, Then maybe 2 or 3 others. I have no code started for what I want to do with it other then the sorting features of excel. So you want to duplicate an 'auto filter data sort' where all the columns are sorted according to the sort of a particular column...you don't just want to pull out one column and sort it alone and reasssemble? Quote Link to comment
JDave Posted July 20, 2006 Report Share Posted July 20, 2006 You need to get an list of column indices that you want to sort by. first by column 2, then 1, then 3, then 5 Then reverse this list (5,3,1,2) Then sort in that order as already described. (Sort by column 5, then sort again by column 3, ...) Quote Link to comment
Chris Davis Posted July 20, 2006 Report Share Posted July 20, 2006 I assume I need OpenG Commander to get that toolkit? If so, I am not able to access it from work. I have OpenG Cpmmander installed, but it times out. I assume it is a firewall issue but I cannot find any setting to chnge it.See attach sample of data.. it is in a CSV text file. I will remove 2 header lines leaving one. this is for my project at home. this is Automotive scan data.. Lets say I will want to sort by Engine Speed, then by MAP then by BLM, Then maybe 2 or 3 others. I have no code started for what I want to do with it other then the sorting features of excel. You can still get all the packages from OpenG without using commander, Jim might chime in here if he can provide a link to help you get them. Then you can use commander to install them from a local disk. Quote Link to comment
jdebuhr Posted July 20, 2006 Author Report Share Posted July 20, 2006 So you want to duplicate an 'auto filter data sort' where all the columns are sorted according to the sort of a particular column...you don't just want to pull out one column and sort it alone and reasssemble? Correct, All the rows are corellated. My other thought is to expand on somethign I already have done and instead of sorting, creat a progrma to search for the data needed.. As for OpenG commander, I found info on that website to posibly get it working, if not I will install it at home which is where i want/ need it anyway Quote Link to comment
mross Posted July 20, 2006 Report Share Posted July 20, 2006 Correct, All the rows are corellated. My other thought is to expand on somethign I already have done and instead of sorting, creat a progrma to search for the data needed..As for OpenG commander, I found info on that website to posibly get it working, if not I will install it at home which is where i want/ need it anyway What you want is a database function that has been shoe-horned into Excel. It might be easier to use a database. I definitely don't have the LV method in my head. To all: Does Open G do that? Rearrange the rows based on a sort of a single coulmn? To JD: I coiuld help you with what I thought was a newbie question about how to work with a 2D array. I am interested to do the record sort, but I know I don't have time right now. Sorry about that. See what I mean about code samples and a good description to start off a discussion? I am glad I didn't make a totally unsuitable example to show you something you don't want to know about. Quote Link to comment
Gary Rubin Posted July 20, 2006 Report Share Posted July 20, 2006 You could convert the 2D array into a 1D array of clusters. The cluster would consist of as many scalars as you have columns in your 2D array. Build the clusters such that the primary sort column is the first element of the cluster, the secondary sort column is second, etc. Sort the 1D array of clusters using Labview's 1D Array Sort. Convert the Cluster back into a 2D array, putting the columns back in the correct order. This may or may not be practical to implement, depending on the number of columns you have. Quote Link to comment
jdebuhr Posted July 20, 2006 Author Report Share Posted July 20, 2006 What you want is a database function that has been shoe-horned into Excel. It might be easier to use a database. I definitely don't have the LV method in my head. To all: Does Open G do that? Rearrange the rows based on a sort of a single coulmn? To JD: I coiuld help you with what I thought was a newbie question about how to work with a 2D array. I am interested to do the record sort, but I know I don't have time right now. Sorry about that. See what I mean about code samples and a good description to start off a discussion? I am glad I didn't make a totally unsuitable example to show you something you don't want to know about. Yep, I understand about examples, if I had something I would have attached it. I did get OpenG to work, but due to the firewall I manually download the toolkits. I downloaded the array OpenG toolkit kit and yes there is a Vi to sort a 2D array based off of one Column or Row. Seeing that has given me some Ideas now. You could convert the 2D array into a 1D array of clusters. The cluster would consist of as many scalars as you have columns in your 2D array. Build the clusters such that the primary sort column is the first element of the cluster, the secondary sort column is second, etc. Sort the 1D array of clusters using Labview's 1D Array Sort. Convert the Cluster back into a 2D array, putting the columns back in the correct order. This may or may not be practical to implement, depending on the number of columns you have. You know, that might work out well, I would not really need to convert back to the 2D array but once I get something going I will decide. I used Excel intially since it was simple to add and control. but the more I thought of it is If I built a stand alone app without excel, I am stuck. I will try it and see what happens. As for size, the current data is 56 columns and 12031 rows. The rows can be less or more depending on the data. The Data is streamed to a file from a car (OBDI) I am in process of making my own OBDI scan tool (for my GM) I have somethign that currently manipulates data from a 'Off the shelf' scanner but my goal is to make an all-in-one program. My movtivation started after taking the NI Intermediate courses. using the Producer-consumer Template. It is also a great way to practice as well. Quote Link to comment
mross Posted July 20, 2006 Report Share Posted July 20, 2006 Yep, I understand about examples, if I had something I would have attached it. I did get OpenG to work, but due to the firewall I manually download the toolkits. I downloaded the array OpenG toolkit kit and yes there is a Vi to sort a 2D array based off of one Column or Row. Seeing that has given me some Ideas now.You know, that might work out well, I would not really need to convert back to the 2D array but once I get something going I will decide. I used Excel intially since it was simple to add and control. but the more I thought of it is If I built a stand alone app without excel, I am stuck. I will try it and see what happens. As for size, the current data is 56 columns and 12031 rows. The rows can be less or more depending on the data. The Data is streamed to a file from a car (OBDI) I am in process of making my own OBDI scan tool (for my GM) I have somethign that currently manipulates data from a 'Off the shelf' scanner but my goal is to make an all-in-one program. My movtivation started after taking the NI Intermediate courses. using the Producer-consumer Template. It is also a great way to practice as well. What can you do with this data if it is out of chronological order? Once you get it out of Excel the filesize will no longer bog down the production and viewing of graphs... I don't get it. Quote Link to comment
jdebuhr Posted July 20, 2006 Author Report Share Posted July 20, 2006 What can you do with this data if it is out of chronological order? Once you get it out of Excel the filesize will no longer bog down the production and viewing of graphs... I don't get it. Let me try to explain what I am doing and where I stand now In 2000, I started messing around with the fuel curves in my car (89 GM OBD1) I have a program to datalog, I learned what the target is for the fuel curve, and how to calculate changes, but I did not want to spend hours going through the data manually., so I wrote a basic program in LabVIEW to do it for me. Originally I would manually sort the data in Excel, save it as a CSV Text file, then push the Sorted Text file through my program. At the time the program was made there were 3 Variables RPM, BLM, and MAP. The BLM was the Actual fueling # and the RPM and MAP were sort of pointers to the BLM. These 3 are in a table MAP was in ascending Columns and RPM ascending rows. I sorted based on RPM, Then MAP. I used 2 For Loops, one inside the other, the Outer did the rows, the inner did the MAP. Then the BLM was calculated against the original value and replaced. The For loops would read form the 2D array with the current fueling BLM then look in my scanned Data (like the attached above) and change the variables. I noticed the program was not correct, I forgot to Average the BLM if I have multiple RPM and MAP Values (eg. if I had 6 RPM values of 2200 and 6 with a MAP of 50 but 6 different BLM #s) This is where the sorting was needed. I wanted something that would run well, to sort and Average my data into something useful. First attempts made the program REALLY Slow, but after sorting the data, it has improved (along with 6 years of technology with the PC) So I left the program the way it was with the sorting. Now a couple weeks ago I got a bug to redo it, improve and make it more efficient (first version of my program was written in LV5) I was still learning (as I still am) but I over used Locals and a few other things. At the time is worked, looking back at it now, I know it will be done better. Other things that were manually removed from the scanned file were OPEN LOOP, LEARN CONTROL OFF, those I can use the simple 2d Sort of One column and delete the unwanted after I sort. I need to double check my code to see how I am looking for duplicates, maybe I don Quote Link to comment
mross Posted July 20, 2006 Report Share Posted July 20, 2006 Clear as mud now? You guessed it. I don't follow you at all. I think you are processing sensor data from your ECM to make a control map for your vette. But I don't get it. Quote Link to comment
jdebuhr Posted July 21, 2006 Author Report Share Posted July 21, 2006 You guessed it. I don't follow you at all. I think you are processing sensor data from your ECM to make a control map for your vette. But I don't get it. You got it.. once I figure out what I am doing for the sorting I will post the code Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.