FFT and discrete values

Hi
Is there an example that shows me how I ccan get the frequency of discrete data points?
I already tried the LV6.1 example vi's but the frequency is not the right one. (I can evaluate the frequency which should be at about 200Hz. The data amount is about 2100 points).

I've attached a VI that extracts the 2nd column from your data, patches in dt (important and missing from your data set) to form a LV Waveform, and computes the Power Spectrum. You will have to enter a different value for dt which is the reciprocal of the sample rate of your data. This will affect the frequency axis of the FFT Power Spectrum, and we can go from there to compute significant components.
The first column from the data set looked like index values, not real time values so I didn't use them.
Attachments:
ComputeFrequencySpectrum.vi ‏55 KB

Similar Messages

  • FFT and Overall Values Differ btwn VI and DIAdem

    Hi all,
    I have an application that displays live vibration readings including the spectrum and overall vibration level.  All my report generation is done in DIAdem scripts, so it's critical that any values calculated and displayed on the LabVIEW side match the values calculated and reported in DIAdem.  The attached VI and Script, when fed the input from the attached TDMS file, give me significantly different values for the magnitude of the FFT and overall RMS value.  Can anyone spot what I'm doing wrong?
    Thanks,
    Scott
    CLAD
    Solved!
    Go to Solution.
    Attachments:
    FFT and RMS Script.VBS ‏5 KB
    FFT and RMS VI.vi ‏39 KB
    VibrationSample.tdms ‏103 KB

    Hello,
    Here is a great reponse from R&D. I felt it would be better to place this on the web then keep it limited to your service request.
    The difference has to do with the Window-correction. The results are identical if you select rectangluar (or no) window.
    Usually a Window is taking a part of the singnal away, so in the first place, the result has a different shape and is smaller compared to result with rectangular window. This can be corrected with a specific factor for each window.
    There are two possible corrections. Random and periodic.
    - Periodic is used if you have pure sine-wave like signals and you want to measure the peak value. A typical use case is the flattop-window which is designed for this type of calculations.   The periodic correction is too large if you want to add the values to calculate the total RMS of the signal or of a the summation of a certain frequency band.
    - Random is correcting the signal back to the correct overall RMS value and should be used in all other cases.
    The periodic correction for the Hanning window is a factor of two. The random correction is about 1.633. DIAdem will give the same result as LabVIEW if you use the following correction type:
    FFTWndCorrectTyp = "periodic"
    In the world of FFT-analysis, the different corrections are very often not obvious and hidden to the user. Unfortunately this is also the case in LabVIEW. You can find a good example of an explanation here:
    http://blog.prosig.com/2009/09/01/amplitude-and-energy-correction-a-brief-summary/
    There are different factors for the different window functions. If you go deeper into the FFT-VI you will find the "Scaled Window VI". This has an output "window constants". With this, it is possible to get the correction values for the window functions.
    I also think, that periodic is wrong in most cases when Hanning is used, because Hanning is best for the summation of RMS values in frequency bands and the results are wrong without a random correction.
    Hope that helps.
    Jacob R. | Applications Engineer | National Instruments

  • Y/t - graphic: discrete values are displayed continuously

    Whenever I want to display discrete values in a y/t - graphic, they are displayed continuously (adjacent function values are connected)
    See for example:
    The lower graphic should show the following discrete function:
    x | (fx)
    ---|--------
    2 | 0
    3 | 1.27
    4 | 0
    5 | 0
    6 | 0.64
    7 | 0
    8 | 0
    9 | 0.42
    But as you can see, adjacent function values are connected. I couldn't find out, how I can change that. Hope someone can helb me!
    thanks,
    Philipp
    Solved!
    Go to Solution.

    Excellent question and documentation! Thank you for making it very easy to answer your question.
    Click on the Paintbrush icon on the Y/t chart display - this is a link to the Colors and Lines properties for the chart display. Select Bar from the drop down list for Input 0.
    If you prefer a discrete symbol, choose from cross, square, circle, etc.
    - cj
    Measurement Computing (MCC) has free technical support. Visit www.mccdaq.com and click on the "Support" tab for all support options, including DASYLab.

  • Converting audio signals from mydaq into discrete values

    Hi guys!
    I am currently building a project that accepts audio signals from mydaq. I wanted to make the analog signals have it descrete peak values. Is this possible? I plan to use the discrete peak values and sum them up using a shift register instead of doing peak detection. I think it is more easy.
    Any suggestions would help. Thank you very much!
    .."in the end we all have false hopes"..
    Solved!
    Go to Solution.

    FalseHope wrote:
    Well actually, i wanted to make the acquired signal have its discrete values because i will use the number of peaks of the sound to determine which sound is louder (my assumption is that, the louder the sound or the nearer the sound to the microphone. The more sound peaks can be acquired. While lesser peaks are acquired the least louder the sound).
    That is wrong (unless you are dealing with Doppler Shifts, but they implies the object is moving).  Closer peaks mean that you are dealing with a higher frequency (or pitch).  Louder sounds just have higher amplitudes (larger peaks).
    FalseHope wrote:
    I will acquire sound signal from the mydaq, then detect the peaks and add those peaks while it is entering the acquisition. I wanted to make it discrete so that i will be able to add the numbers and the addition will stop once the sound is no longer present. The sound im talking about is a sound burst. Or a single instant sound and is not continuous.
    Just use the peak detection function.  You can then add whatever peaks it finds from the current acquisition.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Avoiding null and duplicate values using model clause

    Hi,
    I am trying to use model clause to get comma seperated list of data : following is the scenario:
    testuser>select * from test1;
    ID VALUE
    1 Value1
    2 Value2
    3 Value3
    4 Value4
    5 Value4
    6
    7 value5
    8
    8 rows selected.
    the query I have is:
    testuser>with src as (
    2 select distinct id,value
    3 from test1
    4 ),
    5 t as (
    6 select distinct substr(value,2) value
    7 from src
    8 model
    9 ignore nav
    10 dimension by (id)
    11 measures (cast(value as varchar2(100)) value)
    12 rules
    13 (
    14 value[any] order by id =
    15 value[cv()-1] || ',' || value[cv()]
    16 )
    17 )
    18 select max(value) oneline
    19 from t;
    ONELINE
    Value1,Value2,Value3,Value4,Value4,,value5,
    what I find is that this query has duplicate value and null (',,') coming in as data has null and duplicate value. Is there a way i can avoid the null and the duplicate values in the query output?
    thanks,
    Edited by: orausern on Feb 19, 2010 5:05 AM

    Hi,
    Try this code.
    with
    t as ( select substr(value,2)value,ind
            from test1
            model
            ignore nav
            dimension by (id)
            measures (cast(value as varchar2(100)) value, 0 ind)
            rules
            ( ind[any]=  instr(value[cv()-1],value[cv()]),
            value[any] order by id = value[cv()-1] || CASE WHEN value[cv()] IS NOT NULL
                                               and ind[cv()]=0     THEN ',' || value[cv()] END      
    select max(value) oneline
    from t;
    SQL> select * from test1;
            ID VALUE
             1 Value1
             2 Value2
             3 Value3
             4 Value4
             5 Value4
             6
             7 value5
             8
    8 ligne(s) sélectionnée(s).
    SQL> with
      2   t as ( select substr(value,2)value,ind
      3          from test1
      4          model
      5          ignore nav
      6          dimension by (id)
      7          measures (cast(value as varchar2(100)) value, 0 ind)
      8          rules
      9          ( ind[any]=  instr(value[cv()-1],value[cv()]),
    10          value[any] order by id = value[cv()-1] || CASE WHEN value[cv()] IS NOT NULL
    11                                             and ind[cv()]=0     THEN ',' || value[cv()] END 
    12          )
    13        )
    14   select max(value) oneline
    15   from t;
    ONELINE
    Value1,Value2,Value3,Value4,value5
    SQL>

  • NULL and Space value in ABAP

    Hi All,
           I like to know, is it NULL and Space value is same in ABAP, if it is not how to check null value.
    Thank you.
    Senthil

    everything is correct though some answers are not correct.
    A Database NULL value represents a field that has never been stored to database - this saving space, potentially.
    Usually all SAP tables are stored with all fields, empty fields are stored with their initial value.
    But: If a new table append is created and the newly-added fields do not have the 'initial value' marked in table definition, Oracle will just set NULL values for them.
    as mentioned: There is no NULL value to be stored in an ABAP field. The IS NULL comparison is valid only for WHERE clause in SELECT statement. WHERE field = space is different from WHERE field IS NULL. That's why you should check for both specially for appended table fields.
    If a record is selected (fulfilling another WHERE condition) into an internal table or work area, NULL values are convertted to their initial values anyway.
    Hope that sheds some light on the subject!
    regards,
    Clemens

  • Opening and Closing values on two separate rows for an indvidual A/c?

    Hi / Salam To all SAP Members,
    I am creating a COGS report in which i need to show opening and closing values for a stock account in two separate rows. The tool i am using is report painter.
    What i need to know is how can the system identify between opening and closing values for that account? Which characteristic/s do i need to include in the rows? The table i am using is FAGLFLEXT.
    Please provide help.
    Regards,
    Mohammed Ali Khan.

    Resolved Issue.

  • How to differentiate the EMPTY Records and Null Values in DSO

    Hello....how is everyone here?? Ehehehe!
    I try to load some data from the flat file which contains some EMPTY data and Null Values for the records. The data type for the InfoObjects of the fields "Quantity" is "number". The sample data from the flat file (CSV) are as below:
    Food              Quantity
    Hamburger  -       12
    Cheese        -       0
    Vegetable      -               (Empty)
    When I try to load the above sample data to the DSO, I get the results of the data as follow:
    Food              Quantity
    Hamburger     - 12.000
    Cheese           -  0.000
    Vegetable         - 0.000
    In this case, how can the user differentiate whether the records is contain empty value of null values in DSO? This is kinda of hard to differentiate the both scenarios above. Is there any way to differentiate the scenarios described here?
    Thanks alot =)

    Hi Fluffy,
    It depends on the initial values of the data type
    The inital values For quantity/Currency/ Numbers it takes spaces as 0
    for char it is SPACE
    We cannot differeniate between space and null values.
    IF you have to force this then define quantity as char and load the data. we will not have units and aggregation in this case.
    Hope this helps.
    PV

  • From two given tables, how do you fetch the values from two columns using values from one column(get values from col.A if col.A is not null and get values from col.B if col.A is null)?

    From two given tables, how do you fetch the values from two columns using values from one column(get values from col.A if col.A is not null and get values from col.B if col.A is null)?

    Hi,
    Use NVL or COALESCE:
    NVL (col_a, col_b)
    Returns col_a if col_a is not NULL; otherwise, it returns col_b.
    Col_a and col_b must have similar (if not identical) datatypes; for example, if col_a is a DATE, then col_b can be another DATE or it can be a TIMESTAMP, but it can't be a VARCHAR2.
    For more about NVL and COALESCE, see the SQL Language manual: http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions119.htm#sthref1310
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and also post the results you want from that data.
    Explain, using specific examples, how you get those results from that data.
    Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
    See the forum FAQ: https://forums.oracle.com/message/9362002

  • Union two tables with diffrent count of fields with null and float value

    Hello,
    i want to union two tables, first one with 3 fields and second one with 4 fields (diffrent count of fields).
    I can add null value at end of first select but it does not work with float values in second table. Value form second table is convert to integer.
    For example:
    select null v1 from sessions
    union
    select 0.05 v1 from sessions
    result is set of null and 0 value.
    As workaround i can type:
    select null+0.0 v1 from sessions
    union
    select 0.05 v1 from sessions
    or simple change select's order.
    Is any better/proper way to do this? Can I somehow set float field type in first select?
    Best regards,
    Lukasz.
    WIN XP, MAXDB 7.6.03

    Hi Lukasz,
    in a UNION statement the first statement defines the structure (number, names and types of fields) of the resultset.
    Therefore you have to define a FLOAT field in the first SELECT statement in order to avoid conversion to VARCHAR.
    Be aware that NULL and 0.0 are not the same thus NULL+0.0 does not equal NULL.
    In fact NULL cannot equal to any number or character value at all.
    BTW: you may want to use UNION ALL to avoid the search and removal of duplicates - looks like your datasets won't contain duplicates anyhow...
    Regards,
    Lars

  • Reading and Inserting Value in Long Raw

    Hi guys !!
    I have a table with 15 columns out of which RESUME column has data type long Raw. I want to copy this table to another table with selectd columns and validation. I want to check whether RESUME column is NULL. How to achieve it ?
    Similarly, using VB how to insert and retrieve values in such column ?
    thanx in advance
    Abhi

    do one thing ,
    Create a summary item for detail amount column, say m_tot_amt
    Set its fol. properties
    Calculation Mode : Summary
    Summary : Sum
    Summ.Blk : Your detail blk
    Summ. Item : Your detail amount item
    Also, Set Query all records of your detail block as Yes
    Then In PRE-INSERT/ PRE_UPDATE of detail block, write
    :COP_ORDER_HEADER.DISCOUNT_AMOUNT := nvl(:m_tot_amt,0) ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Find and replace value in Delimited String

    Hi All,
    I have a requirement, where i need to find and replace values in delimited string.
    For example, the string is "GL~1001~157747~FEB-13~CREDIT~A~N~USD~NULL~". The 4th column gives month and year. I need to replace it with previous month name. For example: "GL~1001~157747~JAN-13~CREDIT~A~N~USD~NULL~". I need to do same for last 12 months.
    I thought of first devide the values and store it in variable and then after replacing it with required value, join it back.
    I just wanted to know if there is any better way to do it?

    for example (Assumption: the abbreviated month is the first occurance of 3 consecutive alphabetic charachters)
    with testdata as (
    select 'GL~1001~157747~FEB-13~CREDIT~A~N~USD~NULL~' str from dual
    select
    str
    ,regexp_substr(str, '[[:alpha:]]{3}') part
    ,to_date('01'||regexp_substr(str, '[[:alpha:]]{3}')||'2013', 'DDMONYYYY') part_date
    ,replace (str
             ,regexp_substr(str, '[[:alpha:]]{3}')
             ,to_char(add_months(to_date('01'||regexp_substr(str, '[[:alpha:]]{3}')||'2013', 'DDMONYYYY'),-1),'MON')
    ) res
    from testdata
    STR
    PART
    PART_DATE
    RES
    GL~1001~157747~FEB-13~CREDIT~A~N~USD~NULL~
    FEB
    02/01/2013
    GL~1001~157747~JAN-13~CREDIT~A~N~USD~NULL~
    with year included
    with testdata as (
    select 'GL~1001~157747~JAN-13~CREDIT~A~N~USD~NULL~' str from dual
    select
    str
    ,regexp_substr(str, '[[:alpha:]]{3}-\d{2}') part
    ,to_date(regexp_substr(str, '[[:alpha:]]{3}-\d{2}'), 'MON-YY') part_date
    ,replace (str
             ,regexp_substr(str, '[[:alpha:]]{3}-\d{2}')
             ,to_char(add_months(to_date(regexp_substr(str, '[[:alpha:]]{3}-\d{2}'), 'MON-YY'),-1),'MON-YY')
    ) res
    from testdata
    STR
    PART
    PART_DATE
    RES
    GL~1001~157747~JAN-13~CREDIT~A~N~USD~NULL~
    JAN-13
    01/01/2013
    GL~1001~157747~DEC-12~CREDIT~A~N~USD~NULL~
    Message was edited by: chris227 year included

  • Min and MAx Value in a SELECT Statement

    Hi,
    I have a scenario where I am Selecting the values BETWEEN MIN and MAX values:
    SELECT * FROM ABC WHERE CODE BETWEEN MIN(CODE) AND MAX(CODE)
    ITS GETTING Error as:ORA-00934: group function is not allowed here
    Any help will be needful for me.

    select substr(no,1,3)||to_char(substr(no,4,1)+1) "first missing number"
    from
    with t as
    (select 'ABC1' no from dual
    union select 'ABC2' from dual
    union select 'ABC3' from dual
    union select 'ABC5' from dual
    union select 'ABC6' from dual
    union select 'ABC8' from dual
    select no, lead(no,1,0) over (order by no) next_no from t
    where substr(next_no,4,1) - substr(no,4,1) > 1
    and rownum = 1;

  • Display and return value in select list.

    hi,
    i want to display the value in select list coming from this quary .
    select student_id from class_record where class_id =:p1_class_id and SECTION =:p1_section
    minus
    select student_id from STUDENT_TYPE_DETAILS where class_id =:p1_class_id and SECTION =:p1_section;
    but i want f_name and last name with student_id .f_name and l_name store in table s_per_det.student is also in that table.
    how can i define display value and return value in this quary using 3rd table s_per_det.
    How can i do this.
    Thanks
    manoj

    Ooh, MINUS.... Can you not use a NOT EXISTS in this case, could have a big effect on the execution plan?
    Something like this perhaps?
    SELECT f_name||' '||l_name,
           stundent_id
    FROM class_record a,
         s_per_det b
    WHERE a.student_id = b.student_id
    AND   a.class_id   = :P1_CLASS_ID
    AND   a.section    = :P1_SECTION
    AND   NOT EXISTS(SELECT 'X'
                     FROM student_type_details c
                     WHERE a.student_id = c.student_id
                     AND   c.class_id = :P1_CLASS_ID
                     AND   c.section = :P1_SECTION)Cheers
    Ben
    http://www.munkyben.wordpress.com
    Don't forget to mark replies helpful or correct ;)

  • Where do we pass tax condation type and condation value in this bapi: SD_SALESDOCUMENT_CHANGE

    Hi Experts,
    I am using this to change sales order. SD_SALESDOCUMENT_CHANGE
    I am passing condation type and condation values for each line item under table parameter CONDATION_IN.  Here in which fields do i need pass tax condation type and condation value.
    please give me suggestion it is really help ful.
    Thanks
    laxmi

    Hi ,
    Pass condition type and condition value in fields COND_TYPE and COND_VALUE under table parameter CONDATION_IN. Also pass 'X' to above fields in table parameter of CONDITIONS_INX.

Maybe you are looking for