Question about intensity graphs

Hi all Labview gurus and lovers,
I have a question to all of you. Last time I encountered with the interesting problem connecting to the building of the intensity graphs from the measurements. Suppose I have a matrix of numbers actually the voltages that I give to piezo motors. Afterwards I get some data from the measurement and I build some intensity graph from that data. And I want that every measurement will corresponding to voltage that I gave to the piezo motor. So I want to build the intensity graph as I dictate to the program to build it.
Example: I want to scan area ,some square from x=0.5;y=0.5 to x=-0.5;y=-0.5. and I did some algoritm that builds me some matrix of numbers depending on resolution of the picture; for instance if the resolution is 256, so the number of x will be 256 just like y=256 kinda 256 lines. Afterwards I say to the intensity graph that Xmax is 0.5 and Xmin is -0.5 just like Ymax=0.5 and Ymin =-0.5; also I deliver to him x and y offset and multliplier. So when I see how it builds my gaph I dont see that it starts from the [0.5 0.5] point as I want it. So my question is: how can I be sure that it will start from the point I want it to start?  And how can I dictate to the graph to start to build the graph from the point I want? Because the problem happens when I want to zoom some area. When I zoom some area it gives me something different from what I expect to get.
thank you.

dimani4 wrote:
... also I deliver to him x and y offset and multliplier.
What is your definition of deliver? I don't understand.
All you need to set is the offset and multiplier to define the linear relation between array indices and axis values.
In your particular case you would set x0=0.5 and dx= -1/256 or similar (might need a small tweak)
In summary, x0,dx define the mapping of array indices to real values. These never change for a given set of data. Xmin,Xmax, etc define the visible area. These are modifiied during zooming and are purely cosmetic.
dimani4 wrote:
When I zoom some area it gives me something different from what I expect to get.
You should learn how to ask efficiently. Attach a small example with some typical data in a diagram constant. Tell us what you get and tell us what you expect to get! In the above sentence "different" is not sufficient as a description, since both sides of the equation are undefined!
LabVIEW Champion . Do more with less code and in less time .

