Universal notch filter

JP2025105619A5Inactive Publication Date: 2025-09-09BIOSIG TECHNOLOGIES INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025060932
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-11-08
Filing Date
2025-04-02
Publication Date
2025-09-09
Estimated Expiration
Not applicable · inactive patent

AI Technical Summary

Technical Problem

Conventional notch filters introduce artifacts like overshoot and ringing, fail to remove multiple harmonics, and cannot calculate or dynamically remove interference signals in real-time, impairing the accuracy of signal recording and display, particularly in medical settings with devices emitting commercial power frequencies and harmonics.

Method used

A universal notch filter using a virtual buffer that adjusts its length to match the interference signal's cycle, subtracting the interference signal without introducing artifacts by employing real-time frequency calculation and interpolation techniques.

Benefits of technology

The universal notch filter effectively removes interference signals without artifacts, reduces harmonics, and adapts to frequency changes, ensuring accurate signal recording and display by dynamically tracking and subtracting interference.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a method, a universal notch filter and a non-transitory computer-readable medium for removing any fixed frequency interfering signal from an input signal without introducing artifacts that are not part of an original signal of interest.SOLUTION: An input signal is a combination of a signal of interest and an interfering signal. A fixed frequency interfering signal is an interfering signal having a fixed frequency. A fixed frequency interfering signal is also an interfering signal having a frequency that varies by approximately 1% over a fixed time period, including, but not limited to, a period of one minute. A universal notch filter 102 receives samples of the input signal (e.g., input signal samples 104), and outputs samples of the input signal with the interfering signal removed (e.g., output signal samples 106).SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Background

[0001] There are many situations where an input signal is corrupted by an interference signal. For example, this situation can occur in a medical research institute where many devices secondarily emit substantial commercial power frequencies and propagated harmonic noise. For example, in North America, this situation is often related to a 60 Hz commercial power frequency and its harmonics. Further, there may also be interference signal emissions from other devices related to their operating frequencies and duty cycles. In order to accurately display and / or record the signal of interest from various sources such as a patient undergoing medical treatment, it is often necessary to remove any fixed-frequency interference signal while securing the signal of interest. Specifically, in many cases, it is necessary to remove any fixed-frequency interference signal without introducing artifacts (e.g., overshoot and ringing) that are not part of the original signal of interest.

Summary of the Invention

Means for Solving the Problems

[0002] Brief Description of the Drawings

[0002] The accompanying drawings, which are incorporated in and form a part of this specification, illustrate the embodiments and, together with the description, further serve to explain the principles of the embodiments and to enable one skilled in the art to make and use the embodiments.

Brief Description of the Drawings

[0003]

Figure 1

[0003] It is a block diagram of a universal notch filter that removes any fixed-frequency interference signal from a signal of interest without introducing artifacts that are not part of the original signal according to some embodiments.

Figure 2

[0004] An example of an input signal with an interference signal superimposed is shown.

Figure 3

[0005] An example of a conventional method for removing noise using a notch filter is shown.

Figure 4

[0006] An example of the result of applying the conventional notch filter of FIG. 3 is shown.

Figure 5

[0007] An example of the 180 Hz harmonic still present in the output of the conventional notch filter of FIG. 3 is shown.

Figure 6

[0008] An example of a universal notch filter for filtering a signal having interference signals at 60 Hz and 180 Hz according to some embodiments is shown.

Figure 7

[0009] An example of a universal notch filter for filtering a signal having a 50 Hz interference signal according to some embodiments is shown.

Figure 8

[0010] An example of a universal notch filter for filtering a signal having a 60 Hz interference signal according to some embodiments is shown.

Figure 9

[0011] An example of a universal notch filter that accumulates a copy of the interference signal during static time according to some embodiments is shown.

Figure 10

[0012] An example of the filter response of a universal notch filter used to accumulate a copy of the interference signal according to some embodiments is shown.

Figure 11

[0013] A flowchart of a process for filtering noise from an input signal using a universal notch filter according to some embodiments.

Figure 12

[0014] An example of a computer system according to some embodiments is shown.

DETAILED DESCRIPTION OF THE INVENTION

[0004]

[0015] The features and advantages of the present embodiment will become more apparent from the detailed description set forth below in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. Do so. In the drawings, like reference numerals generally indicate identical, functionally similar, and / or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit of the corresponding reference numeral.

[0005] Detailed Description of the Invention

