The present disclosure relates to signal processing, and more particularly, to techniques for sorting and evaluating signal data.
Analyzing vast data sets consumes an enormous amount of computing resources. In complex signal environments, there may be so many signals present that the computing resources required to analyze all the signals is prohibitive. Signal clustering is a common signal analysis tool used to reduce data sets for subsequent analysis. A signal clustering algorithm can group signals with one or more similar properties to form groups that can then be analyzed/processed as a whole, thereby reducing the number of items to be processed. However, some signal environments are so large and/or complex that, even applying existing signal clustering techniques, computing systems struggle to handle the signal volume. Therefore, non-trivial issues remain with respect to signal sorting and analysis techniques.
Aspects and embodiments are directed to signal sorting and evaluation techniques that may be capable of operating in domains having very high signal rates.
According to one embodiment, a method of sorting signals comprises receiving, via a signal receiver, a plurality of data vectors representing a plurality of signals, establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
Examples of the method may include any one or more of the following features.
In one example, establishing the sparse primary grid includes establishing the sparse primary grid having first and second orthogonal primary axes corresponding, respectively, to first and second parameters of the plurality of data vectors, and establishing the sparse secondary grid includes establishing the sparse secondary grid having first and second orthogonal secondary axes corresponding, respectively, to the first and second parameters of the plurality of data vectors. In one example, establishing the secondary grid includes establishing the secondary grid having a third orthogonal secondary axis corresponding to a third parameter of the plurality of data vectors.
In one example, establishing the first smart object includes associating any secondary cells disposed adjacent to the at least secondary cell and having collected at least one data vector of the plurality of data vectors with the first object.
In one example, the at least one primary cell records the first number of data vectors received within the at least one primary cell and a time of receipt of a most recently received data vector within the at least one primary cell. The method may further comprise deleting the at least one primary cell based on an amount of time, measured since the time of receipt and during which no further data vectors are received within the at least one primary cell, exceeding a predetermined threshold.
In another example, the method further comprises establishing a second smart object based on a third number of data vectors received within an additional secondary cell exceeding the second threshold value. The method may further comprise determining that the first and second smart objects share a common boundary, determining that the first and second smart objects were not previously merged, and merging the first and second smart objects to form a single third smart object.
In another example, the method further comprises determining that the first smart object contains two or more distributions of data vectors, determining a divergence between the two or more distributions of data vectors, and based on the divergence exceeding a predetermined threshold, splitting the first smart object into multiple smart objects, each smart object of the multiple smart objects being associated with one of the two or more distributions. In one example, splitting the first smart object into multiple smart objects includes evaluating, for each secondary cell associated with the first smart object, probabilities that the secondary cell corresponds to each of the two or more distributions, and based on the probabilities, assigning each secondary cell to one of the two or more distributions. In another example, determining that the first smart object contains two more distributions of data vectors includes forming a Chi-square goodness of fit test on a dataset corresponding to the first smart object, the data set including the one or more data vectors associated with the first smart object.
According to another embodiment, there is provided a computer readable medium encoded with instructions executable by one or more processors to implement any examples of the method as discussed above.
Another embodiment is directed to a signal sorting system comprising at least one signal receiver configured to receive a plurality of signals, a data storage, and at least one processor coupled to the data storage and configured to execute a process comprising receiving, via the at least one signal receiver, a plurality of data vectors representing the plurality of signals, establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
In one example, the sparse primary grid has first and second orthogonal primary axes corresponding, respectively, to first and second parameters of the plurality of data vectors, and the sparse secondary grid has first, second, and third orthogonal secondary axes, the first and second secondary axes corresponding, respectively, to the first and second parameters of the plurality of data vectors, and the third secondary axis corresponding to a third parameter of the plurality of data vectors.
In another example, establishing the first smart object includes associating any secondary cells disposed adjacent to the at least secondary cell and having collected at least one data vector of the plurality of data vectors with the first object.
In another example, the at least one processor is configured to store, in the data storage, information corresponding to the at least one primary cell, the information including the first number of data vectors received within the at least one primary cell and a time of receipt of a most recently received data vector within the at least one primary cell. In one example, the at least one processor is further configured to delete from the data storage the information corresponding to the at least one primary cell based on an amount of time, measured since the time of receipt and during which no further data vectors are received within the at least one primary cell, exceeding a predetermined threshold.
In another example, the process executed by the at least one processor further comprises establishing a second smart object based on a third number of data vectors received within an additional secondary cell exceeding the second threshold value, determining that the first and second smart objects share a common boundary, determining that the first and second smart objects were not previously merged, and merging the first and second smart objects to form a single third smart object.
In another example, the process executed by the at least one processor further comprises determining that the first smart object contains two or more distributions of data vectors, determining a divergence between the two or more distributions of data vectors, and based on the divergence exceeding a predetermined threshold, splitting the first smart object into multiple smart objects, each smart object of the multiple smart objects being associated with one of the two or more distributions. In one example, splitting the first smart object into multiple smart objects includes evaluating, for each secondary cell associated with the first smart object, probabilities that the secondary cell corresponds to each of the two or more distributions; and based on the probabilities, assigning each secondary cell to one of the two or more distributions. In another example, determining that the first smart object contains two more distributions of data vectors includes forming a Chi-square goodness of fit test on a dataset corresponding to the first smart object, the data set including the one or more data vectors associated with the first smart object.
Another embodiment is directed to a computer program product including one or more machine-readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out for sorting signals. The process comprises receiving, via a signal receiver, a plurality of data vectors representing a plurality of signals, establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
In one example, establishing the sparse primary grid includes establishing the sparse primary grid having first and second orthogonal primary axes corresponding, respectively, to first and second parameters of the plurality of data vectors, and establishing the sparse secondary grid includes establishing the sparse secondary grid having first, second, and third orthogonal secondary axes, the first and second secondary axes corresponding, respectively, to the first and second parameters of the plurality of data vectors, and the third secondary axis corresponding to a third parameter of the plurality of data vectors.
In another example, establishing the first smart object includes associating any secondary cells disposed adjacent to the at least secondary cell and having collected at least one data vector of the plurality of data vectors with the first object.
In another example, the at least one primary cell records the first number of data vectors received within the at least one primary cell and a time of receipt of a most recently received data vector within the at least one primary cell. The process may further comprise deleting the at least one primary cell based on an amount of time, measured since the time of receipt and during which no further data vectors are received within the at least one primary cell, exceeding a predetermined threshold.
In one example, the process further comprises establishing a second smart object based on a third number of data vectors received within an additional secondary cell exceeding the second threshold value, determining that the first and second smart objects share a common boundary, determining that the first and second smart objects were not previously merged, and merging the first and second smart objects to form a single third smart object.
In another example, the process further comprises determining that the first smart object contains two or more distributions of data vectors, determining a divergence between the two or more distributions of data vectors, and based on the divergence exceeding a predetermined threshold, splitting the first smart object into multiple smart objects, each smart object of the multiple smart objects being associated with one of the two or more distributions. In one example, splitting the first smart object into multiple smart objects includes evaluating, for each secondary cell associated with the first smart object, probabilities that the secondary cell corresponds to each of the two or more distributions, and based on the probabilities, assigning each secondary cell to one of the two or more distributions. In another example, determining that the first smart object contains two more distributions of data vectors includes forming a Chi-square goodness of fit test on a dataset corresponding to the first smart object, the data set including the one or more data vectors associated with the first smart object.
Still other aspects, embodiments, and advantages of these example aspects and embodiments are discussed in detail below. Embodiments disclosed herein may be combined with other embodiments in any manner consistent with at least one of the principles disclosed herein, and references to “an embodiment,” “some embodiments,” “an alternate embodiment,” “various embodiments,” “one embodiment” or the like are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described may be included in at least one embodiment. The appearances of such terms herein are not necessarily all referring to the same embodiment.
In the figures:
Although the following detailed description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent in light of this disclosure.
Aspects and embodiments are directed to systems and methods for implementing signal sorting and evaluation processes that can efficiently and correctly characterize signal densities within unknown environments.
In accordance with one embodiment, a method is provided for sorting signals, the method including receiving, by a processor and via a signal receiver, a plurality of data vectors representing a plurality of signals, and establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received. The method may further include, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
As noted above, there are non-trivial problems associated with signal sorting and analyzing large data sets of many signals. In particular, there exists a need for a signal sorting process that can operate efficiently enough to handle high signal rates. According to certain aspects, techniques are provided to address this need and provide computationally efficient and effective processes for signal sorting in high data rate environments. In this context, “efficiency” refers to minimizing, or at least reducing relative to processing raw signal data, processing time and memory use in computing systems implementing examples of the processes disclosed herein. The disclosed techniques can be used with any type of signals or data, including those associated with multi-dataset systems such as large communication or sensor networks. Additionally, examples of the processes disclosed herein can be implemented in firmware applications, making these techniques potentially valuable technology for many integrated systems. In contrast to some conventional signal clustering algorithms which categorize all signals within a given environment into groups, and thus treat all signals as “relevant,” an example of the present disclosure applies filtering techniques, using the primary and secondary cells, to prioritize signal grouping and focus analysis on areas of interest. In this manner, valuable computing resources can be reserved for analyzing higher-interest/higher-priority signals (which are assigned to smart objects), while relatively computationally “cheap” processes can be used to filter out clutter.
According to certain aspects, techniques disclosed herein may be used to leverage the realization that in many signal domains, only a small portion of the operation space is utilized. For example, in some instances, only 15% or less of the total operation space may contain relevant information. However, in many applications, excess signals in an environment can bog down processing time and complicate analysis. In accordance with some examples, signals are filtered based on signal density within certain regions of the operation space so as to reduce the amount of information to be processed across a given operation space and concentrate analysis on regions of interest that potentially contain relevant information. As discussed in more detail below, according to some examples, primary and secondary grids can be established over the operation space, and individual cells within each grid reduce signals in those cells into the least amount of information: that a signal existed in that region. The signal receiver receives signals over the operation space, and as each signal is received, it is assigned to a primary cell that corresponds to that signal's location in the operation space. Once the signal density (e.g., number of signals received) within a primary cell exceeds a certain threshold, a secondary grid is established within that primary cell. As signals continue to be received within the primary cell, those signals are assigned to secondary cells (based on each signal's location within the primary cell) in the secondary grid corresponding to that primary cell. Once the signal density within a given secondary cell or collection of secondary cells in the secondary grid exceeds a certain threshold, those secondary cell are “promoted” to become one or more “smart objects,” as discussed further below. The smart objects may store additional signal information, and signal analysis can be focused on the smart objects. According to certain examples, the smart objects may be highly customizable in terms of both the signal information stored and the type of signal analysis and processing that may be performed on the information stored in a smart object.
Thus, establishment of the primary cells acts as a first-level “course” filter, that narrows down the portion of the operation space in which secondary grids are formed to those areas that have a certain signal density, indicating that the area, or signals within that area, may be of more interest. Similarly, the secondary grid acts as a next-level filter, further narrowing or focusing the portion of the operation space in which significant processing is to be performed (those areas associated with smart objects) to the one or more secondary cells that have higher signal density. In this manner, only the signals in areas with relatively high signal density become associated with smart objects where computing resources can be focused for analysis.
Referring to
According to certain examples, once the signal density within a given secondary cell 108 reaches a predetermined threshold, the secondary cell 106 may become a smart object 110. A single smart object 110 may cover multiple secondary cells 106, as shown in
The effect of this methodology is that instead of having to create N-dimensional histograms over an entire operational range, only a small fraction of the information has to be recorded. This allows computationally “cheap” methods to determine where important information exists, saving the remaining computational resources for the important information.
In some embodiments, the system 200 can be used in tactical networks including, but not limited to, intelligence, surveillance and reconnaissance (ISR) networks for ensuring reliable operation and situational awareness, Blue Force Tracking (BFT) systems for reducing incidents of friendly fire, electronic warfare (EW) systems for maintaining reliable electronic attack and support operations, and other network-centric operations for enhanced effectiveness.
As discussed in more detail below, the signal sorting processor 204 applies the signal sorting and evaluation processes disclosed herein to the inputs 202 to create the primary and secondary grids, and to group cells to form, as outputs 206, smart objects that can contain information for further processing. In accordance with certain examples, the signal sorting processor 204 may also perform processes to merge smart objects together in certain circumstances, and to separate a smart object into two or more independent smart objects in other circumstances, as discussed in more detail below. In some instances, the outputs 206 representing smart objects can be provided to one or more additional processors (not shown) for further processing before being provided to the display device 210. In other instances, the signal sorting processor 204 may further process the smart objects to obtain other data that is then provided as the outputs 206 and optionally delivered to the display device 210.
Other componentry and functionality not reflected in
The processor 204 can be configured to execute an operating system (OS), such as Google Android (by Google Inc. of Mountain View, Calif.), Microsoft Windows (by Microsoft Corp. of Redmond, Wash.), Apple OS X (by Apple Inc. of Cupertino, Calif.), Linux, or a real-time operating system (RTOS). As will be appreciated in light of this disclosure, the techniques provided herein can be implemented without regard to the particular operating system provided in conjunction with the system 200, and therefore may also be implemented using any suitable existing systems or platforms. It will be appreciated that in some embodiments, some of the various components of the system 200 can be combined or integrated in a system-on-a-chip (SoC) architecture. In some embodiments, the components may be hardware components, firmware components, software components or any suitable combination of hardware, firmware or software.
Unless specifically stated otherwise, it may be appreciated that terms such as “processing,” “computing,” “calculating,” “determining,” or the like refer to the action and/or process of a computer or computing system, or similar electronic computing device, that manipulates and/or transforms data represented as physical quantities (for example, electronic) within the registers and/or memory units of the computer system into other data similarly represented as physical entities within the registers, memory units, or other such information storage transmission or displays of the computer system. The embodiments are not limited in this context.
Referring to
According to certain examples, a primary cell 104 only records the number of signals 102 that are received in that primary cell 104, along with the time of receipt of the most recently received signal 102. Recording timing information allows the system 200 to place a “shelf life” on each primary cell 104. For example, if no further signals 102 are detected within a given primary cell 104 within a certain time period measured from the time of receipt of the most recent signal 102 in that primary cell 104, the system 200 may discard or erase that primary cell 104 and its signal content. This approach allows the system 200 to remove “old” data that may no longer be relevant and thus free up computing resources, rather than maintaining primary cells that do not contain useful information.
As discussed above, the signals 102 may represent data vectors that contain information relating to two or more signal parameters within a given operation space or domain 300. Accordingly, the X and Y axes of the primary grid 100 may represent any of those signal parameters, which may depend on the domain 300 being monitored and/or on the application of the system 200. For example, in a radar application in which the signal receiver 208 is a radar receiver and the domain 300 represents the field of regard of the radar receiver, the X and Y axes may represent azimuth and elevation in the field of regard. In another example, one axis may represent range (i.e., how far the emitter is from the receiver 208) and the other axis may represent altitude of the emitter. In other applications, one axis may represent signal frequency, and the other axis may represent signal magnitude or phase, for example. In other examples, the X and Y axes may represent coordinate information, such as latitude and longitude of the signal source/emitter. It will be appreciated that there are numerous other examples, and the techniques and processes disclosed herein may operate on signals (data vectors) that represent any measured, detected, or determined signal parameters, depending on the application.
Referring to
According to certain examples, the signal density threshold for forming the secondary grid 106 may be a variable threshold. The signal density threshold may be adjusted to either increase or decrease the number of signals required to be received within a given a primary cell 104 during a specified time period in order for the system to proceed to form a secondary grid 106 within that primary cell. In certain examples, the signal density threshold may be application dependent. For example, in some applications, the threshold number of signals may be relatively few signals, such as 3, 6, 10, etc.; whereas in other applications, the threshold number of signals may be tens of signals, hundreds of signals, or more. In some examples, the threshold can be selected during a setup procedure of the system 200 at the start of a signal sorting operation. In other examples, the signal density threshold may be dynamically variable, e.g., by the signal sorting processor 204, to adjust to changing signal rate conditions in the operation space, for example. In other examples, the signal density threshold may be programmable by a user of the system 200.
In some examples, the secondary grid 106 may be created based on sparse grid principles, in a manner similar to formation of the primary grid 100. In other words, in some examples, once the signal density threshold for an active primary cell 104 has been met, the system 200 may begin to create secondary cells 108 based on reception of signals in the operation space corresponding to the active primary cell 104. Thus, the primary cell 104 may be represented by only those active secondary cells 108 (where one or more signals 102 have been detected), rather than by a complete N by M grid.
In some examples, a secondary cell 108 may reduce the information associated with a received signal 102. For example, similar to a primary cell 104, a secondary cell 108 may only record the number of signals 102 that are received in that secondary cell 108, along with the time of receipt of the most recently received signal 102. Again, the timing information may be used to ensure that the system 200 is storing and processing current data, rather than consuming resources by retaining information that may no longer be relevant. In other examples, a secondary cell 108 may store additional information about the received signals 102. Since the creation of a secondary cell 108 is based on a certain signal density existing in the operation space corresponding to that secondary cell, the very formation of the secondary cell 108 may indicate that the signals 102 collected in that secondary cell are more likely to be of interest, and therefore the use of some computing resources to store additional information corresponding to those signals 102 may be warranted.
Over time, within a single primary cell 104, a collection of one or more secondary cells 108 may begin to accumulate large numbers of signals 102. An example of this is illustrated in
According to certain examples, the smart object 502 does not know where it exists within the domain 300. Instead, the secondary cells 108 can be configured to flag incoming signals 102 as belonging to a specific smart object 502. Smart objects 502 may be highly configurable per user and/or application requirements. Smart objects 602 can be configured to store signal information, correlate data, and/or perform any operation needed on a per signal basis by the system 200. Once an incoming signal 102 has been associated with a smart object 502, it is deemed important enough to have additional processing performed on it. In this manner, the system 200 may efficiently handle very large numbers of signals 102 within a domain 300, by sorting and filtering the signals into primary and secondary cells 104, 108 with minimal processing, and reserving computationally “expensive” processing for the signals associated with smart objects.
Some complex signal sorting processes contain an inherent bias towards too few groups or too many. According to certain examples, to aid in total processing, embodiments of the methodology and processes disclosed herein may bias towards fewer groups (i.e., fewer smart objects 502). In some examples, the system 200 may implement two merge rules to determine whether or not to merge two smart objects 502 into a single smart object. The first merge rule considers whether the two smart objects in question share a common boundary. The second merge rule considers whether the two smart objects in question have been split before. According to one example, if two smart objects 502 share a boundary and have not been split before, the system 200 will merge the two smart objects to form a single new smart object. An example of this is illustrated in
Referring to
According to certain examples, a merge may occur based on the two smart objects 502a, 502b sharing the boundary 602 and not having been split apart before, regardless of the number of signals 102 included in the smart objects 502a, 502b or the internal distribution of the signals 102 within either smart object 502a, 502b. Accordingly, the system 200 may be biased towards forming merges and a high number of merges may occur. Merging smart objects 502 may be beneficial in that reducing the number of individual smart objects 502 within a domain reduces the amount of processing to be performed by the system 200. By biasing towards merging, embodiments of the system 200 ensure there is always a minimum number of smart objects 502 that require individual processing. Accordingly, the computing resources required to perform signal processing in a domain 300 may be reduced, making the system 200 better equipped to handle domains 300 with high signal rates.
According to certain embodiments, to counter this hard bias towards merging, a splitting process may be implemented to provide for the ability to split a smart object 502. In certain instances, based on the manner in which secondary cells 108 filter signals 102 into smart objects 502, complex shapes can be created to define smart objects. In addition, in some instances, a smart object 502 may include two or more independent, or at least minimally connected, signal distributions. An example of this is illustrated in
As discussed above, in some examples, the secondary cells 108 may not retain certain information associated with a signal 102. For example, when a signal 102 is received within a secondary cell 108 that is part of a smart object 502, the secondary cell 108 may tag the signal 102 as being associated with the smart object 502, but may not retain information that indicated the location of the signal 102 within the domain 300. Accordingly, unlike the merge process discussed above, in which shared boundaries between secondary cells 108 can be used to determine that two smart objects 502 should be merged, “positional” information (such as boundary locations) may not be available within a smart object 502. Thus, certain embodiments utilize data analysis techniques to appropriately split smart objects based on identifying two or more signal distributions within a smart object 502, as discussed further below.
According to certain embodiments, a splitting process includes determining whether it is likely that a given smart object 502 contains two or more separate signal distributions. To achieve this, in one example, a Chi-square “goodness of fit” test may be run on the dataset corresponding to the smart object 502. If a normal distribution is not detected, then a full split analysis may be run on the dataset. This is denoted in Equation (1) below. It will be appreciated that the case of two normal distributions in a single dataset (i.e., within a single smart object) will fail the Chi-square goodness of fit test.
In some examples, if the dataset fails the Chi-square goodness of fit test, the dataset may be run through a maximum likelihood estimator as denoted in Equation 2. In one example, the initial defaults for both means and variances (of the estimated two signal distributions within the dataset) are the mean and variance of the total dataset. Equation 3 denotes an example of which parameters are tuned during the estimation. In this case, x[n] represents the true signal values in one dimension. Equation 2 operates on one dimension at a time; therefore, the signal splitting process may include repeating the analysis to apply Equations (2) and (3) to the dataset for all valid dimensions. This is due to the explosive nature in computation that may be required as more dimensions are added.
According to certain examples, once the signal distributions are characterized using the above equations, the divergence between the distributions is calculated using the Kullback-Leibler divergence (KLD) equations denoted in Equations 4 and 5 below. The equation is not symmetrical; therefore it can be run twice, and the minimum value taken as the actual divergence. In Equations (4) and (5) below, n is the number of dimensions in the vectors. In this case, n is equal to two as all variables represent distributions in two dimensions.
If the minimum KLD value is above a predetermined threshold, a split may be triggered. In some examples, the split is accomplished by taking every secondary cell 108 that occupies the current smart object 502 and evaluating, using Equation (6) below, which distribution that cell has the highest likelihood of being a member of. Once that is determined, the secondary cell is provided the new smart object identifier.
According to certain embodiments, once a smart object 502 has been split into two new smart objects, those new smart objects may be provided with identifiers (or other tags) that indicate that they no longer follow the merge rules and process discussed above. As noted above, one factor considered in the merge process is whether or not the smart objects being considered for merging have been split before. If they have, instead of following the merge process discussed above, the two smart objects may be re-run through the split function discussed above to confirm that their signal distributions are truly separate. If, at any point, the two smart objects fail to split, they may be merged back together.
The following is an example of MATLAB code that can be used to implement the above-discussed smart object splitting process in accordance with an example of the present disclosure.
Numerous specific details have been set forth herein to provide a thorough understanding of the embodiments. It will be understood, however, that other embodiments may be practiced without these specific details, or otherwise with a different set of details. It will be further appreciated that the specific structural and functional details disclosed herein are representative of example embodiments and are not necessarily intended to limit the scope of the present disclosure. In addition, although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described herein. Rather, the specific features and acts described herein are disclosed as example forms of implementing the claims.
The following examples pertain to further embodiments, from which numerous permutations and configurations will be apparent.
Example 1 provides a method of sorting signals. The method includes receiving, via a signal receiver, a plurality of data vectors representing a plurality of signals, establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
Example 2 includes the method of Example 1, wherein establishing the sparse primary grid includes establishing the sparse primary grid having first and second orthogonal primary axes corresponding, respectively, to first and second parameters of the plurality of data vectors, and wherein establishing the sparse secondary grid includes establishing the sparse secondary grid having first and second orthogonal secondary axes corresponding, respectively, to the first and second parameters of the plurality of data vectors.
Example 3 includes the method of Example 2, wherein establishing the secondary grid includes establishing the secondary grid having a third orthogonal secondary axis corresponding to a third parameter of the plurality of data vectors.
Example 4 includes the method of any one of Examples 1-3, wherein establishing the first smart object includes associating any secondary cells disposed adjacent to the at least secondary cell and having collected at least one data vector of the plurality of data vectors with the first object.
Example 5 includes the method of any one of Examples 1-4, wherein the at least one primary cell records the first number of data vectors received within the at least one primary cell and a time of receipt of a most recently received data vector within the at least one primary cell.
Example 6 includes the method of Example 5, further including deleting the at least one primary cell based on an amount of time, measured since the time of receipt and during which no further data vectors are received within the at least one primary cell, exceeding a predetermined threshold.
Example 7 includes the method of any one of Examples 1-6, further including establishing a second smart object based on a third number of data vectors received within an additional secondary cell exceeding the second threshold value.
Example 8 includes the method of Example 7, further including determining that the first and second smart objects share a common boundary, determining that the first and second smart objects were not previously merged, and merging the first and second smart objects to form a single third smart object.
Example 9 includes the method of any one of Examples 1-8, further including determining that the first smart object contains two or more distributions of data vectors, determining a divergence between the two or more distributions of data vectors, and based on the divergence exceeding a predetermined threshold, splitting the first smart object into multiple smart objects, each smart object of the multiple smart objects being associated with one of the two or more distributions.
Example 10 includes the method of Example 9, wherein splitting the first smart object into multiple smart objects includes evaluating, for each secondary cell associated with the first smart object, probabilities that the secondary cell corresponds to each of the two or more distributions, and based on the probabilities, assigning each secondary cell to one of the two or more distributions.
Example 11 includes the method of one of Examples 9 and 10, wherein determining that the first smart object contains two more distributions of data vectors includes forming a Chi-square goodness of fit test on a dataset corresponding to the first smart object, the data set including the one or more data vectors associated with the first smart object.
Example 12 provides a computer readable medium encoded with instructions that, when executed by at least one processor, cause the at least one processor to execute the method of any one of Examples 1-11.
Example 13 provides a signal sorting system comprising at least one signal receiver configured to receive a plurality of signals, a data storage, and at least one processor coupled to the data storage and configured to execute a process comprising receiving, via the at least one signal receiver, a plurality of data vectors representing the plurality of signals, establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
Example 14 includes the signal sorting system of Example 13, wherein the sparse primary grid has first and second orthogonal primary axes corresponding, respectively, to first and second parameters of the plurality of data vectors, and wherein the sparse secondary grid has first and second orthogonal secondary axes, the first and second secondary axes corresponding, respectively, to the first and second parameters of the plurality of data vectors.
Example 15 includes the signal sorting system of Example 14, wherein the sparse secondary grid further has a third orthogonal secondary axis corresponding to a third parameter of the plurality of data vectors.
Example 16 includes the signal sorting system of any one of Examples 13-15, wherein establishing the first smart object includes associating any secondary cells disposed adjacent to the at least secondary cell and having collected at least one data vector of the plurality of data vectors with the first object.
Example 17 includes the signal sorting system of any one of Examples 13-16, wherein the at least one processor is configured to store, in the data storage, information corresponding to the at least one primary cell, the information including the first number of data vectors received within the at least one primary cell and a time of receipt of a most recently received data vector within the at least one primary cell.
Example 18 includes the signal sorting system of Example 17, wherein the at least one processor is further configured to delete from the data storage the information corresponding to the at least one primary cell based on an amount of time, measured since the time of receipt and during which no further data vectors are received within the at least one primary cell, exceeding a predetermined threshold.
Example 19 includes the signal sorting system of any one of Examples 13-18, wherein the process further comprises establishing a second smart object based on a third number of data vectors received within an additional secondary cell exceeding the second threshold value.
Example 20 includes the signal sorting system of Example 19, wherein the process further comprises determining that the first and second smart objects share a common boundary, determining that the first and second smart objects were not previously merged, and merging the first and second smart objects to form a single third smart object.
Example 21 includes the signal sorting system of any one of Examples 13-20, wherein the process further comprises determining that the first smart object contains two or more distributions of data vectors, determining a divergence between the two or more distributions of data vectors, and based on the divergence exceeding a predetermined threshold, splitting the first smart object into multiple smart objects, each smart object of the multiple smart objects being associated with one of the two or more distributions.
Example 22 includes the signal sorting system of Example 21, wherein splitting the first smart object into multiple smart objects includes evaluating, for each secondary cell associated with the first smart object, probabilities that the secondary cell corresponds to each of the two or more distributions, and based on the probabilities, assigning each secondary cell to one of the two or more distributions.
Example 23 includes the signal sorting system of one of Examples 21 and 22, wherein determining that the first smart object contains two more distributions of data vectors includes forming a Chi-square goodness of fit test on a dataset corresponding to the first smart object, the data set including the one or more data vectors associated with the first smart object.
Example 24 provides a computer program product including one or more non-transitory machine-readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out for evaluating signals. The process includes receiving, via a signal receiver, a plurality of data vectors representing a plurality of signals, establishing a sparse primary grid over an operation space of the signal receiver, the sparse primary grid including at least one primary cell in which at least one data vector of the plurality of data vectors has been received, based on a first number of data vectors received within the primary cell exceeding a first threshold value, establishing a sparse secondary grid within the primary cell, the sparse secondary grid including at least one secondary cell in which one or more data vectors of the at least one data vector have been received, based on a second number of data vectors received within the at least one secondary cell exceeding a second threshold value, establishing a first smart object corresponding to the at least one secondary cell, and associating the one or more data vectors received within the at least one secondary cell with the first smart object.
Example 25 includes the computer program product of Example 24, wherein the process includes the features of any one of Examples 2-11.
Example 26 includes the computer program product of Example 24, wherein establishing the sparse primary grid includes establishing the sparse primary grid having first and second orthogonal primary axes corresponding, respectively, to first and second parameters of the plurality of data vectors, and wherein establishing the sparse secondary grid includes establishing the sparse secondary grid having first and second orthogonal secondary axes corresponding, respectively, to the first and second parameters of the plurality of data vectors.
Example 27 includes the computer program product of Example 26, wherein establishing the secondary grid includes establishing the secondary grid having a third orthogonal secondary axis corresponding to a third parameter of the plurality of data vectors.
Example 28 includes the computer program product of Example 24, wherein establishing the first smart object includes associating any secondary cells disposed adjacent to the at least secondary cell and having collected at least one data vector of the plurality of data vectors with the first object.
Example 29 includes the computer program product of Example 24, wherein the at least one primary cell records the first number of data vectors received within the at least one primary cell and a time of receipt of a most recently received data vector within the at least one primary cell.
Example 30 includes the computer program product of Example 29, wherein the process further comprises deleting the at least one primary cell based on an amount of time, measured since the time of receipt and during which no further data vectors are received within the at least one primary cell, exceeding a predetermined threshold.
Example 31 includes the computer program product of Example 24, wherein the process further comprises establishing a second smart object based on a third number of data vectors received within an additional secondary cell exceeding the second threshold value.
Example 32 includes the computer program product of Example 31, wherein the process further comprises determining that the first and second smart objects share a common boundary, determining that the first and second smart objects were not previously merged, and merging the first and second smart objects to form a single third smart object.
Example 33 includes the computer program product of Example 24, wherein the process further comprises determining that the first smart object contains two or more distributions of data vectors, determining a divergence between the two or more distributions of data vector, and based on the divergence exceeding a predetermined threshold, splitting the first smart object into multiple smart objects, each smart object of the multiple smart objects being associated with one of the two or more distributions.
Example 34 includes the computer program product of Example 33, wherein splitting the first smart object into multiple smart objects includes evaluating, for each secondary cell associated with the first smart object, probabilities that the secondary cell corresponds to each of the two or more distributions, and based on the probabilities, assigning each secondary cell to one of the two or more distributions.
Example 35 includes the computer program product of Example 33, wherein determining that the first smart object contains two more distributions of data vectors includes forming a Chi-square goodness of fit test on a dataset corresponding to the first smart object, the data set including the one or more data vectors associated with the first smart object.
The various embodiments disclosed herein can be implemented in various forms of hardware, software, firmware, and/or special purpose processors. For example, in one embodiment at least one non-transitory computer readable storage medium has instructions encoded thereon that, when executed by one or more processors, causes one or more of the methodologies disclosed herein to be implemented. Other componentry and functionality not reflected in the illustrations will be apparent in light of this disclosure, and it will be appreciated that other embodiments are not limited to any particular hardware or software configuration. Thus, in other embodiments the system 200 may include additional, fewer, or alternative subcomponents as compared to those included in the example embodiment of
The aforementioned non-transitory computer readable medium may be any suitable medium for storing digital information, such as a hard drive, a server, a flash memory, and/or random-access memory (RAM), or a combination of memories. In alternative embodiments, the components and/or modules disclosed herein can be implemented with hardware, including gate-level logic such as a field-programmable gate array (FPGA), or alternatively, a purpose-built semiconductor such as an application-specific integrated circuit (ASIC). In some embodiments, the hardware may be modeled or developed using hardware description languages such as, for example Verilog or VHDL. Still other embodiments may be implemented with a microcontroller having a number of input/output ports for receiving and outputting data, and a number of embedded routines for carrying out the various functionalities disclosed herein. It will be apparent that any suitable combination of hardware, software, and firmware can be used, and that other embodiments are not limited to any particular system architecture.
Some examples may be implemented, for example, using a machine-readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with an embodiment provided herein. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, process, or the like, and may be implemented using any suitable combination of hardware and/or software. The machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium, and/or storage unit, such as memory, removable or non-removable media, erasable or non-erasable media, writeable or rewriteable media, digital or analog media, hard disk, floppy disk, compact disk read only memory (CD-ROM), compact disk recordable (CD-R) memory, compact disk rewriteable (CD-RW) memory, optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of digital versatile disk (DVD), a tape, a cassette, or the like. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, implemented using any suitable high level, low level, object oriented, visual, compiled, and/or interpreted programming language.
Unless specifically stated otherwise, it may be appreciated that terms such as “processing,” “computing,” “calculating,” “determining,” or the like refer to the action and/or process of a computer or computing system, or similar electronic computing device, that manipulates and/or transforms data represented as physical quantities (for example, electronic) within the registers and/or memory units of the computer system into other data similarly represented as physical quantities within the registers, memory units, or other such information storage transmission or displays of the computer system. The embodiments are not limited in this context.
The terms and expressions which have been employed herein are used as terms of description and not of limitation, and there is no intention, in the use of such terms and expressions, of excluding any equivalents of the features shown and described (or portions thereof), and it is recognized that various modifications are possible within the scope of the claims. Accordingly, the claims are intended to cover all such equivalents. Various features, aspects, and embodiments have been described herein. The features, aspects, and embodiments are susceptible to combination with one another as well as to variation and modification, as will be appreciated in light of this disclosure. The present disclosure should, therefore, be considered to encompass such combinations, variations, and modifications. It is intended that the scope of the present disclosure be limited not by this detailed description, but rather by the claims appended hereto. Future filed applications claiming priority to this application may claim the disclosed subject matter in a different manner and may generally include any set of one or more elements as variously disclosed or otherwise demonstrated herein.
This invention was made with United States Government assistance under Contract No. [withheld], awarded by [federal agency withheld]. The United States Government has certain rights in this invention.