Full spectrum Plot / Spectrum of Orbit

Dear Friends,
I would like to plot the Full Spectrum of Generator Shaft. I found some information about the  same which I am reproducing below :
Full spectrum
The full spectrum is an additional diagnostic tool and is also called the spectrum of an
orbit. It shows the same information as an  orbit but in a different format. It helps to
determine the degree of ellipticity (or flattening) associated with the various machinery
conditions along with the precessional direction for all the frequency components present.
To obtain the full spectrum, the orthogonal X and Y transducer signals are fed into the
direct and quadrature parts of the FFT input. The positive and negative vibration
components for each frequency are obtained. Positive is defined to be the forward
precession and the negative component as the reverse precession. These components
yield the following ellipticity and precessional information for a given orbit of any
particular frequency (1× or 2× or …):
•  The sum of two components, forward and  reverse, is the length of the orbit
major axis.
•  The difference between the two components is the length of the orbit minor
axis.
•  The larger of the two components, positive or negative, determines the
direction of precession that is forward or reverse.
One of the possible applications of full spectrum is analysis of the rotor runout caused by mechanical, electrical or magnetic irregularities. Depending on the periodicity of such irregularities observed by the X–Y proximity probes, different combinations of forward  and reverse components are observed. The method forms the basis for  many useful machinery diagnostics.
The full spectrum (just like the normal FFT) can be obtained in a steady-state analysis (a single FFT or waterfall) and even in transient analysis, which would then be called the full spectrum cascade (Figure attached).
I would like to know if anyone has the idea as to how to get this plot?
I am familiar with Labview and normal analysis tools available like FFT etc., but I need help in performing this Advanced Analysis in Labview.
 Regards
Shourya
Solved!
Go to Solution.
Attachments:
A steady-state single full spectrum.JPG ‏9 KB

Dear Preston Johnson,
Thanks for your prompt reply.
Now I am able to open the VIs, however i am getting some errors in executing them, which I am attaching with this post. I hope you get some clues from the error lists and help me in sorting them out.I am sorry for bothering you so much :-)
With regards
Shourya
Message Edited by ssingh1 on 09-06-2009 11:32 AM
Attachments:
Error List in test Full Spectrum VI.JPG ‏50 KB
Error List in oa_Process Order Full Spectrum VI.JPG ‏38 KB