[0016] Embodiments and / or combinations and sub - combinations thereof of a system, apparatus, device, method, and / or computer program product are provided for removing any fixed - frequency interference signal from an input signal without introducing artifacts (such as overshoot and ringing) that are not part of the target original signal.

[0006]

[0017] There are many situations where the input signal is impaired by interference signals. For example, this situation can occur in a medical research institute where many devices tend to emit noise having a substantial commercial power frequency and propagation harmonics. For example, in North America, this situation is mainly related to a commercial power frequency of 60 Hz and harmonics. Furthermore, there may also be interference signal emissions from other devices related to their operating frequencies and duty cycles. In order to accurately display and / or record the target signal from various sources of origin, it is often necessary to remove any interference signals from the input signal while ensuring the target original signal.

[0007]

[0018] Conventional solutions for removing interference from a fixed - frequency signal while securing the target signal have several technical problems. First, these conventional solutions often introduce artifacts (e.g., overshoot and ringing) that are not part of the original signal of interest. Second, these conventional solutions often cannot remove multiple harmonics of any interfering signal. Finally, these conventional solutions often cannot calculate the frequency of the interfering signal in real - time or dynamically remove the interfering signal in real - time. For a system, method, and computer program product for accurately displaying and / or recording a target signal (e.g., a biosignal such as an electrocardiogram signal) from various sources of origin, the entire "Systems And Methods To Visually Align Signals Using Delay" U.S. Patent No. 10 356001 is incorporated herein by reference in its entirety.

[0008]

[0019] The embodiments described in this disclosure solve these technical problems. For example, FIG. 1 is a block diagram of a universal notch filter 102 that removes any fixed - frequency interference signal from an input signal without introducing artifacts (e.g., overshoot and ringing) that are not part of the original signal of interest, according to some embodiments. The input signal can be a combination of a target signal and an interference signal. The fixed - frequency interference signal can be an interference signal having a fixed frequency. The fixed - frequency interference signal can also be an interference signal having a frequency that varies approximately 1% over a certain time period including one minute, although not limited thereto. The universal notch filter 102 can receive samples of the input signal (e.g., input signal sample 104). The universal notch filter 102 can then output samples of the input signal with the interference signal removed (e.g., output signal sample 106).

[0009]

[0020] The universal notch filter 102 can be a hardware or firmware circuit, software, or a partial combination thereof. For example, the universal notch filter 102 can be a software module executable by one processor (or multiple processors) such as the processor 1204 in FIG. 12. The universal notch filter 102 can apply digital processing functions to one or more signal samples. As understood by those skilled in the art, the digital processing function can be a mathematical algorithm that takes one or more signal samples as inputs, processes them, and generates one or more potentially modified signal samples as outputs. The digital processing function can be implemented using one or more mathematical operations such as fast Fourier transform, wavelet, or the like. As understood by those skilled in the art, the universal notch filter 102 can apply various types of digital processing functions. It can be implemented using one or more mathematical operations such as fast Fourier transform, wavelet, or the like. As understood by those skilled in the art, the universal notch filter 102 can apply various types of digital processing functions.

[0010]

[0021] The universal notch filter 102 can remove any fixed-frequency interference signal from the input signal without introducing artifacts (such as overshoot and ringing) that are not part of the original signal of interest. For example, in an electrophysiology laboratory equipped with many devices that emit substantial commercial power frequency and harmonics (such as noise at one or more frequencies), the electrocardiogram signal can be impaired by noise. For example, in North America, this noise can mainly be a 60 Hz noise signal and harmonic noise. FIG. 2 shows an example of a signal (such as spike 202) with a 60 Hz interference signal 204 superimposed according to some embodiments.

[0011]

[0022] While ensuring the target signal, it is desirable to remove the interference signal. For example, this often applies when attempting to accurately record the target heart signal during cardiac mapping, ablation, or other similar medical procedures. Conventional solutions for removing a 60 Hz interference signal involve using a notch filter with a transmission zero at 60 Hz. FIG. 3 shows an example of a conventional approach for removing a 60 Hz interference signal using a notch filter with a transmission zero (a single notch) 302 at 60 Hz.

[0012]

[0023] FIG. 4 shows an example of the result of applying the notch filter of FIG. 3. As shown in FIG. 4, the 60 Hz interference signal has been removed from the input signal 402 to generate a filtered signal 404. However, the notch filter of FIG. 3 has several technical problems. For example, the notch filter of FIG. 3 can introduce transient responses such as overshoot and ringing 408 after a large spike 406 into the filtered signal 404. This overshoot and ringing can be filter artifacts and not part of the original input signal of the target. This is not desirable in many applications, such as applications in the field of electrophysiology, and the accuracy of cardiac recordings can be reduced due to such overshoot and ringing.

