Jump to content
  • To Search the Seeq Knowledgebase:

    button_seeq-knowledgebase.png.ec0acc75c6f5b14c9e2e09a6e4fc8d12.png.4643472239090d47c54cbcd358bd485f.png

Search the Community

Showing results for tags 'sample'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community Technical Forums
    • General Seeq Discussions
    • Seeq Admin Forum
    • Product Suggestions
    • Seeq Data Lab

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Company


Title


Level of Seeq User

Found 3 results

  1. FAQ: I've got a signal with drop-outs and I want to filter my signal to only visualize samples with values above a threshold. Is there a quick way to do this in Seeq? Solution: We can use Seeq's Signal Filtering capabilities to break down a signal into individual samples and create a new signal that keeps the samples only above your specified threshold. 1. Visualize your signal with drop-outs and determine the threshold value. For this example, we will filter out all samples with a value of less than or equal to 40F. 2. Open a new Seeq Formula window and use the search documentation to look for information on filtering a signal. When we begin to type filter, we see right away an option "filter() Signal". Open the documentation to get an understanding of what the function is doing and example syntax. The first example below is taking a string signal and breaking it down into samples, then keeping samples only if their string value is not equal to 'T4A' (note single or double quotes are required for string inputs). The second example is filtering to remove infinite values or NaN values. The first logical statement "$sample.getValue().isValid()" is keeping only the samples with valid values, removing NaN or other invalid values. The second logical statement "$sample.getValue().isFinite()" is keeping only the samples with finite values. Note that we can string as many logical criteria together as we want here using the && operator. In our case, we want to filter our temperature signal to show only samples with values above 40F. The syntax in the formula input window below "$Temp.filter($sample -> ($sample.getValue().isGreaterThan(40)))" shows how we are able to take our temperature signal, break it down into individual samples, and then only keep samples whose value is greater than 40F. The new filtered signal appears nearly exactly the same as the original, but with the drop-outs removed.
  2. I have an interesting question that I need some assistance on. We have a signal that generally has no dominant frequency. However, it sometimes does get a dominant frequency and when it does, we are really interested in two things: What is the dominant frequency? How dominant is it? ( Let's call this "magnitude." ) Tracking both the dominant frequency and the intensity over time using a rolling 2 to 3 hour window every 5 minutes. This value has predictive capability when it does show up, and it intensifies as it gets closer to a particular event we are trying to predict. I've been able get the peak frequency because the formulas are clear enough to figure this out. The problem is the magnitude. The "Frequency Analysis" panel results show something like this: How do I get that peak value? I don't want to have to specify a hard-coded frequency band for this. The problem is that I don't see a function for that. I can call the fft() function in a way in which it returns a "Table" type. signal.fft ( bounds , period , units ) : Table Create a table of frequency magnitudes by analyzing the signal in the bounds. The table will have 2 columns, frequency and magnitude. Then I can use the top() function to return the top 1 row ordered by the greatest "magnitude" column: table.top ( limit , columnName , direction ) : Table However, I cannot for the life of me figure out how to get the "mangitude" value out of the first row returned in "Table" the above function and convert it into a sample at the ending point of the rolling 3 hour/5min period. Is this even possible. Is there a better way? // Getting a rolling 3 hour window every 5 minutes. $periods = periods(3h, 5min) // for condition, get a signal with samples ending at each capsule representing: // key: end of 3hr window // value: peak magnitude of the fft of the $waveSignal $periods.transformToSamples( $cap -> { // excute the expression for each capsule in condition. $tbl = $waveSignal.fft($cap, 1s, 's') // want the results in period lengths, not frequencies. // get the largest magnitude, filtering for the frequency/period length range of interest // get the first row of that table. $r = $tbl.filter('frequency'. isBetween(30s, 150s)) .top(1, 'magnitude', 'desc') .getFirstRow() // *******HOW DO I DO THIS???****** // convert that magnitude calculated to sample located at the end of this capsule. sample($cap.getEnd(), $r.get('magnitude')) } ) Thanks in advance! Even better would be: getting the sum of the values in the peakFrequency +-/ 2s window.
  3. Hello, Using Seeq Tools, are there ways to easily calculate the change in value from one sample to the next, as well as the corresponding sample time? These types of calculations can be useful in a variety of applications (e.g., tank fill/drain, irregularly spaced process samples, equipment status transitions, etc.). Ted Williams
×
×
  • Create New...