Similar Messages

  • Plot spectrum vs time

    I want to create a plot which show spectrum vs. time. Instead of a waterfall plot, I would like to have two axis:
    - x: time
    - y: frequency
    The frequency axis will have 100 points. Each point represents the strength of the frequency in color (or I may use grayscale). For example:
    - red: large amplitude
    - orange: medium amplitude
    - white: low amplitude
    The graph will automatically scroll to the left as new data is added as a vertical column on colors. In this way, I can see how the frequency content changes over time.
    Can this be done? I am using MS Visual Studio 6.0 C++. I have used  ChartXY and PlotXY for plotting a single spectrum, and for other time based data.
    Thanks! 

    Hi Bbuternowsky,
    One way you could accomplish this would be to use a 3d graph control with the view set to be directly down the z axis.  You can then assign a gradient to the z axis to obtain your z coloring.  There are a number of examples showing the 3d graphing functionality of Measurement Studio:
     C:\Documents and Settings\All Users\Documents\National Instruments\MStudioVS2008\VCNET\Examples\UI\3DGraph
    The color map styles example in this folder demonstrates configuration of the z axis coloring, so that would be a good place to start!
    Al B.
    Staff Software Engineer - TestStand
    CTA/CLD

  • Resonance peaks in frequency vs. amplitude spectrum

    Hello all,
    I am struggling to find a way to analyze some data.  My data is frequency vs. amplitude spectrum plot.  There are resonance peaks in the spectrum.  When the data is clean I use peak detection to measure the frequency spacing of the peaks (the FSR).  When the peaks either have very low contrast, or are noisy, the peak detection doesn't work well.  I am thinking that I should be able to use one of the math functions like an FFT, but I haven't a clue as to which function to use or how.  Any help is greatly appreciated.
    Jim
    Jim
    LV 2013

    Noisy data is always difficult to deal with, even for experts, but don't let that stop you.  Your analysis technique will vary depending upon how much information you have at the beginning.  However, trying to remove noise before analysis is somewhat dangerous.  The noise removal can often distort or remove data you want.  Instead, analyse the basic data with techniques which tend to "ignore" the noise.  Some examples are in order.
    If you know the approximate locations of your peaks, some sort of non-linear fit to a subset of the data for each peak would probably work.  This assumes you know the peak shape and can model it.  The noisier your data, the more robust your fit will need to be.  A Levenberg-Marquardt is fast and easy, but a downhill simplex is more reliable.
    If you know exactly what the peaks will look like, and their exact location when they are there, a singular-value decomposition is fast and efficient and fairly noise immune.
    If you have no clue where the peaks are, but have some idea of their width, try a Savitzky-Golay first derivative filter with a convolution width set by the known width of the peaks.  This will screen out the high frequency noise and give you a zero crossing for every peak and valley in your data.  You can tell which is which by the direction they cross zero.
    Without some data, we can't help you much more.  Since you are new to this, I would highly recommend Numerical Recipes in C by Press et. al.  You will want the second edition (the first does not have Savitzky-Golay algorithms in it).  It gives a very clear explanation of most of the common numerical algorithms and why you would want to use them.  Most of the algorithms are already implemented in LabVIEW.  The building blocks are there for the rest (e.g. matrix multiply and invert, downhill simplex optimization).  Check your local university library.  Most have it.  I have even found it in municipal libraries.
    Good luck.  Let us know if you have further questions.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • LG Spectrum failed to update location error

    I have an LG Spectrum, which I love the phone.  However, it is constantly popping up a message saying "Failed to update My Location - no signal."  It drives me crazy and also drains my battery since it is constantly searching for a location.  I've tried updating the phones OS and nothing seems to make it better.  Is there some kind of fix I can put in or download?  Or is there some issue with the phone that I'm not aware of? 

    On page 176 of your usermanual ( https://scache.vzw.com/multimedia/mim/lg-spectrum/LG-Spectrum-2-um.pdf ), it tells you how to turn OFF location services in your Settings menu.
    Hope this helps.

  • Hi! i need help editing AS2 for a sound Simulated Spectrum

    hi i took this code from here http://www.pixelhivedesign.com/tutorials/Simulated+Flash+Audio+Spectrum+Analyzer/
    but i need to make that the color of the bars (little squares) change in gradient form (for example from red to green vertically) i don't know if i have to use a var or a function... i don't really know how to do it, mostly in wich part i have to insert that new code
    here's de AS.:
    // Simulated Spectrum Analyzer
    // Author: Max Langdon - [email protected]
    // Site: www.pixelhivedesign.com
    spacing   = 1;  // Spacing between bars.
    margin   = 3; // Shift all bars to right.
    tot_bars  = 21;  // Total Spectrum Bars.
    max_height  = 20;  // Maximum height of line in bars.
    // The spectrum definitions.
    // low  = lowest the line(s) will go.
    // high = highest the line(s) will go.
    // n  = number of lines affected.
    // Make sure the sum of your n's = tot_bars.
    // Example Rock Spectrum.
    rock_spectrum = [
            {low:5,high:20,n:2},
            {low:12,high:20,n:8},
            {low:3,high:15,n:3},
            {low:7,high:15,n:3},
            {low:5,high:10,n:3},
            {low:0,high:5,n:2}
    // Start the spectrum analyzer.
    analyzer(rock_spectrum);
    // Simulated Spectrum Analyzer
    // spectrum : Array Spectrum Definition.
    // isOn  : Boolean - Turn on or off Analyzer
    function analyzer(spectrum){
      // Index of first bar range, first {low:#, high:#, n:#}
      var curRange = 0;
      // Number of lines the current range will affect.
      var numLines = spectrum[curRange].n;
      // Generate the vertical bar lines.
      for(var i = 0; i < tot_bars; i++){
        // Attach a one_bar movieclip.
        var bar = this.attachMovie('one_bar','bar'+i,(i+1));
        // Position the movieclip based on its width,
        // spacing and margin specified in our variables.
        bar._x = i * (bar._width + spacing) + margin;
        // Set the bar's range to the current range.
        bar.r = spectrum[curRange];
        // Animate the bar vertically.
        bar.onEnterFrame = function(){
          // Choose a random number between the range we specified.
          var h = Math.round(Math.random() * (this.r.high - this.r.low) + this.r.low);
          // Using the random height, we generate more bars accordingly.
          for(var i = 0; i < h; i++){
            // Attach another bar.
            var bar = this.attachMovie('one_bar','bar'+i,(i+1));
            // Put it above the last bar.
            bar._y -= i * (bar._height + spacing);
            // Immediatly start fading the bar.
            bar.onEnterFrame = function(){
              this._alpha -= 20;
              // If completely faded, remove the MovieClip.
              if(this._alpha == 0) this.removeMovieClip();
        // Countdown the number of lines we setup.
        numLines--;
        // If we reach 0, it is time to get the next range from our spectrum array.
        if(numLines == 0) curRange++, numLines = spectrum[curRange].n;;
    // Turning off the Analyzer.
    function turnOff(){
      // Loop through the number of vertical lines.
      for(var i = 0; i < tot_bars; i++){
        var bar = this['bar'+i];
        // Stop the animation.
        delete bar.onEnterFrame;
        // Loop through the number of bars on the line, except first one.
        for(var j = 1; j < max_height; j--){
          // Remove the bars.
          var b = bar['bar'+j].removeMovieClip();
    thanks you in advance

    sadly no, if i do that that way will onli change the color of the bars en generel, but what I need is to make de bars change from color to color in a gradient way (vertically)

  • Audio Spectrum Circle

    Hi,
    I am trying to create a circle audio spectrum in Aftereffects and the outcome so far I am happy with, however there is one thing that is bugging me!
    Gyazo - 1752e1c73cefeb4442d4fa13bcdf2af0.png
    As shown in the link above, at the top in the middle of the circle spectrum, the spectrum is kind of split down the middle. I don't want this - I want it to continue around without any split
    Any help is appreciated.
    Thanks

    Well, it's a representation of the audio frequency distribution, so I'm not sure what you expect. The only way to  avoid the gap would be to use a duplicate and reverse the direction and then use a bit of masking to blend it in...
    Mylenium

  • How to remove and add plotted data?

    In my code below I would like to add two buttons and by clicking on a button("Remove") it will remove one by one plotted data,and plot it back by clicking on the button("Add") such as the examples:
    Full data plotted by running the class
    Now by a single click on a Remove button last data point disappear
    another click and again last data point disappear, and so on
    The inverse operation would be performed by clicking on "Add" button: each click will add back a data point
    import javafx.application.Application;
    import javafx.beans.property.SimpleDoubleProperty;
    import javafx.event.EventHandler; 
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.chart.LineChart;
    import javafx.scene.control.Button;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.layout.BorderPane;
    public class XYMove extends Application {
    BorderPane pane;
    XYChart.Series series1 = new XYChart.Series();
    SimpleDoubleProperty rectinitX = new SimpleDoubleProperty();
    SimpleDoubleProperty rectX = new SimpleDoubleProperty();
    SimpleDoubleProperty rectY = new SimpleDoubleProperty();
    @Override
    public void start(Stage stage) {
    final NumberAxis xAxis = new NumberAxis(12, 20, 1);
    double max = 12;
    double min = 3;
    max *= (1+((double)3/100));
    min *= (1-((double)3/100));
    final NumberAxis yAxis = new NumberAxis(min, max, 1);
    xAxis.setAnimated(false);
    yAxis.setAnimated(false);
    yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis) {
        @Override
        public String toString(Number object) {
            return String.format("%2.0f", object);
    final LineChart<Number, Number> lineChart = new LineChart<Number, Number>(xAxis, yAxis);
    lineChart.setCreateSymbols(false);
    lineChart.setAlternativeRowFillVisible(false);
    lineChart.setAnimated(false);
    lineChart.setLegendVisible(false);
    series1.getData().add(new XYChart.Data(1, 3));
    series1.getData().add(new XYChart.Data(2, 8));
    series1.getData().add(new XYChart.Data(3, 6));
    series1.getData().add(new XYChart.Data(4, 7));
    series1.getData().add(new XYChart.Data(5, 5));
    series1.getData().add(new XYChart.Data(6, 6));
    series1.getData().add(new XYChart.Data(7, 4));
    series1.getData().add(new XYChart.Data(8, 7));
    series1.getData().add(new XYChart.Data(9, 6));
    series1.getData().add(new XYChart.Data(10, 7));
    series1.getData().add(new XYChart.Data(11, 6));
    series1.getData().add(new XYChart.Data(12, 7));
    series1.getData().add(new XYChart.Data(13, 6));
    series1.getData().add(new XYChart.Data(14, 12));
    series1.getData().add(new XYChart.Data(15, 10));
    series1.getData().add(new XYChart.Data(16, 11));
    series1.getData().add(new XYChart.Data(17, 9));
    series1.getData().add(new XYChart.Data(18, 10));
    pane = new BorderPane();
    pane.setCenter(lineChart);
    Scene scene = new Scene(pane, 800, 600);
    lineChart.getData().addAll(series1);
    stage.setScene(scene);        
    scene.setOnMouseClicked(mouseHandler);
    scene.setOnMouseDragged(mouseHandler);
    scene.setOnMouseEntered(mouseHandler);
    scene.setOnMouseExited(mouseHandler);
    scene.setOnMouseMoved(mouseHandler);
    scene.setOnMousePressed(mouseHandler);
    scene.setOnMouseReleased(mouseHandler);
    stage.show();
    EventHandler<MouseEvent> mouseHandler = new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent mouseEvent) {
        if (mouseEvent.getEventType() == MouseEvent.MOUSE_PRESSED) {            
            rectinitX.set(mouseEvent.getX());
        else if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED || mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED) {
            LineChart<Number, Number> lineChart = (LineChart<Number, Number>) pane.getCenter();
            NumberAxis xAxis = (NumberAxis) lineChart.getXAxis();
            double Tgap = xAxis.getWidth()/(xAxis.getUpperBound() - xAxis.getLowerBound());
            double newXlower=xAxis.getLowerBound(), newXupper=xAxis.getUpperBound();            
            double Delta=0.3;
            if(mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED){
            if(rectinitX.get() < mouseEvent.getX()&& newXlower >= 0){   
                newXlower=xAxis.getLowerBound()-Delta;
                newXupper=xAxis.getUpperBound()-Delta;
        else if(rectinitX.get() > mouseEvent.getX()&& newXupper <= 22){   
                newXlower=xAxis.getLowerBound()+Delta;
                newXupper=xAxis.getUpperBound()+Delta;
            xAxis.setLowerBound( newXlower );
            xAxis.setUpperBound( newXupper );                       
            rectinitX.set(mouseEvent.getX());                                
        public static void main(String[] args) {
            launch(args);
    }Thanks!

    I would use an ObservableList (probably backed by a LinkedList) of XYChart.Data to store the collection of "deleted" data points. Create the buttons as usual; your "Remove" button's event handler should remove the last element of the series and add it to the first element of the deleted items data points. The "Add" button should remove the first element of the deleted data points and add it to the end of the series. You can bind the "disable" property of the remove and add button to Bindings.isEmpty(series1.getData()) and Bindings.isEmpty(deletedDataPoints), respectively.
    Something like
    ObservableList<XYChart.Data<Number, Number>> deletedDataPoints = FXCollections.observableList(new LinkedList<XYChart.Data<Number, Number>>());
    removeButton.setOnAction(new EventHandler<ActionEvent>() {
      @Override
      public void handle(ActionEvent event) {
        deletedDataPoints.add(0, series1.getData().remove(series1.getData().size()-1));
    addButton.setOnAction(new EventHandler<ActionEvent>() {
      @Override
      public void handle(ActionEvent event) {
        series1.getData().add(deletedDataPoints.remove(0));
    removeButton.disableProperty().bind(Bindings.isEmpty(series1.getData()));
    addButton.disableProperty().bind(Bindings.isEmpty(deletedDataPoints));The other approach would be to use a separate List for all the data points, and keep an integer variable storing the number of data points displayed. Your "remove" button would decrement the number displayed, and your "add" button would increment the number displayed. Both would also call
    series1.getData().setAll(allDataPoints.sublist(0, numberOfDisplayedPoints));You might even be able to make the numberOfDisplayedPoints an IntegerProperty and bind the data property of the series to it in a nice way. This approach probably doesn't perform as well as the previous approach (using a stack of deleted points), because you are not directly giving the chart as much detailed information about what has changed.
    Both approaches get problematic (in the sense that you need to carefully define your application logic, and then implement it) if the underlying data has the potential to change.

  • Migrating to Clean Air

    I have a question that I need answered preferably by a Cisco employee or someone who has migrated to Clean Air.  We are thinking of migrating to the Cisco 3500 series APs in our environment.  I was told a while back that Clean Air is only supported as a fork lift upgrade, meaning all APs would need to be 3500 in order to migrate.  I was also told that we could use the 3500s in monitor mode for troubleshooting, but could not intermingle AP models.
    I am aware that the code level needs to be at 7.0 to have the features of clean air, but is it true that I can not migrate slowly to replace my present APs?  I am in a pretty large wireless environment with multiple WiSMs.  There is just no way to do this all at once. 
    Erick

    So will I still be able to see the benefits of the Clean Air technology in a mixed environment?  Interestingly, that is not the information I was given initially. Are there any features in the 7.0 code that I will not have be able to take advantage of or are there any gotchas I need to be aware?  While the benefits of Clean Air may not be recognized with our b/g clients, will the 3500 APs still service b/g clients for network access?
    I found this straight from the Cisco documentation regarding the Clean Air design guide.
    Mixing CleanAir LMAP and legacy non CleanAir APs in the same installation
    Why should I not mix CleanAir LMAP and Legacy LMAP APs in the same physical area? This question pertains to this use case:
    “I currently have non CleanAir APs deployed (1130,1240, 1250, 1140) in local mode. I want to add just a few CleanAir APs to increase my coverage/density. Why can’t I just add some APs and get all the CleanAir features?”
    This is not recommended because CleanAir LMAPs only monitor the serving channel and all CleanAir features rely on measurement density for quality. This installation would result in indiscriminate coverage of the band. You could well end up with a channel (or several) that has no CleanAir coverage at all. However with the base installation, you would be using all of the channels available. Assuming RRM is in control (recommended) it is entirely possible that all of the CleanAir APs could be assigned to the same channel in a normal installation. You spread them out to try to get the best spatial coverage possible, and that actually increases the odds of this.
    You certainly can deploy a few CleanAir APs in with an existing installation. It is an AP and would function fine from a client and coverage standpoint. CleanAir functionality would be compromised and there is no way to really guarantee what the system would or would not tell you regarding your spectrum. There are far too many options in density and coverage which can be introduced to predict. What would work?
    AQ would be valid for the reporting radio only. This means it is only relevant for the channel that it is serving, and this could change at any time.
    Interference alerts and zone of impact would be valid. However, any location derived would be suspect. Best to leave that out all together and assume closest AP resolution.
    Mitigation strategies would be ill-advised to operate because most of the APs in the deployment would not operate the same way.
    You would be able to use the AP to look at spectrum from Spectrum Connect.
    You would also have the option to temporarily switch to monitor mode at any time in order to perform a full scan of the environment.
    While there are some benefits, it is important to understand the pitfalls and adjust expectations accordingly. It is not recommended, and issues arising from this type of deployment are not supportable based on this deployment model.
    A better option if your budget does not support adding APs that do not serve client traffic (MMAP) is to collect enough CleanAir APs to deploy together in a single area. Any area that can be enclosed on a map area can contain a Greenfield CleanAir deployment with full feature support. The only caveat on this would be location. You still need enough density for location.
    http://www.cisco.com/en/US/products/ps10315/products_tech_note09186a0080b4bdc1.shtml

  • Sound and Vibration toolkit for vibration analysis

    Hi guys! I am new to Labview. I am trying to use Sound and Vibration toolkit to analyse the accelerometer signal mounted on a motor through myRio. The analysis are spectral map, order tracking, power spectrum, order spectrum etc. But nothing can be seen from the output graph. The only result I get is from vibration level.
    Attached is a screen shot of my vi and actual vi file. Am I doing it correctly? I really need your help guys....
    Thanks.
    Attachments:
    Vib.vi ‏384 KB

    SK,
    You have serious problems in your File.VI.  Why are your writing to your file and then reading it right back?  Worse, there is no guarantee that the File write will actually occur before the File Read.  You have a race condition set up there between those two Spreadsheet File VI's.
    If you want to maintain a history of whatever has already been written to the file, you should be building it into an array and storing in a shift register.  Even if your File.vi would by chance work the way you want it to, storing data in the file system is much slower than maintaining your data in memory.
    As for your while loop, it is going to run as fast as it can with respect to all the functions occurring inside of it.  Is it possible you are getting 14 iterations of that while loop for each frequency step that is occurring?
    Message Edited by Ravens Fan on 07-25-2009 01:35 AM

  • 5760 WLC Clean Air question

    Hi,
    My customer Cisco 5760 WLCs running as a HA pair. Clean Air has been configured on these boxes but when I do a sh ap dot11 5ghz cleanair summary all the APs show Spectrum Oper State as Down:-
    CPIT-5760-WLC-1#sh ap dot11 5ghz cleanair summary
    AP Name               MAC Address         Slot ID  Spectrum Capable  Spectrum Intelligence   Spectrum Oper State
    AP1                   xxxx.xxxx.xxxx            1  Enabled           Enabled                 Down
    AP2                   xxxx.xxxx.xxxx            1  Enabled           Enabled                 Down
    AP3                   xxxx.xxxx.xxxx            1  Enabled           Enabled                 Down
    Anyone got any ideas as to how I overcome this little obstacle?
    Thanks
    Alan

    Thanks for the reply. As far as I can tell all the radios are operational:-
    and Clean Air has been configured:-
    ap dot11 24ghz cleanair
    ap dot11 5ghz cleanair
    Also the link you sent was for release 7 on the old series controllers whereas this is a HA pair of the 5760s running release 3.03.
    I have been through the configuring Clean Air chapter for this release and it doesn't suggest anything I haven't already tried.
    Alan

  • ACR not applying linear segment w/ProPhoto

    I was using Imatest to check the DR of my Nikon D800e with the Stouffer stepwedge. I was using ACR 7.2 with the Adobe standard profile and PV 2010 with a linear tone curve (sliders set to zero, point curve = linear). When rendering into ProPhotoRGB, I noticed that there was no linear segment at low luminances and the expected linear segment was present with sRGB.
    The Imatest plot is shown along with the calculated response using the densities of the step wedge and the ProPhoto equations. The linear segment starts at target densities of -2.5. This causes ProPhoto to have a slightly greater total dynamic range than sRGB. This is no big deal, but my investigation was to investigate an assertion that ProPhotoRGB has a greater dynamic range than sRGB. It is true that saturation clipping occurs earlier with the narrower space, but luminance clipping should and DR should be about the same.

    deejjjaaaa wrote:
    well, the data that those sensor manufacturers provide for their sensors do not actually exactly reflect the data in the raw files written by firwmare of 3rd party camera manufactureres that are using those sensors, more so that those sensors are probably CCDs with much more circuitry added by actual camera manufacturer like ADC off sensor... and DxO is testing the data in raw files (another story that they are shooting targets that you never encounter in a real life and they use "engineering" definitions of DR)... so what is the beef if a modern small sensor has low readout noise and some big sensor does not ? move towards midtones and picture will better for a big guy... there is no replacement for displacement in the end (unless you use totally obsolete technology).
    The engineering definition of DR is an industry standard and is reported on by Kodak and Dalsa (and their successors) in their data sheets. Photographic DR varies according to how much noise one can accept in the shadows, and each observer may have their own opinions. DXO does provide a full SNR plot from which one can calculate the DRs for any given noise floor. Shown are examples for the Nikon D4 and D800e.
    The larger CCDs in MFDBs do collect more light and have better SNR in the midtones where their high read noise is relatively low in proportion to shot noise. The question is how much SNR is enough? If you can not see the noise at a given image size, does it matter?

  • How to set the number of averages for doing octave analysis

    Hi
    I am using a 4472 DAQ for continuously acquiring time domain signal and doing octave band analysis using Sound and vibration tool kit. How can we set the number of averages while doing the Octave analysis. All  the other FFT vi like FRF, Auto Spectrum, Cross Spectrum have an option for setting the number of averages and then the vi runs for those many averages and it stops. How this same logic can be applied while doing octave analysis.
    Regards,
    Ankit

    Hi Ankit,
    You may want to consider using the VI in a for loop.  By wiring the "number of averages you wish to complete" to the count terminal ("N'), you can control how many times the VI runs.
    Hope this helps,
    Jennifer O.

  • Best way of displaying a waform through a webservice

    Hi
    I  know my way around text based programming languages fairly well, but am very new to Labview.
    The problem I am facing is something that I can't seem to find any good information about on the internet.
    I have a DAQmx board of which I would like to show waveforms of the analog inputs on a website. The webservice documentation says webservices acutally support waveforms, but if I wire it to a terminal I can't start the webservice.
    What I did now is split the x and y values, add them to an array and show them on a webpage using google Charts. This works, but only gives me the image of 1 reading of course. I know you can make a streaming web VI as well, which I could refresh every n seconds, but that still wouldn't give me a continuous stream to the webpage, it would just refresh the image... 
    Am I totally missing something, or is there just no easy way to do this in labview? (I am using labview 2013 btw )
    Thank you,
    Vincent
    Solved!
    Go to Solution.

    You might want to take a look at the new NI Community here: https://decibel.ni.com/content/groups/web-services
    They've posted up some examples of how you can use AJAX/javascript to retrieve data from a web service. You are probably right in breaking apart the waveform - javascript/google charts probably won't know how to handle the LabVIEW waveform data type so better to just send an array of numbers to plot on the chart.
    How you update the chart will be up to you, your web service could either send the full XY plot each time you request it or you could just periodically poll for new values and add them to a local buffer on the client/browser side.
    If you need faster update rates, you might want to check out my WebSockets library (linked in my signature).
    Certified LabVIEW Architect, Certified TestStand Developer
    NI Days (and A&DF): 2010, 2011, 2013, 2014
    NI Week: 2012, 2014
    Knowledgeable in all things Giant Tetris and WebSockets

  • Internet applet

    Hello,
    I have written a program for a course. It recieves a wave file [via a browser windows searching through the file system] and preforms some manipulations on it.
    Now that I have finished, my lectrurer told me to turn it into a java internet applet - where instead of browser window, one could enter a url [or still choose browsing].
    So these are my questions:
    1) How may I turn the program into a java applet? I need it to preform the computation on the server's processor, if that is possible and not too difficult.
    2) How may I change the program to support an url of a wave file? the code I have that deals with wave files is:
    public class handle_input_file {
         /**Handle input file of type wav*/
              //Create a global buffer size
              private static final int EXTERNAL_BUFFER_SIZE = 1280000;
              protected static double duration, rate, LENGTH;
              protected static double[] tau;
              public static int[] sample_WAV_input(File soundFile, double segment_length) throws UnsupportedAudioFileException, IOException, LineUnavailableException{
                   /**public static int[] sample_WAV_input(File soundFile, double segment_length) throws UnsupportedAudioFileException, IOException, LineUnavailableException
                    * receives a file and segment_length, indicating length part in seconds should be analyzed by the SFT
                    * The procedure opens the wave file for reading and returns an array of int(s) of what it read,
                    * and also - sets into global variables the duration in seconds of the file, the sample_rate, and other
                    * information needed later for analysis. The procedure also computes an array of tau values, that is
                    * array of doubles, such that tau[i] acts as "tau" (of the Adi Akavia algorithm) for the ith segment analyzed. 
    //               Load the Audio Input Stream from the file       
                   AudioInputStream audioInputStream = null;
                   audioInputStream = AudioSystem.getAudioInputStream(soundFile);
    //               Get Audio Format information
                   AudioFormat audioFormat = audioInputStream.getFormat();
    //               Handle opening the line
                   SourceDataLine     line = null;
                   DataLine.Info     info = new DataLine.Info(SourceDataLine.class, audioFormat);
                   line = (SourceDataLine) AudioSystem.getLine(info);
                   line.open(audioFormat);
    //               Write the sound to an array of bytes
                   int nBytesRead = 0;
                   byte[]     abData = new byte[EXTERNAL_BUFFER_SIZE];
                   while (nBytesRead != -1) {
                        nBytesRead = audioInputStream.read(abData, 0, abData.length);
                        if (nBytesRead >= 0) {
                             line.write(abData, 0, nBytesRead);
                   }Thank you so much.

    zellazode wrote:
    ...He is not a lecturer of Java. He is a lecturer of Complexity, ..This matter is too complex for him to be commenting on.
    ..Information theory etc.. Are you certain that was not Disinformation theory?
    ..We made a program that preforms Fourier transfrom, but then he said he would like this program to run on from the interent.An HTML form with a <input type='file'> could upload the info to the server. The server might deliver an image (with a view of one 'slice' of the spectrum - the spectrum at any one moment) of an animated GIF showing the spectrum during the course of the sound. If you wanted to tie the sound into that playback, look to delivering back a (e.g.) MOV to the client.
    For the static or animated image, a browser (with no applet) will do just fine. For the MOV, it will take some kind of player. A Java applet with JMF could display a MOV.
    BTW - I suspect this part of the project is way out of the league of either you or your 'vague waving hands' professor.

  • How to plot 3D spectrogra​m using usrp2920 spectrum sensing output

    hi,
    i'm woring on Real-time spectrum sensing using usrp with labview. i would like to know how to plot the usrp baseband spectral info as a 3D spectrogram over the time interval of sensing.

    You can use the 3D graph from the 3D graph palette in LabVIEW.
    You can use shift registers in a loop to catenate each new spectrum measurement (array) to Z matrix (which is the values matrix). This will create a kind of flow effect.

Maybe you are looking for