[0013]

[0024] In addition, conventional 60 Hz notch filters may not reduce any of the harmonics of the 60 Hz interference signal. For example, as shown in FIG. 5, if the input signal 502 contains interference signals at both 60 Hz and 180 Hz, the 180 Hz harmonic can still be present in the output of the conventional notch filter. FIG. 5 shows an example of the 180 Hz harmonic that still exists in the filtered signal 504 at the output of the conventional filter of FIG. 3.

[0014]

[0025] Therefore, conventional notch filters have several technical problems. First, conventional notch filters can introduce overshoot and ringing into the signal of interest. Second, conventional notch filters often cannot remove multiple harmonics of any interfering signal. Finally, conventional notch filters often cannot calculate the frequency of the interfering signal in real time or remove the interfering signal dynamically in real time.

[0015]

[0026] In some embodiments, the universal notch filter 102 can apply a notch filter that does not introduce overshoot and ringing into the signal of interest, reduces high-level harmonics, removes any fixed-frequency interfering signal, and has an adjustable convergence time. The universal notch filter 102 can solve the above technical problems of conventional notch filters by using a virtual buffer having a length corresponding to the length of one cycle of the interfering signal. The universal notch filter 102 can extract the interfering signal and put it into the virtual buffer, and can subtract the interfering signal from the input signal. Thereby, the interfering signal can be removed without introducing artifacts (such as overshoot and ringing) associated with conventional notch filters. The virtual buffer can be a data buffer managed by software. The virtual buffer can be a circular data buffer. The universal notch filter 102 can set the virtual buffer length to a length corresponding to the length of one cycle of the interfering signal. In other words, the frequency of the interfering signal can determine the time interval of the virtual buffer.

[0016]

[0027] The virtual buffer can be implemented using one or more physical memory locations for storing data (such as samples of a signal). The number of physical memory locations in the virtual buffer can determine the accuracy of the representation of the interfering signal cycle in the virtual buffer.

[0017]

[0028] The virtual buffer can be implemented using one or more physical memory locations for storing data (e.g., samples of a signal). The number of physical memory locations in the virtual buffer can determine the accuracy of the representation of the interfering signal cycle in the virtual buffer.

[0018]

[0029] A virtual buffer can present a finite number of virtual memory locations. The virtual memory locations of the virtual buffer may correspond to physical memory locations. The virtual memory locations may not correspond to a single physical memory location. For example, the universal notch filter 102 can store data (e.g., signal samples) corresponding to the virtual memory locations of a virtual buffer that does not have a corresponding single physical memory location by updating one or more physical memory locations near the virtual memory locations. Thus, the virtual buffer can provide one or more virtual memory locations for storing data (e.g., signal samples), and the virtual memory locations may correspond to non-physically addressable memory locations implemented using physical memory locations or one or more physical memory locations.

[0019]

[0030] To measure the length to set up the virtual buffer, the universal notch filter 102 can calculate the frequency of the interference signal in real time (e.g., using fast Fourier transform or other techniques). Then, the universal notch filter 102 can set the length of the virtual buffer to match the length of one cycle of the interference signal.

[0020]

[0031] The universal notch filter 102 can also adjust the cycle length of the virtual buffer to match changes in the cycle length of the interference signal. This process may involve the universal notch filter 102 checking the movement of the interference signal stored in the virtual buffer. For example, if the number of discrete locations in the virtual buffer exactly matches the interference signal cycle length, the stored interference signal pattern may not move within the virtual buffer. However, if the virtual buffer length is too long, the pattern may move to the left. If the virtual buffer length is too short, the pattern may move to the right. The universal notch filter 102 can adjust the virtual buffer length to match the cycle length of the interference signal of the input signal by determining the speed and direction of the pattern shift.

[0021]

