Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by GregSands

  1. QUOTE (Antoine Châlons @ Sep 10 2008, 06:51 PM) Just to document what I decided in the end (in case it helps others) - all my reentrant routines now have a red border, making it easy to pick them out of a block diagram or VI hierarchy. Cheers ~ Greg
  2. Does the experimental clustering library at NI Labs help you at all? Cheers ~ Greg
  3. I've been experimenting with LV code for multiprocessing (on an 8-core machine) - this is for deconvolution, where I can work on multiple sections of a large 3D array independently. However I got tripped up by a non-reentrant VI buried in the sub-VI that I was using as the core processing routine which effectively blocked processes from executing simultaneously. Is there a facility for checking for such blocks, or for validating that I haven't missed setting a VI to reentrant where needed? I find it a little frustrating that reentrancy is not immediately visible (unless I add it to the icon manually), nor can it be specified when inserting a VI, only when saving it (this is for 8.2, but as far as I know this hasn't changed in 8.5 or 8.6). Cheers ~ Greg
  4. Thank you for that - that helps clarify it a lot. I think I was getting a little confused because I probably need to rewrite the code completely, but it's obvious now to make a clear separation rather than imagine it as a replacement or enhancement. Thanks again. Greg
  5. Is there a recommended practice for making modifications to core or add-on LabVIEW VIs (in vi.lib)? In my case, I want to develop and extend the functionality of the Wavelet Analysis toolkit, which could involve the following types of changes: restructuring to utilize multiple cores adding new threshold conditions for denoising developing 3-D wavelet routines (predominantly again for denoising) It will probably only affect a subset of VIs (denoising), but I need the changes to be available on multiple computers. There seem to be a few options: modify in-place in vi.lib and manually copy to other computers copy all of the VIs to user.lib and put under SCC only put new or changed files in user.lib under SCC Does anyone have recommendations? My thinking at the moment is to make a complete copy to user.lib, and re-parent all the VIs using one or more .lvlib files. This enforces complete separation, and I probably have the most freedom to make the changes I want. But I'd like to hear any downsides to this. Thanks ~ Greg
  6. I've done some quick benchmarking on 4 methods for decimating a 1-D array - here's the timing results: and the block diagram: Essentially the 4 techniques are 0) index and build array 1) reshape and reslice array 2) index and rebuild into current array, then truncate 3) explicitly decimate using built-in function The benchmarking code built a 40M element array, and ran each method with decimations from 1 to 10 multiple times taking the median time as the result. Plus debugging was turned off! Here's the code (LV 8.2): Download File:post-3889-1209438013.vi Apart from the built-in function, the index methods are fastest, with a slight advantage to re-using the same array. Sorry Jim, I haven't had a chance to add this to the OpenG wiki, and I'm pretty busy so may not get to it any time soon. Cheers ~ Greg
  7. QUOTE(Aristos Queue @ Mar 18 2007, 09:37 AM) Further speed improvements might be gained by making better use of the "length" of the array (call it "N"): - predivide your data by N - then you can just subtract and add to the mean directly without multiplying and dividing on each step. You'd also have to change the Array Mean function in the initialize to an Array Sum. - use a shift register to store N, and only compute when initializing. - in your test program, extract the first N values as the initial array, rather than an array of zeroes. http://forums.lavag.org/index.php?act=attach&type=post&id=5240''>http://forums.lavag.org/index.php?act=attach&type=post&id=5240'>http://forums.lavag.org/index.php?act=attach&type=post&id=5240
  8. I found a couple more shortcomings of the MSG back when I looked at it in 8.0.1 - I submitted them at the time, but it might help to add them to this thread (still in 8.2): 1) A multi-plot cursor does not snap correctly if XScale.Multiplier is not set to 1 - it seems to ignore it altogether. A single-plot cursor on the same graph does not have this problem. The XScale.Offset as similar problems - see attached VI. 2) I would have hoped to have the same functionality available as a standard Waveform graph, but some are missing: e.g. Cursor Events I was hoping to use the MSG to display easily align and interact with multiple signals, but the functionality was not quite there to allow me to do it - I ended up staying with several Waveform graphs and manually keeping them in sync - more work, but I could do exactly what I needed. Cheers ~ Greg
  9. QUOTE(Jeff Plotzke @ Feb 27 2007, 02:54 PM) However, if I double click on the Shared variable I get: http://forums.lavag.org/index.php?act=attach&type=post&id=5050''>http://forums.lavag.org/index.php?act=attach&type=post&id=5050'>http://forums.lavag.org/index.php?act=attach&type=post&id=5050 Somewhere it still has the typedef, as does the Global variable VI that it creates (test_Images.vi), but it must just "forget" about it when it actually gets used.
  10. QUOTE(crelf @ Feb 27 2007, 11:00 AM) From LV 8 and Vision 7, although I completely uninstalled both before upgrading. I've kept looking at this - the Global variable that is created by the Shared Variable manager can be used directly without problems either. And the coercion dot is perhaps because the data type has lost its "typedef" in the diagram, although it still exists in the manager. Because of the way I want to use it, I can probably live with a Global, but it seems like a bug anyway.
  11. I've just posted this on the NI forums as well, but might get a better response here :-) I've just upgraded to LabVIEW 8.2 and Vision 8.2. When loading a particular VI, it is searching numerous times for ...\LabVIEW 8.2\resource\objmgr\IMAQ Image.ctl - which of course doesn't exist. As best as I can track it down, this seems to be cause by a Shared Variable I have in the project which is a custom control of a 1D array of Image. So I've created a new project from scratch to illustrate (attached). The VI runs OK, but any editing means that this non-existant control is searched for again. Of interest is also that there is a coercion dot where the Image is used, but the data type on the wire seems OK. Creating a control (rather than a Shared Variable) doesn't do anything strange. Anyone know what's going on here?
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.