Jump to content

Norm Kirchner

NI
  • Posts

    823
  • Joined

  • Last visited

  • Days Won

    25

Posts posted by Norm Kirchner

  1. Multiple times it has been proposed that we (the Community NOT NI) have a few day summit on architectures before NI Week.

    So let's get some ideas out here as to how we could pull this off.

    For those of us in Austin, this would be a pretty easy request to fill, but for the rest of everyone the extra few days of travel might be tough due to lodging costs.

    I propose we have a Community Architecture Camping trip and I'll just bring a generator and a few power strips so everyone can plug their laptops and projectors in.

    We would just have to drink during the day and work at night because looking at a laptop screen in the Austin noon sun is next to impossible w/ out an OLED monitor.

    Ahh I can see it now, we'll all sit around the camp projector and sing dirty LV songs.

  2. Maci,

    You have two basic knobs to deal with.

    1. Signal Acquisition Time
    2. Signal Sampling Rate

    If you want a finer resolution the you MUST capture for a longer time.

    If you are concerned about data size and time to process the FFT then you can utilize the 'Zoom FFT' (See more details here)

    But the jist of the Zoom is that you still sample for a longer time(to get finer frequency resolution), but a lower sampling rate accompanied with band filtering is applied and you 'zoom' into a section of the spectrum. So the net effect is that you don't decrease your capture time (in fact you increase it) but you decrease the data size and processing power needed.

    Hopefully that gives a better picture of what we're getting at.

    So for your situation, where you're sampling at 50k, you're taking unneeded samples. But if there is significant spectral content above 1/2 what you would like to sample at (12.5k) then it would get aliased into your signal and skew your results. That is where the filtering of the zoom FFT comes into play.

    So for you, go ahead and turn down the sampling rate to what you really want, sample for a longer time and put the data into a zoom fft function and you'll get what you're looking for.

    Enjoy

  3. How long are you acquiring for. in sec

    The bin size of your FFT is dependent on the timespan of your acquisition.

    Now I am not a signal processing guru, but I am working my way up the treacherous part of the learning curve, so perhaps I'm not getting your point.

    But step 1, how long are you acquiring for?

    If you want 1hz resolution I believe you need 1 sec worth of samples.

    Your resolution is 1/(acquisition time)

  4. Something that I thought would be a simple act of making some code better has spawned into something very unexpected.

    It started with this

    post-208-1232496030.png?width=400

    and I realized that there was a new buffer acquisition and went wtf?

    So I started to think, how can I prevent this allocation?....In-place structure!!!

    post-208-1232496830.png?width=400

    But all is not as simple as I had hoped. Must be fully reverse compatible/compliant NO EXCEPTIONS.

    The reason this falls short is that

    w/out the in-place structure, if the arrays are 2 different sizes, the output sizes up and pads zeroes

    w/ the in-place structure, the result array size is cropped to the size of the Waveform 1 array size

    (not the same functionality)

    So now it's necessary to determine who is bigger and then let that one be the element that is 'in-place' operated on.

    And now we even need a memory swap function, that unfortunately shows memory allocation as well (but I'll ignore that for now)

    post-208-1232497180.png?width=400

    But now we're showing buffer allocations on the output of the bundle by name!!! Crap.

    Ok, so now I put the inplace structure around my array size logic.

    post-208-1232497430.png?width=400

    So {aside from the allocation at the memory swap} I think I have the most efficient coding of this very simple VI....which is now not simple.

    So would any of you, if you put on the hat of memory efficiency, choose to do this any other way?

    Going to be testing speed and memory now.

    Download File:post-208-1232497642.vi

    So the last step is

  5. There used to be a bit of a hack that always had promise, but had some technical issues because of it's hack status.

    The jist is that you generate a reference off of an element in an array,

    Register that for the mouse down or choice of event,

    have an event structure handle that event and when it fires, use the CtlRef that is presented and suck out the value from the ref or whatever other info you need (although index is not one of those).

    So that being said the LAVA CR might be your best bet, but I always liked this trick or the potential it possessed.

    See link http://screencast.com/t/rtgvYhF7Yt7

  6. I have an architecture that requires a notifier to be part of the class data.

    This is so that wherever the class gets sent to, it can send itself back via what would now be waiting on the created notifier.

    (I know there are other ways but roll w/ me on this)

    So would you think that it's a bug or rather should be illegal to embed a notifier which has the data type be that of the class that it is contained within?

    I understand this feels a little chicken-eggy, but I see no real reason why I should be prevented from doing this.

    (because every time I do try, it breaks the class)

    See the attached code and simply replace the data type within the notifier to be a variant and everything is ok.

    Open project, look at class data def, observe simple data structure, open write notifier.vi, observe dead wire, open typedef and replace

    Download File:post-208-1229833042.zip

    So before I harass an AE that I might actually run into on the elevator, I thought I would see what y'all thought.

  7. Actually my feeling is that each choice has it's place and time. Some have more times than others. In this case though, where he's sending messages/commands to the slaves and standard messages back to the host, the most flexible solution for him I feel would be utilizing strings. I know that there is a mixture of typedef enum and string throughout the program he's working on so it would also depend on how he wants to use it.

    So my 'should' stands with the realization that 'always' did not precede it in my comment

  8. QUOTE

    but I cannot pass the queue references into the slave VI.

    This was your original problem.

    Why not have a Q Reference manager (assuming that they are string based (as they should be)).

    This would be a LV2 Style Global from which you could pass in an enum which would dictate which ref you passed out.

    Inside of this you would register the slave and master Q and as the slaves go dead and are replaced w/ another one you just register the new ref.

    That way everyone can access everyone elses q's as needed in the same manner.

    Also then each plug-in has a standard method of registration of Q and access to the master.

    Whadayathhink?

  9. QUOTE (Jim Kring @ Dec 8 2008, 05:53 PM)

    I'm a quick study.... that and they've been sending me this great drinking water for the past 2 weeks for free! it's great and it tastes yummy too! Did I mention that nothing beats PXI!... where did that come from.... sheesh... that's strange

  10. Yes, I understand that I have a nice eagle next to my name now, but as well I now have the google adds too!! and no access to the premium topic (not like anyone uses it,) but I'm assuming that the other perks are gone as well.

  11. Now after losing my champion status since joining NI, apparently the admins @ LAVA have removed my premium member status.

    What's that about!

    If anything, NI folk should be granted premium status just by the sheer fact that they support the careers of most people on the forums and anything to make our lives easier in turn makes your lives easier.

    So there...

  12. I believe that crelf is correct :(

    I hear that some people who shall remain aivaliotisless shall attempt to thwart any attempt by me to hold it as *inactive*

    Fair enough. Being champion is like being given the keys to the castle. Now it looks like I'll me manning the radar towers inside the walls anyways so other than the title, I still probably get the same action!

  13. As of Tuesday 11/25 I have accepted a position deep in the bowels of NI.

    For those of you who hadn't known, I was recently returned to the free agent job pool.

    I interviewed around and was offered gainful employment @ NI that in turn I have accepted

    It will be in the RF group and I am getting more excited about it by the day.

    The only change though that might happen w/ me here is they may make my relinquish my blatant copyright infringement on the NI ~,~ Captain Logo.

    More will be revealed in weeks to come, but actually as I will be away from home and family in Austin most of the week to start, so my evenings will be free to contribute to the community.... or so I tell myself now!

    So I really didn't think that this was post worthy, but a few gripes have arisen about not noting this en mass.

    And yes, I will be attempting with all my power that I might have to become a presenter on stage at NI week although I might not have enough clout to fill Tim Dehne's shoes.

×
×
  • Create New...

Important Information

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