[0032] In some embodiments where the frequency of the interference signal is known in advance, the universal notch filter 102 can reproduce one cycle of the interference signal in the virtual buffer, subtract it from the input signal, and extract the original signal of interest. Since the commercial power frequency noise can be constant or nearly constant, the universal notch filter 102 can use some variant form of averaging to refine the estimated value over time. Since the frequency of the interference signal is known in advance, the length of the virtual buffer can be determined in advance. Additionally, if the virtual buffer is configured to store exactly one cycle, the virtual buffer can also store an integer number of higher frequency harmonics, and those harmonics can be subtracted from the input signal. FIG. 6 shows, according to some embodiments, an example of filtering an interference signal having noise at 60 Hz and 180 Hz using the universal notch filter 102. Since the commercial power frequency noise is constant, one cycle of the interference 602 can be reproduced and subtracted from each cycle 604 of the consecutive cycles of the input signal.

[0022]

[0033] In the case of a known 50 Hz interference signal and a sample rate of 2000 samples per second, the duration of one cycle of the 50 Hz signal is 40 sample intervals. This can be directly accommodated in a virtual buffer where the cycle duration is an integer number of samples. FIG. 7 shows, according to some embodiments, an example of filtering a signal having a 50 Hz interference signal sampled at 2000 samples per second using the universal notch filter 102.

[0023]

[0034] As shown in FIG. 7, if sample 1 is at the start of a single cycle, the sample data can be added to the virtual buffer in order. Sample 41 can be at the end of the 50 Hz cycle (or at the start of the next cycle). When the data sample is added to the virtual buffer, sample 41 can be used to update the data at sample location 1 of the virtual buffer in the next cycle.

[0024]

[0035] The universal notch filter 102 can update the sample data of the virtual buffer according to an average algorithm that functions to accumulate data of an interference frequency or a frequency that is several times that frequency in the virtual buffer. For example, the percentage of sample 41 can be added to the percentage at buffer location 1 at a ratio of 0.9 to 0.1. Similarly, the same ratio of sample 42 can be added to buffer location 2, and so on. This method can be called an exponential average. The change in the ratio of the received signal added to the buffer location can change the convergence rate and sharpness of the universal notch filter 102.

[0025]

[0036] The above example in FIG. 7 shows a case where the cycle duration is an integer number of samples. However, this is not often the case. For example, in the case of a 60 Hz interference signal and a sample rate of 2000 samples per second, the duration of one cycle of the 60 Hz interference signal is 33 and 1 / 3 sample intervals. Since 33 and 1 / 3 sample intervals cannot be directly accommodated in a conventional integer-sized buffer, this is a technical problem.

[0026]

[0037] In some embodiments, this technical problem can be solved by the universal notch filter 102 using a virtual buffer having a length that matches the length of one cycle of the interference signal. In the case of a 60 Hz interference signal and a sample rate of 2000 samples, the length of the virtual buffer can be 33 and 1 / 3 sample intervals. Different from the example shown in FIG. 7, sample 35 may not be directly added to sample 1 after the first cycle. However, theoretically, sample 35 can be added to the sample position that is 2 / 3 of the distance between virtual memory location 1 and virtual memory location 2 of the virtual buffer. This can be called virtual memory location 1.67. This situation is shown in FIG. 8.

[0027]

[0038] As shown in FIG. 8, since a physical memory location is not possible at virtual memory location 1.67, the data from sample 35 can be used to update a physical memory location near virtual memory location 1.67 of the virtual buffer. For example, the value of virtual memory location 1.67 (e.g., sample 35) and the value of virtual memory location 3 can be interpolated to calculate the value of virtual memory location 2 of the virtual buffer, and then that value can be used to update virtual memory location 2 according to an averaging algorithm (e.g., exponential averaging). Since virtual memory location 2 is at the one-fourth (1 / 4) position between location 1.67 and location 3, the value of location 2 is * 0.75 * × value (location 1.67) + 0.25 × value (location 3) can be assumed (e.g., using linear interpolation). After calculating the estimated value, 10% of the estimated value can be added to 90% of the current value of virtual memory location 2 to generate an updated value. Then, the universal notch filter 102 can repeat this process for the next sample. As part of this process, the universal notch filter 102 can continuously update a sample location variable that accurately tracks the location in the virtual buffer where the next received sample will enter.

[0028]

[0039] As will be understood by those skilled in the art, the above is merely an example. As will be understood by those skilled in the art, there are many other interpolation methods related to two or more values for estimating the value of one or more physical memory locations of the virtual buffer. These methods can include, but are not limited to, linear interpolation, quadratic interpolation, polynomial interpolation, splines, and the least squares method. Further, as will be understood by those skilled in the art, there are many averaging methods for updating the physical memory locations in the virtual buffer to converge to an accurate representation of the interference signal. These methods can include, but are not limited to, exponential averaging, N-sample averaging, splines, and filtering.