Similar Messages

  • A question about Waveform graph

    Hello everyone.. I have made a waveform graph to measure pressure with my DAQ NI-9237. The problem is the time value in the x-axis shown on the picture below. It only shows the measurements from 0 to 1, but i need from 0 to 4 seconds. 
    Thanks in advance
    Oesen
    Best regards
    Oesen

    Hi Oesen.
    It's because you convert your data to a double, which does not contain any information about the time. Instead, simply delete the 'Convert from Dynamic Data' and wire in the dynamic data directly to the chart. The Waveform Chart supports this datatype as well.
    Another solution is to keep the 'Convert from Dynamic Data', but instead of converting the data to doubles, you convert to a waveform. You do this by dobbel-clicking on the function and select 'Single Waveform' in the list. I personally think this is the best solution, since you are now able to work with your data in a way the dynamic datatype won't allow you. Try and wire the waveform to 'Get Waveform Components' and see how data is stored.
    You can read more about the waveform datatype here:
    Using the Waveform Data Type in LabVIEW
    http://digital.ni.com/public.nsf/allkb/B965F316364​DE17B862572DF00363B10
    I hope this information is helpful.
    Best Regards
    Alex E. Petersen
    Certified LabVIEW Developer (CLD)
    Application Engineer
    Image House PantoInspect

  • Question about stacked graph from DB

    Hi There.
    Ive come up against an interesting issue in my current project. In my prototype I have a stacked column chart (just one column) with the 'sections' of each column being defined as in the Flex docs, i.e. I have 3 column series I will call col1, col2, and col3. This works great but now my problem is that when I start getting data from the DB, I could have any number of column series as I have in the DB data pairs in the form of; col1 - 23, col2 - 34, col3 - 14... And there can be x number of records. Has anyone got any references or ideas about how to go about this?
    Thanks in advance.

    Getting on with this I can say I have made (some) progress.
    The file looks as follows:
    <mx:ColumnChart id="columnChart" type="stacked" dataProvider="{this.chartData}" width="507" height="100%" x="781" y="0">
         <mx:horizontalAxis>
              <mx:CategoryAxis categoryField="category" dataProvider="{this.chartData}"/>
         </mx:horizontalAxis>
    </mx:ColumnChart>
    And the AS part:
    private function createChartSeries(event:ResultEvent):void
         var temp:ArrayCollection = event.result as ArrayCollection;
         chartData = new ArrayCollection();
         var i:int;
         chartData.addItem({name:"val1"});
         chartData.addItem({name:"val2"});
         for (i = 0; i < temp.length; i++)
              var series:ColumnSeries = new ColumnSeries();
              series.xField = "name";
              series.yField = temp[i].call_type.toString();
              series.displayName = temp[i].call_type.toString();
              chartData.getItemAt(0)[temp[i].call_type.toString()] = temp[i].cost;
              chartData.getItemAt(1)[temp[i].call_type.toString()] = temp[i].duration;
              columnChart.series.push( series );
         columnChart.dataProvider = chartData;
         columnChart.invalidateSeriesStyles();
         columnChart.series = columnChart.series;
    [Bindable]
    public var chartData:ArrayCollection;
    The event.result is as follows:
    [{type:"t1", val1=10, val2=30}, {type:"t2", val1=20, val2=3}]
    Now call the "createChartSeries" function the y-axis updates, there are 2 columns (well the grey bit down the bottom), but there are no names (the x-axis values) and the actual data columns do not show up.
    Can anyone help me with this one?

  • Cannot make vertical axis of intensity graph logarithmic

    Has anyone else noticed that that the vertical axis on intensity charts cannot be made logarithmic? Labview gives you the option, but doesn't do anything when you try and check the box. Property nodes don't seem to work either. Tried this in LabVIEW 2011 SP1 and 2013. Am I doing something wrong or is this just a feature that isn't avaiable? I am just wondering if its my install or something that is really an issue.
    My application is to plot the power spectrum of sound on a intensity chart to show history of sound recorded by a microphone in real time. Really good to pin point source frequencies of feedback.
    Amit

    Hi Amit,
    This is a documented problem with LabVIEW and it is currently being worked on. Here are a couple other Forums that discuss it and offer workarounds for this issue.
    Log scale in an Intensity graph
    Possible bug in Intensity Graph while using interpolate colors on a Log scale
    Intensity Graph - Mapping Mode
    As shown in the 'Possible Bug' link above, a Corrective Action Request has been filed under the number 453407 as soon as a couple of weeks ago. To fully answer your question, it is not your install or anything like that, just an issue NI knows about and will be working on for future releases.
    Douglas C.
    Applications Engineer
    National Instruments

  • Open 32-bit jpeg & convert to intensity graph form (LV8.5 & Vision 8.5)

    I will cross-post this in the Machine Vision forum as
    well.  I have an LLB to open images with IMAQ vision utilities, and
    then attempt to convert to intensity graph format. I obtain the color
    table of the image from a Vision utility, and subsequently apply to the
    intensity graph in hopes of duplicating the vision container contents. 
    I  am unsuccessful in converting 32-bit jpeg and was hoping for some
    help.  Please let me know if this in fact is even possible to do. 
    Attached is an example jpeg image file.
    Sincerely,
    Don
    Attachments:
    open_image_file_and_convert_to_intensity_graph1.llb ‏207 KB
    Photo_111107_0021.jpg ‏240 KB

    DonRoth wrote:
    Hi George:
    Yes - I understand I am getting only one color plane. 
    With LabVIEW / Vision only, can this jpeg image be displayed in an intensity graph with the proper (original) color information? You say the LabVIEW Read Jpeg File.vi reads this image fine - but how do you display the output of this fx in an intensity graph with the original / proper color information (again using only LabVIEW / Vision, or maybe your toolkit)?
    Unless it is an 8 bit color image already you can always down sample it to 8 bit. I think the IMAQ Cast function should do that, otherwise there is for sure some function to change color depth. Colors will of course change slightly as it is very unlikely that a 24bit image especially if it is a photo, has only 256 unique colors used.
    Once you converted your IMAQ image into an 8 bit image extracting the bitmap and color dtable is easy and then applying it to an intensity graph of course too. Remains the question why you wouldn't want to use the IMAQ control. If it is about IMAQ license costs then of course you won't be able to use other IMAQ functions either so this advice won't help then.
    Rolf Kalbemratter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Image processing from .txt file onto an intensity graph

    I am doing a mini project in my class and I was wondering if anyone could help me. It about image processing but I am bit stuck.
    Heres the idea:
    "An image is really nothing more than a 2D array of data. The value of every element in the array corresponds to the brightness of the image at that point.
    In this project you will create a VI which loads a 2D array of data and then displays it on the screen using the Intensity Graph. Three example files (boats.txt, gordon.txt and parrot.txt) are available on the module webpage that you can use. However, you can also use any other black and white image you like, but will need to convert it to a “text image” first. To do this you can use some software called “ImageJ” which is available on the computers and is free to download.
    You can vary the brightness of an image by adding the same value to every element in the array.
    The contrast of an image is adjusted by multiplying every element in the array by the same value. Using numerical controls and simple array mathematics, you should adjust the brightness and contrast of your displayed image.
    Some other ideas that you could try with image manipulation are:
    o Invert an image (change black to white and white to black)"
    First I am having problems putting my picture onto the graph. It is in the write file but the colours are not correct and the image has rotated 90 degrees. I will upload my VI so far when I get back onto my computer.
    Would really appricate the help! Thank you for reading

    Hi charlthedancer,
    Here is an example to get you started.
    Kind regards,
    GajanS
    Attachments:
    Test.vi ‏14 KB

  • A few questions about MacBooks and Parallels Desktop.

    I have a few questions about MacBooks and Parallels Desktop.
    1) I understand I need at least 1GB of RAM to run Parallels Desktop but what about the hard drive, is the stock 60GB drive big enough?
    2) Related to question 1, even if it was big enough to allow me to install and run Windows would the 60GB drive be enough if I wanted to install a Linux distribution as well?
    3) This has nothing to do with Parallels Desktop but thought I'd ask it here anyway, do Apple Stores carry just the stock MacBooks, or do they carry other configurations?
    Thanks
    Keith

    1. Depend on how intensive you use that HD for saving data on both Mac OS and XP. For standard installation on both OS X and XP, the space of 60 Gb is enough.
    2. Same answer as no 1. You can install all three on that HD space, but the extra spacce available will be less and less for your data. You can save your data on external or back up on cd/dvd and erase it from the HD to keep the free space.
    Remember to leave at least 2 or 3 Gb for virtual memory usage.
    3. Just call them, maybe they don't have it in store stock, but by appointment they might configure one for you before your pick-up date.
    Good Luck

  • Question about the programming of a legend

    Hello everybody,
    I have a question about the programming of a waveform's legend. I
    already asked here in this forum about the legend programming (03)
    months ago.
    I went satisfied but I ve just noticed that this code
    (See Code old_legend_test.llb with main.vi as main function) operates a
    little different from my expectances.
    Therefore I have a new question and I want to know if it
    is possible by labview programming to plot and show, on a waveform
    chart, a signal with activ plot superior to zero (0) without to be
    obliged to plot and show a signal with activ plot equal to zero (0) or
    inferior to the desired activ plot.
    I give you an example
    of what I m meaning. I have by example 4 signals (Signal 0, 1, 2 and 3)
    and each signal corresponds respectively to a channel (Chan1, Chan2,
    Chan3, Chan4). I want to control the legend (activ plot, plot name and
    plot color) programmatically. Is it possible with labview to plot signal
    1 or 2 or 3 or (1, 3) or (2,3) or (1,2,3) or other possible combination
    without to active the signal with the corresponding activ plot zero
    (0)?
    Let see the labview attached data
    (new_legend_test.llb with main.vi as main function). When I try to
    control the input selected values again I get them back but I don't
    understand why they have no effect on the legend of my waveform chart.
    Could somebody explain me what I m doing wrong or show me how to get a
    correct legend with desired plots? Thank by advance for your assistance.
    N.B.
    The
    both attached data are saved with labview 2009.
    Sincerly,PrinceJack
    Attachments:
    old_legend_test.llb ‏65 KB
    new_legend_test.llb ‏65 KB

    Hi
    princejack,
    Thanks for
    posting on National Instruments forum.
    The behavior
    you have is completely normal. You can control the number of row displayed in
    the legend and this rows are linked to the data you send to your graph. Thus,
    if you have 3 arrays of data, let say chan1, chan2 and chan3, you can choose
    which data you want to display in your graph using the property node (Active
    plot and visible). But for the legend as you send 3 plots there is an array of
    the plot name [chan1, chan2, chan3] and you can display 0, 1, 2 or 3 rows of
    this array but you cannot control the order in this array! So, to be able to
    change this array you have to only send data you need to you graph. I'm not
    sure my explanations are clear so I have implemented a simple example doing
    that.
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/
    Attachments:
    GraphLegend.vi ‏85 KB

  • Question about Video Cards on Laptops

     Hi everyone, and sorry if I post this in the wrong area. I own a few computers, some are consider ancient and others are somewhat old but can run Windows XP just fine. I have a question about the computers in the stores today.
    I am looking to invest in a new laptop, possibly a desktop in the near future depending on my budget. The question I have about video cards today is that, I enjoy a good MMO game now and then, I don't expect to play heavy intensive games, just maybe some more advance games. I notice that for one game that I want to play, it requires a video card to have (Shadow Rendering, Vertex and Pixle Shaders). Do the computers today have those as standard for thier video card? Or do I have to invest in a little bit more expensive laptop/desktop. I am willing to invest money for some more RAM, if I need to improve its preformance. The reason I ask is because I have a 4 year old Laptop with a broken keyboard, and I was thinking about just replacing the laptop with a newer one. it has some pretty good specs and runs everything fine, but it can not play certain games because of those missing video requirements. (Current laptop incase someone is curious: 1.5Ghz Celeron M, 1GB memory 64MB video (Shared) ) Thanks to anyone who has the answer to this question. (P.S sorry if everything is scrunched together. for some reason the formatting is wierd on Opera web browser

    Graphics cards have all those standard today... or at least they should unless you get a really cheap Graphics card. The kind of graphics card and processor and other specs of the computer you want to get should depend on what you want to do with it. It also depends on the kind of games you want to play. If you're playing FPS [first person shooter] then you need a really good graphics card and processor. If you're playing something like Diablo 2 or something that's on the lower end of graphics then you just need decent specs. Graphics cards, I suggest something with aGeForce Nividia card... as of today, they are in the 9 series for high-end cards I believe. For processors... get something like Intel Core 2 Duo T9500 or T9600 or the Core 2 Quatros or Extremes. Extremes are intended for hardcore gaming and would be more expensive. For RAM you should have at least 2GB... you can always upgrade that later.
    For laptops my suggestions are:
    $3k+ get a customized alienware
    $2-3 get a customized dell xps, or macbook pro [although if you're gaming i would suggest you dual boot with windows xp or vista]
    $1-2k get a cheaper customized dell, or sony vaio
    under $1k... well I don't know what to say... you can't really get a nice gaming computer for under that price.
    I personally DO NOT like HP computers at all because they are so quirky and have so many problems and break down easily.

  • Setting intensity graph to blinking causes LV2012 to crash

    Hi,
    This VI crashes when setting blinking to TRUE, using LV2012, Win7 32 bit. I saw that this was a bug in 2004 , hasn't it been fixed yet? Or am I missing something obvious?
    Thanks,
    Danielle
    "Wisdom comes from experience. Experience is often a result of lack of wisdom.”
    ― Terry Pratchett
    Solved!
    Go to Solution.
    Attachments:
    testBlinking.vi ‏16 KB

    Yup, still broken LV2013SP1.
    I'm not making any excuses for non-action, but I would image that blinking an intensity graph isn't something they get a lot of complaints about...
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

  • Cursor Misalignme​nt in Intensity Graph (LV6.1)

    Howdy.
    I have an Intensity Graph, with a 2D array of data (about 300x300) and a cursor. The cursor is locked to the plot, which for intensity graphs, means that the cursor is drawn at the lower left corner of the pixel that is being addressed.
    Most of the time this works fine. However, sometimes, the cursor is drawn as being located at one pixel, but the values reported for the cursor are in fact a neighbor (usually the one to the right). The zoom level of the graph is such that a given pixel is larger than a screen pixel (about 3-5 times), so I wouldn't think that it was an aliasing problem, but the problem does go away if I zoom in a little further.
    Has anyone else seen this? Does anyone have a fix?

    I don't have a repeatable set of conditions that lead to this problem, so I don't have a demo vi that exhibits it.
    As to unlocking the cursor, I think that in an intensity plot that is more confusing; the location and value reported for a cursor position are shifted half a pixel down and half left with respect to the way the plot is filled in. In other words, say we have a 10x10 plot shown in 100x100 pixel window. Each intensity value is 10 pixels wide. The axis values line up on the boundaries of these pixels. When the cursor is within half a unit (5 pixels) of the crossing point of these axes, that is, near the intersection of boundaries of four adjacent pixels, the value reported is the pixel location and value in the upper right of these four pixels. This means that with an unlocked cursor, I can be positioning it over (visually) the lower left pixel, but selecting the upper right. In fact 3/4 of any given pixel's visual representation is actually going to select some other pixel. So I've locked the cursor to remove that uncertainty; now it is supposed to be always in the lower left corner of the pixel selected.

  • Cursor/Window for Zooming in Intensity Graph

    Does anybody know how to create a non-rectangular window (any shape
    connected by mouse clicks) for zooming (or for data retrieval) if a
    particular area in the graph is of interest in a intensity graph?
    Wouldn't it be really cool if we can select edges in a graph and
    retrieve the information (or data) from the graph?
    The other question of mine is: is there a way that when we're using
    intensity graphs, we can create the custom menu with right mouse button
    click, instead of the standard set of menu items? Any help is greatly
    appreciated. Thanks.
    Sent via Deja.com http://www.deja.com/
    Before you buy.

    [email protected] wrote:
    > Does anybody know how to create a non-rectangular window (any shape
    > connected by mouse clicks) for zooming (or for data retrieval) if a
    > particular area in the graph is of interest in a intensity graph?
    > Wouldn't it be really cool if we can select edges in a graph and
    > retrieve the information (or data) from the graph?
    In my pre-NI days, I had a lot of fun trying to coax image-manipulation and
    -analysis behavior out of LabVIEW intensity graphs. You can do a fair
    amount by making use of cursors and hotkeys and creating pseudo-overlays by
    setting image coordinates to certain colors to create visual cues in
    response to user inputs.
    That being said, I never considered trying to get complex ROI (region of
    interest) info from a user wi
    th an intensity graph, and I'll bet it's a
    pretty tough GUI trick unless you're using IMAQ Vision. If you find
    yourself trying to build features like this into your application, or doing
    a lot of image manipulation in general, you might save yourself time in the
    long run by getting the IMAQ Vision toolkit from NI.
    > The other question of mine is: is there a way that when we're using
    > intensity graphs, we can create the custom menu with right mouse button
    > click, instead of the standard set of menu items? Any help is greatly
    > appreciated. Thanks.
    I'm not aware of a way to suppress the built-in context-sensitive popup
    menus. Sorry!
    Regards,
    John Lum
    National Instruments

  • Single pixel formation in Intensity graph

    I needed to capture a image using CCD camera. Though it has 16 bit resolution, i need to focus on ONE PIXEL.
    The process goes like this. Save the image information in a spread sheet array and then find the max value of the array. Till this step, i am OK.
    But how do i get to display this MAX value using intensity graph??
    Intensity graph is 2D array which needs X and Y value.
    So I need to get the X and Y value of the max value of array. I tried using the max index value of 'Max and Min' array function. But it is of no use since the value comes as 1Dimension but the intensity graph needs 2D information in the form of X and Y value. 
    Please help me on this. Thanks in advance.

    Asking the same question in multiple threads does not help or get you an answer more quickly.  Please be patient.  Many of us who participate in the Forum do so as volunteers.
    Now to your question.  As you noted, you can use the Array Max & Min function to locate a pixel with the maximum value.  If more than one pixel has that value, this function only reports the first occurrence of that value.  The 1D output of the Array Max & Min function contains the indexes of the pixel.  So the first element would be the row index (X value) and the second element would be the column index (Y value).   What I do not understand is why you want to display just one value on an intensity graph.  That seems rather meaningless.  Please explain what you want the output to look like.
    Lynn

  • Fast intensity graph possible ???

    I want to display some images (echographic images for information) in a 1st intensity graph, extract a given column and display it in a 2nd intensity graph.
    I have already seen that I have to use the 3Dgraphs. But It seems to be "very slow". Every code line as "m_MyGraph3.Plot3DSimpleSurface(MyMatrixData)" takes between 50 and 60 ms !!!
    My images size is approximately 300*300 pixels.
    I have also a 2nd question concerning the cast that I have to perform on the raw data acquired by our device in order to display it. For 2D graph with vector of data I use the following "single line" declaration code:
    "CNiReal64Vector DataNi(vectorsize, RawDataPointer)"
    Can I perform same thing for 3D graph/matrix of data ???
    Thank you in advance.

    The best way to do this is using the background image of a 2D Scattergraph. Each pixel in the bitmap is a data point. It is really fast. I can do a 3200X1024 bitmap each second without any noticable flicker. Here's some C# code on how to do it.
    Note I'm using a gray scale bitmap which is a byte array and a certain PixelFormat. Just use an int array for the bitmap and specify a PixelFormat of color (32bit RGB).
    There you have it.
    Scott
    private void ShowBlockOfData()
    int width = _EqualizedData[0].Length;
    int height = _EqualizedData.Length;
    scatterGraph1.PlotAreaImageAlignment = ImageAlignment.Center;
    PrepareBitmap(width, height );
    // Now create a dummy bitmap. Use the LockBits method to lock the data in
    // memory. This is much faster than SetPixel (I'm not sure you
    // can use SetPixel with an Indexed type image. )
    Rectangle rec = new Rectangle(0, 0, _Plot.Width, _Plot.Height);
    BitmapData bmd = _Plot.LockBits( rec, System.Drawing.Imaging.ImageLockMode.ReadWrite, _Plot.PixelFormat);
    unsafe
    for(int y=0; y < bmd.Height; y++)
    byte* row= (byte*)bmd.Scan0.ToPointer()+(y*bmd.Stride);
    for(int x=0; x < bmd.Width; x++ )
    row[x] = _EqualizedData[y][x];
    _Plot.UnlockBits(bmd);
    scatterGraph1.PlotAreaImage = _Plot;
    private void PrepareBitmap(int width, int height )
    // Create a new bitmap the first time, otherwise use the old one
    // to create a new one. Hopefully, this will save us resources.
    if ( _Plot == null )
    _Plot = new Bitmap(width, height, PixelFormat.Format8bppIndexed );
    AssignPalette( );
    /// If the palette is null, create it and preserve it internally
    /// Set the images palette to our ColorPalette member.
    private void AssignPalette()
    if ( _palette == null )
    // Get the color palette from the image. You can't
    // create one from scratch.
    _palette = _Plot.Palette;
    // Create a grayscale palette by changing this one.
    for ( int i = 0; i < _palette.Entries.Length; i++ )
    int c = 255-i;
    _palette.Entries[i] = Color.FromArgb( c,c,c );
    _Plot.Palette = _palette;

  • Intensity graphs in diadem

    Can you make intensity graphs in diadem like in labview. For example I
    have data that is in one channel group, that has about 100 channels.
    Each channel has a 1d array of data points which have about 50 points
    each. Is it possible to plot this 100 by 50 array in diadem as a
    intensity graph, and how would it be done?
    Thank you

    Hi Timothy 123,
    You can achieve intensity-chart-like behavior in DIAdem by using a 3D surface graph. Please refer to the following tutorial for one such implementation:
    Joint Time Frequency and Order Analysis Tool for DIAdem
    Regards,

Maybe you are looking for