[0029]

[0040] The next part of the process could be to subtract from the input signal a stored replica of the interference signal stored in the virtual buffer. In the case of an integer number of samples of the interference signal cycle, the interference can be subtracted from the input signal sample by sample, which can be done by using the virtual buffer as a circular buffer and wrapping around the end point to return to the start at the end of each cycle.

[0030]

[0041] However, with a non-integer number of samples and a virtual buffer, the data is retrieved from a virtual memory location that does not coincide with a physical memory location. In this case, the virtual memory location, which is not a physical memory location, can be calculated by interpolating values from known locations. For example, the universal notch filter 102 can calculate the virtual memory location 4.6 by using the average of virtual memory location 4 and virtual memory location 5, or by using higher-order interpolation involving more locations, as would be understood by one skilled in the art.

[0031]

[0042] In some embodiments, the universal notch filter 102 can increase the number of virtual memory locations in the virtual buffer. Instead of separating the virtual memory locations at 1 sample interval, the universal notch filter 102 can separate them at 1 / 2 sample interval (e.g., twice the number of virtual memory locations), 1 / 3 sample interval (e.g., three times the number of virtual memory locations), or any number large enough to accurately represent a single cycle of the interference signal as long as the universal notch filter 102 can accurately track the position with respect to the cycle time. This allows the universal notch filter 102 to increase the accuracy of the representation of the interference signal cycle and provide better filter performance.

[0032]

[0043] To accumulate a steady interference signal in the virtual buffer, data can be collected during the "static time" of the waveform. As understood by those skilled in the art, the static time can be the time of the input signal without large spikes or edges. The static time can be determined, for example, by calculating the slope, magnitude, or other metrics of the signal power of the input signal. FIG. 9 shows an example of a universal notch filter 102 that accumulates a copy of the interference signal during the static time for an input signal 902 according to some embodiments. Multiple cycles of the interference signal 904 can be collected in the buffer during the static times 906, 908, and 910. These cycles are averaged during the static time to build an exact copy of the interference 904. Since the interference signal is constant for segments 906, 908, 910, only cycles of the fundamental and harmonic frequencies can be accumulated. The average of the cycles of other frequencies can be zero.

[0033]

[0044] For each new point sampled from the received data, a determination can be made as to whether it is within the "static time" of the input signal. The static time can be determined by calculating non-static characteristics such as the slope, magnitude, power, or other various characteristics of the input signal, as understood by those skilled in the art. For example, when the non-static characteristic falls below a threshold, it can be determined that the static time has started. If the new point is within the static time, it can be averaged with the data previously stored in that virtual memory location of the virtual buffer. As time progresses, this averaging process can accumulate a replica of the interference signal, and the accumulated signal can be subtracted from the input signal. For those locations not within the static time, the virtual buffer is not updated, but the accumulated signal can still be subtracted.

[0034]

[0045] As shown in FIG. 10, when each sample is added to the virtual buffer, averaging results in a filter that peaks at the interference frequency 1002 and all harmonics. This allows the interference frequency and all harmonics to be selectively accumulated and all other frequencies to be rejected. As a result, the universal notch filter 102 can subtract only the interference signal.

[0035]

[0046] FIG. 10 shows an example of the filter response of the universal notch filter 102 used to accumulate a copy of the interference signal according to some embodiments. To generate the virtual buffer filter shown in FIG. 10, for example, 5% of the new samples can be added to 95% of the accumulated value to update the virtual buffer. In situations specific to the implementation, other combination percentages of each new sample and the accumulated value can be combined.

[0036]

[0047] The universal notch filter 102 offers several advantages over conventional notch filters. First, the universal notch filter 102 can be flexible. By using a virtual buffer, the filter frequency is not limited to discrete sample intervals, so the selection of the filter frequency is virtually unlimited (e.g., within the Nyquist limit of the sampled data). For example, if it is slightly off the nominal power frequency of 50, e.g., 50.001 Hz, the universal notch filter 102 can be set to 50.001 Hz to optimize rejection.

[0037]

[0048] Second, the universal notch filter 102 can track the frequency of the interference signal. When the frequency of the interference signal changes slowly, the universal notch filter 102 can track the change in real time. The universal notch filter 102 can calculate the frequency of the interference signal in real time (e.g., using fast Fourier transform or other techniques) and adjust the virtual buffer length to match the change cycle length of the noise signal. The universal notch filter 102 can also check the movement of the stored noise signal. When the virtual buffer cycle length is adjusted to exactly match the noise cycle length, the stored pattern may not move within the virtual buffer. However, if the virtual buffer cycle length is too long, the pattern can move to the left. If the virtual buffer cycle length is too short, the pattern can move to the right. Therefore, by determining the speed and direction of the pattern shift, the universal notch filter 102 can adjust the virtual buffer length to match the cycle length of the interference signal of the sampled received input signal.

[0038]

[0049] Third, the universal notch filter 102 can have a fast convergence time. The universal notch filter 102 can modify the averaging mechanism to adjust the convergence time. When it is first activated, with more feedback from the input samples to the storage location, the universal notch filter 102 can converge more rapidly. After convergence, the universal notch filter 102 can reduce the feedback percentage to increase the stability of the filter and reject the generation of artifacts in the output signal due to excessive signals.

[0039]

[0050] Finally, the universal notch filter 102 can increase the number of virtual memory locations in the virtual buffer. Instead of separating virtual memory locations at 1 sample interval, the universal notch filter 102 can separate at 1 / 2 sample interval (e.g., twice the number of locations), 1 / 3 sample interval (e.g., three times the number of locations), or any larger number as long as the universal notch filter 102 can accurately track the position relative to the cycle time. This allows the universal notch filter 102 to increase the accuracy of the representation of the interference signal cycle and provide better filter performance.

[0040]

[0051] FIG. 11 is a flowchart of a method 1100 for filtering a fixed-frequency interference signal from an input signal using the universal notch filter 102 according to some embodiments. Method 1100 is described with reference to FIG. 1. However, method 1100 is not limited to the examples of its embodiments.

[0041]

[0052] At 1102, the universal notch filter 102 accesses an input signal that includes a fixed-frequency interference signal. The fixed-frequency interference signal can be an interference signal having a fixed frequency. The fixed-frequency interference signal can also be an interference signal having a frequency that varies by approximately 1% over a certain period of time including, but not limited to, one minute. In other words, the frequency of the interference signal can be substantially constant.

[0042]

[0053] At 1104, the universal notch filter 102 determines the static time of the input signal. The universal notch filter 102 can calculate the static time by calculating the slope of the input signal. Then, the universal notch filter 102 can determine the presence of the static time based on the calculated slope being below a threshold. The universal notch filter 102 can also determine the static time based on the magnitude, power, or various other characteristics of the input signal, as understood by those skilled in the art.

[0043]

[0054] At 1106, during the static time, the universal notch filter 102 stores samples of the interference signal in a virtual buffer. The universal notch filter 102 can set the virtual buffer to a length that matches the length of one cycle of the interference signal. The time at which each new input sample is received is mapped to a virtual memory location in the virtual buffer, and this virtual memory location and the value of the input sample are used to estimate the input value at the physical memory location of the virtual buffer near the virtual memory location.

[0044]

[0055] As part of the storage, the universal notch filter 102 can average the samples of the input signal with the corresponding samples of the interference signal in the virtual buffer to generate an average sample (e.g., adjusted as if it were an estimated value of the physical memory location). Then, the universal notch filter 102 can replace the corresponding sample of the interference signal in the virtual buffer with the average sample.

[0045]

[0056] If there is no physical memory location in the virtual buffer for a sample (e.g., only virtual memory locations exist), the data from the sample can be used to update the physical memory location near the virtual memory location of the sample in the virtual buffer. For example, the value of virtual memory location 1.67 (e.g., sample 35) and the value of virtual memory location 3 can be interpolated to calculate the value of virtual memory location 2 in the virtual buffer, and then that value can be used to update virtual memory location 2 according to an averaging algorithm (e.g., exponential averaging). Since location 2 is at 1 / 4 between virtual memory location 1.67 and virtual memory location 3 the value of virtual memory location 2 is 0.75 * value (location 1.67) + 0.25 *It can be estimated (e.g., using linear interpolation) to a value (location 3). After calculating the estimated value, 10% of the estimated value can be added to 90% of the current value of virtual memory location 2 to generate an updated value. Next, the universal notch filter 102 can repeat this process for the next sample. As part of this process, the universal notch filter 102 can continuously update a sample location variable that accurately tracks the location of the virtual buffer where the next received sample will enter.

[0046]

[0057] At 1108, the universal notch filter 102 subtracts samples from a single cycle of the interference signal in the virtual buffer from the input signal to generate a filtered signal. By subtracting, the first harmonic frequency and various other harmonic frequencies can be removed from the input signal while avoiding the introduction of transient responses (e.g., ringing) in the filtered signal. For example, the first harmonic frequency can be 60 Hz, and the second harmonic frequency can be 120 Hz or 180 Hz.

[0047]

[0058] At 1110, the universal notch filter 102 repeats 1104 - 1108 to purify the filtered signal. As will be understood by those skilled in the art, samples can be present throughout the cycle.

[0048]

[0059] Various embodiments can be implemented using one or more well-known computer systems, such as the computer system 1200 shown in FIG. 12. The one or more computer systems 1200 can be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub - combinations thereof.

[0049]

[0060] The computer system 1200 can include one or more processors (also referred to as central processing units, CPUs, or microprocessors), such as a processor 1204. The processor 1204 can be connected to a communication infrastructure or bus 1206.

[0050]

[0061] The computer system 1200 may also include user input / output devices 1203 such as a monitor, keyboard, pointing device, etc., and the user input / output devices 1203 can communicate with the communication infrastructure 1206 through the user input / output interface 1202.

[0051]

[0062] One or more of the processors 1204 may be a graphics processing unit (GPU). In an embodiment, the GPU may be a processor that is a specialized electronic circuit designed to process math-intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large data blocks such as math-intensive data common to computer graphics applications, images, videos, etc.

[0052]

[0063] The computer system 1200 may also include main or primary memory 1208 such as random access memory (RAM). The main memory 1208 may include one or more levels of cache. The main memory 1208 can store control logic (e.g., computer software) and / or data therein.

[0053]

[0064] The computer system 1200 may also include one or more secondary storage devices or memories 1210. The secondary memory 1210 may include, for example, a hard disk drive 1212 or a removable storage device or drive 1214. The removable storage drive 1214 may be a floppy disk drive, magnetic tape drive, compact disk drive, optical storage device, tape backup device, cloud storage, distributed or RAID storage or any other storage device / drive / methodology.

[0054]

[0065] The removable memory drive 1214 can interact with a removable memory unit 1218. The removable memory unit 1218 can include a computer-usable or readable memory device in which computer software (control logic) or data is stored. The removable memory unit 1218 can be a floppy disk, magnetic tape, compact disk, DVD, optical memory disk, or any other computer data storage device. The removable memory drive 1214 can read from or write to the removable memory unit 1218.

[0055]

[0066] The secondary memory 1210 can include other means, devices, components, tools, or other techniques for enabling access by the computer system 1200 to a computer program or other instructions or data. Such means, devices, components, tools, or other techniques can include, for example, a removable memory unit 1222 and an interface 1220. Examples of the removable memory unit 1222 and the interface 1220 can include a program cartridge and a cartridge interface (such as that found in a video game device), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and a USB port, a memory card and an associated memory card slot, or any other removable memory unit and associated interface.

[0056]

[0067] Computer system 1200 may further include a communication or network interface 1224. The communication interface 1224 may enable the computer system 1200 to communicate and interact with any combination of external devices, external networks, external entities (collectively and individually referred to by reference numeral 1228), and the like. For example, the communication interface 1224 may enable the computer system 1200 to communicate with an external or remote device 1228 over a communication path 1226, which may be wired or wireless (or a combination thereof) and may include any combination such as a LAN, WAN, the Internet, and the like. Control logic or data may be transmitted to and from the computer system 1200 via the communication path 1226.

[0057]

[0068] The computer system 1200 can be any of a number of non-limiting examples, such as a personal digital assistant (PDA), a desktop workstation, a laptop or notebook computer, a netbook, a tablet, a smartphone, a smartwatch or other wearable, an appliance, a part of the Internet of Things or an embedded system, or any combination thereof.

[0058]

[0069] Computer system 1200 can be a client or a server that accesses or hosts any application or data through any delivery paradigm, and the delivery paradigm includes, but is not limited to, remote or distributed cloud computing solutions, local or on-premises software (an "on-premises" cloud-based solution), a "service as" model (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), management software as a service (MSaaS), platform as a service (PaaS), desktop as a service (DaaS), framework as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.) or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms.

[0059]

[0070] Any applicable data structures, file formats, and schemas of computer system 1200 can be derived from specifications including, but not limited to, JavaScript Object Notation (JSON), Extensible Markup Language (XML), another markup language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representation, alone or in combination. Alternatively, proprietary data structures, formats, or schemas can be used, either exclusively or in combination with known or open standards.

[0060]

[0060]

[0071] In some embodiments, a tangible non-transitory device or article of manufacture that includes a tangible non-transitory computer-usable or readable medium having control logic (software) stored thereon can also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, tangible articles of manufacture embodying the computer system 1200, main memory 1208, secondary memory 1210, and removable storage units 1218, 1222, and any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system 1200), can cause such data processing devices to operate as described herein.

[0061]

[0072] Based on the teachings contained in this disclosure, it will be apparent to those of ordinary skill in the art how to make and use embodiments of this disclosure using data processing devices, computer systems, or computer architectures other than those shown in FIG. 12. Specifically, embodiments can operate in implementations of software, hardware, and / or operating systems other than those described herein.

Claims

1. 1. A computer-implemented method for filtering noise from an input signal, comprising: accessing, by at least one processor, the input signal having an interfering signal; making a first determination of the length of one cycle of the frequency of the interfering signal; In response to making the first determination, adjusting a length of a virtual buffer to be equal to a length of one cycle of the interfering signal; performing, by the at least one processor, a second determination of a static time of the input signal; storing, by the at least one processor, samples of the interfering signal during the static time in virtual memory locations of a virtual buffer; subtracting, by the at least one processor, the samples from a single cycle of the interfering signal in the virtual buffer from the input signal to generate a filtered signal, the subtraction removing the interfering signal from the input signal and thereby not introducing a transient response in the filtered signal; repeating, by the at least one processor, the making of the first determination, the adjusting, the making of the second determination, the storing, and the subtracting to refine the filtered signal; Including, method.

2. making the second determination calculating, by said at least one processor, non-static characteristics of said input signal; determining, by the at least one processor, that the non-static characteristic is below a threshold, thereby determining the existence of the static time; further comprising: The method of claim 1.

3. The storing step includes: averaging, by the at least one processor, samples of the input signal with corresponding samples of the interfering signal in the virtual buffer to generate average samples; replacing, by the at least one processor, the corresponding samples of the interfering signal in the virtual buffer with the average samples; further comprising: The method of claim 1.

4. The storing step includes: updating virtual memory locations of the virtual buffer based on the samples of the interfering signal, wherein the updating of non-physically addressable memory locations updates a plurality of physical memory locations in a physical memory based on the samples of the interfering signal; further comprising: The method of claim 1.

5. a memory configured to store a virtual buffer having virtual memory locations; a processor, coupled to the memory, accessing an input signal having an interfering signal; making a first determination of the length of one cycle of the frequency of the interfering signal; In response to making the first determination, the length of the virtual buffer is increased by one cycle of the interfering signal. and adjusting the length of the performing a second determination of a static time of the input signal; During the quiet time, samples of the interfering signal are stored in the virtual memory locations of the virtual buffer. and storing it in The interference signal in the virtual buffer is filtered to generate a filtered signal. subtracting the samples from a single cycle of a signal from the input signal; removing the interfering signal from the input signal, thereby obtaining the filtered signal does not introduce a transient response in making the first determination to refine the filtered signal; adjusting, making the second determination, storing, and subtracting Repeating this process, a processor configured to: Including, Universal notch filter.

6. To make the first determination, the processor: calculating a non-static characteristic of the input signal; determining that the non-static characteristic is below a threshold, thereby determining the existence of the static time; further configured to:

6. The universal notch filter of claim 5.

7. For the storing, the processor: averaging samples of the input signal with corresponding samples of the interfering signal in the virtual buffer to generate average samples; replacing corresponding samples of the interfering signal in the virtual buffer with the average samples; further configured to:

6. The universal notch filter of claim 5.

8. For the storing, the processor: updating physical memory locations in the virtual buffer based on samples of the interfering signal, the samples of the interfering signal corresponding to non-physically addressable memory locations of the virtual buffer; further configured to:

6. The universal notch filter of claim 5.

9. at least one virtual memory location in the virtual buffer corresponds to a non-physically addressable memory location implemented using one or more physical memory locations in a physical memory; The method of claim 1.

10. determining a rate and direction of pattern shift in the interference signal; said adjusting including adjusting a length of said virtual buffer based on a speed and a direction of said pattern shift; The method of claim 1.

11. 11. A non-transitory computer readable device having instructions stored thereon that, when executed by at least one computing device, cause the at least one computing device to perform the method of any one of claims 1 to 4, 9 and 10.