The present disclosure generally relates to system and methods for recursively calculating a norm and for periodically correcting the value of the norm to account for rounding errors.
All examples and features mentioned below can be combined in any technically possible way.
According to an aspect a noise-cancellation method, includes the steps of: receiving a value from a noise sensor at a time step; storing the received value in a buffer, the buffer having a length, the buffer further storing a number of additional values, wherein an end value is removed from the buffer to accommodate the received value; providing a previously-computed result, wherein the previously-computed result represents the sum of the square of the values stored in the buffer at a previous time step; performing one of: (i) adding a square of the received value to the previously-computed result and subtracting a square of the end value from the sum of the received value and the previously computed value in order to yield a newly-computed result; or (ii) subtracting a square of the end value from the previously-computed result and adding a square of the received value to the result of subtracting the square of the end value from the previously computed result in order to yield a newly-computed result; and updating a plurality of coefficients of an adaptive filter according to, in part, the value of the newly-computed result; generating with the adaptive filter a noise-cancelling signal using the updated plurality of coefficients; and providing the noise-cancellation signal to an actuator for transduction of a noise-cancellation audio signal based on the noise-cancellation signal, the noise-cancellation audio signal destructively interfering with an undesired noise signal in a noise-cancellation zone.
In an example, the method further includes the steps of finding a square root of the newly-computed result to yield a norm calculation, wherein the step of updating the plurality of coefficients is based in part on the norm calculation.
In an example, the method further includes the steps of adding the square of the received value to a running sum of squared received values to yield a current running sum of squared received values; and replacing the newly-computed result with the current running sum of squared received values if the current running sum of squared received values is the result of summing together a number of squared values equal to the length of the buffer.
In an example, the method further includes the step of setting the current running sum of squared received values to zero after replacing the newly-computed result with the current running sum of square received values.
In an example, the method further includes the step of the, during the time step, summing the square of the values stored in the buffer to yield a corrective value and replacing the newly-computed result with the corrective value.
In an embodiment, the received value comprises a plurality of received values and the end value comprises a plurality of end values, wherein the number of the plurality of received values and the number of the plurality of end values is the same.
In an embodiment, steps (i) and (ii) are performed before the step of storing the value in the buffer.
According to another aspect, program code is stored on a non-transitory storage medium that, when executed by a processor, includes the steps of: receiving a value from a noise sensor at a time step; storing the received value in a buffer, the buffer having a length, the buffer further storing a number of additional values, wherein an end value is removed from the buffer to accommodate the received value; providing a previously-computed result, wherein the previously-computed result represents the sum of the square of the values stored in the buffer at a previous time step; performing one of: (i) adding a square of the received value to the previously-computed result and subtracting a square of the end value from the sum of the received value and the previously computed value in order to yield a newly-computed result; or (ii) subtracting a square of the end value from the previously-computed result and adding a square of the received value to the result of subtracting the square of the end value from the previously computed result in order to yield a newly-computed result; and updating a plurality of coefficients of an adaptive filter according to, in part, the value of the newly-computed result; generating with the adaptive filter a noise-cancelling signal using the updated plurality of coefficients; and outputting the noise-cancellation signal to an actuator for transduction of a noise-cancellation audio signal based on the noise-cancellation signal, the noise-cancellation audio signal destructively interfering with an undesired noise signal in a noise-cancellation zone.
In an example, the program code further includes the step of finding a square root of the newly-computed result to yield a norm calculation, wherein the step of updating the plurality of coefficients is based in part on the norm calculation.
In an example, the program code further includes the steps of adding the square of the received value to a running sum of squared received values to yield a current running sum of squared received values; and replacing the newly-computed result with the current running sum of squared received values if the current running sum of squared received values is the result of summing together a number of squared values equal to the length of the buffer
In an example, the program code further includes the step of setting the current running sum of squared received values to zero after replacing the newly-computed result with the current running sum of square received values.
In an example, the program code further includes the step of, during the time step, summing the square of the values stored in the buffer to yield a corrective value and replacing the newly-computed result with the corrective value.
In an embodiment, the received value comprises a plurality of received values and the end value comprises a plurality of end values, wherein the number of the plurality of received values and the number of the plurality of end values is the same.
In an embodiment, steps (i) and (ii) are performed before the step of storing the value in the buffer.
According to another aspect a noise-cancellation system includes: a noise-cancellation filter including a plurality of coefficients configured to generate a noise-cancellation signal based on the plurality of coefficients; an actuator configured to receive the noise-cancellation signal and to transduce a noise-cancellation audio signal based on the noise-cancellation signal, the noise-cancellation signal destructively interfering with an undesired noise signal in a noise-cancellation zone; an error sensor configured to output an error sensor signal having a value at a time step; the error sensor signal being representative of residual undesired noise in the noise-cancellation zone; an adaptive processing module configured to: store the value in a buffer, the buffer having a length, the buffer further storing a number of additional values, wherein an end value is removed from the buffer to accommodate the value; provide a previously-computed result, wherein the previously-computed result represents the sum of the square of the values stored in the buffer at a previous time step; perform one of: (i) adding a square of the received value to the previously-computed result and subtracting a square of the end value from the sum of the received value and the previously computed value in order to yield a newly-computed result; or (ii) subtracting a square of the end value from the previously-computed result and adding a square of the value to the result of subtracting the square of the end value from the previously computed result in order to yield a newly-computed result; and update the plurality of coefficients of the adaptive filter according to, in part, the value of the newly-computed result; wherein the noise-cancellation filter is configured to generate an updated noise-cancelling signal based on the updated plurality of coefficients, the actuator transducing an updated noise-cancellation audio signal based on the updated noise-cancellation signal, the updated noise-cancellation audio signal destructively interfering with an undesired noise signal in a noise-cancellation zone.
In an example, the adaptive processing module is further configured to find a square root of the newly-computed result to yield a norm calculation, wherein updating the plurality of coefficients is based in part on the norm calculation.
In an example, the adaptive processing module is further configured to: add the square of the received value to a running sum of squared received values to yield a current running sum of squared received values; and replace the newly-computed result with the current running sum of squared received values if the current running sum of squared received values is the result of summing together a number of squared values equal to the length of the buffer.
In an example, the adaptive processing module is further configured to set the current running sum of squared received values to zero after replacing the newly-computed result with the current running sum of square received values.
In an example, the adaptive processing module is further configured to: during the time step, sum the square of the values stored in the buffer to yield a corrective value and replace the newly-computed result with the corrective value.
In an embodiment, the received value comprises a plurality of values and the end value comprises a plurality of end values, wherein the number of the plurality of values and the number of the plurality of end values is the same.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and the drawings, and from the claims.
Various embodiments described herein are directed to an improved method for calculating a norm. According to the improved method, a norm is calculated recursively, using a part of the norm calculated in a previous time step. Because the norm is recursively calculated, rounding errors may begin accumulating over time. Accordingly, a correction algorithm, running in parallel or at discrete intervals, may correct the value of the norm to a value without rounding errors, or at least to a value with lower rounding errors.
In an embodiment, noise sensor 106 is configured to generate noise signal(s) 114 representative of the undesired sound, or a source of the undesired sound, within predefined volume 104. For example, as shown in
Actuator 110 may, for example, be speakers distributed in discrete locations about the perimeter of the predefined volume. In an example, four or more speakers may be disposed within a vehicle cabin, each of the four speakers being located within a respective door of the vehicle and configured to project sound into the vehicle cabin. In alternate embodiments, speakers may be located within a headrest, or elsewhere in the vehicle cabin.
A noise-cancellation signal 118 may be generated by controller 112 and provided to one or more speakers in the predefined volume, which transduce the noise-cancellation signal 118 to acoustic energy (i.e., sound waves). The acoustic energy produced as a result of noise-cancellation signal 118 is approximately 180° out of phase with—and thus destructively interferes with—the undesired sound within the cancellation zone 102. The combination of sound waves generated from the noise-cancellation signal 118 and the undesired noise in the predefined volume results in cancellation of the undesired noise, as perceived by a listener in a cancellation zone.
Because noise-cancellation cannot be equal throughout the entire predefined volume, noise-cancellation system 100 is configured to create the greatest noise cancellation within one or more predefined cancellation zones 102 with the predefined volume. The noise-cancellation within the cancellation zones may effect a reduction in undesired sound by approximately 3 dB or more (although in varying embodiments, different amounts of noise-cancellation may occur). Furthermore, the noise-cancellation may cancel sounds in a range of frequencies, such as frequencies less than approximately 350 Hz (although other ranges are possible).
Error sensor 108, disposed within the predefined volume, generates an error sensor signal 120 based on detection of residual noise resulting from the combination of the sound waves generated from the noise-cancellation signal 118 and the undesired sound in the cancellation zone. The error sensor signal 120 is provided to controller 112 as feedback, error sensor signal 120 representing residual noise uncancelled by the noise-cancellation signal. Error sensors 108 may be, for example, at least one microphone mounted within a vehicle cabin (e.g., in the roof, headrests, pillars, or elsewhere within the cabin).
It should be noted that the cancellation zone(s) may be positioned remotely from error sensor 108. In this case, the error sensor signal 120 may be filtered to represent an estimate of the residual noise in the cancellation zone(s). In either case, the error signal will be understood to represent residual undesired noise in the cancellation zone.
In an embodiment, controller 112 may comprise a nontransitory storage medium 122 and processor 124. In an embodiment, non-transitory storage medium 122 may store program code that, when executed by processor 124, implements the various filters and algorithms described below. Controller 112 may be implemented in hardware and/or software. For example, controller may be implemented by a SHARC floating-point DSP processor, but it should be understood that controller may be implemented by any other processor, FPGA, ASIC, or other suitable hardware.
Turning to
Wadapt filter 126 is configured to receive the noise signal 114 of noise sensor 106 and to generate noise-cancellation signal 118. Noise-cancellation signal 118, as described above, is input to actuator 110 where it is transduced into the noise-cancellation audio signal that destructively interferes with the undesired sound in the predefined cancellation zone 102. Wadapt filter 126 may be implemented as any suitable linear filter, such as a multi-input multi-output (MIMO) finite impulse response (FIR) filter. Wadapt filter 126 employs a set of coefficients which define the noise-cancellation signal 118 and which may be adjusted to adapt to changing behavior of the nonlinear vehicle response to road input (or to other inputs in non-vehicular noise-cancellation contexts).
The adjustments to the coefficients may be performed by an adaptive processing module 128, which receives as inputs the error sensor signal 120 and the noise signal 114 and, using those inputs, generates a filter update signal 130. The filter update signal 130 is an update to the filter coefficients implemented in Wadapt filter 126. The noise-cancellation signal 118 produced by the updated Wadapt filter 126 will minimize error signal 120, and, consequently, the undesired noise in the cancellation zone.
The coefficients of Wadapt filter 126 at time step n may be updated according to the following equation:
where {tilde over (T)}de is an estimate of the physical transfer function between actuator 110 and the noise-cancellation zone 102, {tilde over (T)}′de is the conjugate transpose of {tilde over (T)}de, is the error signal, and x is the output signal of noise sensor 106. In the update equation, the output signal x of noise sensor is divided by the norm of x, represented as ∥x∥2.
The norm of output signal x may be calculated by the adaptive processing module 128 (
This process is shown in
The process depicted in
It should be understood that designations of the front of the buffer and back of the buffer are arbitrary designations to refer to the place of the buffer that stores the newest value and oldest value, respectively. It should also be understood that the linear portrayal of buffer 132 in
As part of the typical norm-calculation algorithm, each sample stored in buffer 132 is squared and then summed with the remaining squared values (a result that is represented in this disclosure as (A(n))). The square root of A(n) is then taken to yield a norm-calculation result y(n). This may be represented by the following equation:
where N is the length of buffer 132, and x(n) is the input value at time step n. For example, using the second time step, equation (2) may be expanded as follows:
y(2)=√{square root over (x2(1)+x2(2))} (3)
Similarly, at the tenth time step (assuming a buffer length of five), equation (2) may be expanded as follows:
y(10)=√{square root over (x2(6)+x2(7)+x2(8)+x2(9)+x2(10))} (4)
Of course, the buffer length of five is merely used as an example, and, as mentioned above, any suitable buffer length may be used.
The process of finding a new result y(n) according to equation (2) is depicted in
y(n)=√{square root over (x2(n)+x2(n−1) . . . x2(n−(N−1)))} (5)
(which is simply equation (2) expanded), by squaring and summing each value stored in buffer 132 from the newest value x2(n) to the oldest value x2(n−(N−1)).
But squaring and summing each value every time a new sample is inputted to the buffer is computationally inefficient. In the 100-sample buffer example, this computation would require squaring 100 independent values and summing the resulting squared values—a minimum of 199 operations—each time a new sample is received.
Accordingly, instead of squaring and summing each value, result y(n) may be calculated recursively—that is, y(n) may be calculated using part of the most recently computed result y(n−1) according to the following equation:
A(n)=A(n−1)+x2(n)−x2(n−N) (6)
where
y(n)=√{square root over (A(n))} (7)
and A(0)=0. Stated more plainly, the squared and summed result of a buffer (i.e., A(n)) that includes newly-received value x (n) may be calculated by adding the squared result of newly-received value x(n) (i.e, x2(n)) and subtracting the square of the value that was stored at the end of the buffer before the inclusion of x(n) (i.e., x2(n−N)). The value of A(n) before the first time step is set to zero and thus A(n)=x2(n) at the first time step. Once the value of A (n) is determined, y(n) may be calculated as the square root of A(n) according to equation (7).
This process is shown diagrammatically in
It should be understood that this method will require storing the value previously removed from the back of buffer 132, for at least one time step. In order to store this value, buffer 132 may be extended by one place. Alternatively, the removed value may be stored elsewhere in memory. Regardless, for the purposes of this discloses the last place of buffer will be considered to be the last space storing x(n−(N−1)), even though buffer 132 may be extended to include at least one other value, such as x(n−N).
An example of the recursive norm calculation is shown as method 700 in
Of course, steps 702-706 may be ordered in any suitable way. For example, the value of x(n) may be first squared and added to previously-determined result A(n−1) before it is added to first place of buffer 132 (e.g., x(n) may be temporarily stored elsewhere while the calculation takes place and then added to buffer 132). Similarly, the square of x(n−N) may be subtracted from A(n−1) before that result is added to the square of x(n). In other words, steps 702-706 may be ordered in any way, so long as they function to add and subtract the proper values in a given time step or to otherwise implement equation (6).
At this point, it is also worth mentioning two special cases of method 700: (i) the first value added, x(1), and (ii) all other values added before buffer 132 is totally filled. As mentioned above, the first value added has no previous result to which it may be added and the value of A(0) is taken to be zero. Accordingly, the first result y(1) is simply x(n) (the value of A(1)=x2(1) and so this value may still be calculated and stored for use in the following step). The next special case, which consists of all newly-received values after x(1) and before x(N) will be computed normally, but no value is subtracted as part of the calculation (alternately, a zero is subtracted) since all values x(n)=0 for n≤0.
Furthermore, it should be understood that multiple values may be received during a single time step. In that instance all received values may be stored in the buffer, squared and summed with the previously-computed result. All values displaced by the storage of additional values may be similar squared and subtracted from the previously-computed result. It should also be understood that the norm need not be calculated for each time step. If the norm is not calculated for each time step, all new values received since that the last norm calculation may be added to the previously-determined result and all values removed may be likewise squared and subtracted. Alternatively, only a portion of values may be added or subtracted, but that will come at the cost of accuracy.
Compared to performing the calculation of equation (5), the recursive norm calculation requires only three operations to calculate A(n), and is thus much more computationally efficient.
The recursive norm calculation, described above and depicted in
This may be corrected in one of a couple of ways. For example, perhaps most simply, the result y(n) may be periodically recalculated according to equation (5), which then replaces the value of y(n) that had been calculated recursively (that is according to equations (6) and (7)) to correct y(n). Ideally, this would be performed often enough to avoid the error dominating the value or drifting away from the point that norm calculation is useful for its intended result—e.g., noise-cancellation.
But this correction method involves performing a very intensive calculation at periodic intervals. It is thus not efficient and consumes processing resources in a temporally asymmetric manner. Accordingly, the value of y(n) may be replaced with the correct value of the norm calculation according to a different method, referred to in this disclosure as the hybrid recursive norm calculation, and which is shown in diagrammatically in
This may be demonstrated formally, as follows:
B(n)=B(n−1)+x2(n) (8)
where B(0)=0. At each time step, the newly-received value x(n) is squared and summed with the previous value of B(n), B(n−1). Thus, equation (8) represents a running sum of squared input values, where the new squared input value x2(n) is added at each time step. Once B(n) has been calculated N times (e.g., mod(n, N)≠0), the value of B(n) will equal the correct value of the summed and squared values currently stored in buffer 132. In other words, B(n) will equal the correct value of A(n), at which point the current value of A(n), calculated according to the recursive norm calculation (equation (6)), is replaced with value of B(n). With A(n) now equaling the correct value without rounding errors, y(n) will also be corrected. Once the value of A(n) is set to B(n), the value of B(n) is zeroed and the process is begun again. In this way, the result y(n) will be corrected every N samples, and thus the effect of accumulating rounding errors is minimized in a more computationally efficient way.
Method 700, amended to include the hybrid recursive norm calculation, shown as method 1000 in
Returning to
The above-described recursive norm calculations, and recursive methods with corrections (including the hybrid recursive norm calculation) all function to deliver a norm calculation which may be used to update an adaptive filter, such as Wadapt 126. The updated adaptive filter may then be used to deliver an updated noise-cancellation signal to actuator 110, which transduces the noise-cancellation signal to product a noise-cancellation audio signal that substantially cancels undesired noise in a cancellation zone.
It should be understood that, although the above has been described in connection with a noise-cancellation algorithm, the methods may be used in connection with norm calculations in any contexts. It should also be understood that the above-described noise-cancellation system 100 is merely provided as an example, and any noise-cancellation system (e.g., feedforward or feedback systems) calculating a norm to update an adaptive filter may be used.
The functionality described herein, or portions thereof, and its various modifications (hereinafter “the functions”) can be implemented, at least in part, via a computer program product, e.g., a computer program tangibly embodied in an information carrier, such as one or more non-transitory machine-readable media or storage device, for execution by, or to control the operation of, one or more data processing apparatus, e.g., a programmable processor, a computer, multiple computers, and/or programmable logic components.
A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a network.
Actions associated with implementing all or part of the functions can be performed by one or more programmable processors executing one or more computer programs to perform the functions of the calibration process. All or part of the functions can be implemented as, special purpose logic circuitry, e.g., an FPGA and/or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Components of a computer include a processor for executing instructions and one or more memory devices for storing instructions and data.
While several inventive embodiments have been described and illustrated herein, those of ordinary skill in the art will readily envision a variety of other means and/or structures for performing the function and/or obtaining the results and/or one or more of the advantages described herein, and each of such variations and/or modifications is deemed to be within the scope of the inventive embodiments described herein. More generally, those skilled in the art will readily appreciate that all parameters, dimensions, materials, and configurations described herein are meant to be exemplary and that the actual parameters, dimensions, materials, and/or configurations will depend upon the specific application or applications for which the inventive teachings is/are used. Those skilled in the art will recognize, or be able to ascertain using no more than routine experimentation, many equivalents to the specific inventive embodiments described herein. It is, therefore, to be understood that the foregoing embodiments are presented by way of example only and that, within the scope of the appended claims and equivalents thereto, inventive embodiments may be practiced otherwise than as specifically described and claimed. Inventive embodiments of the present disclosure are directed to each individual feature, system, article, material, and/or method described herein. In addition, any combination of two or more such features, systems, articles, materials, and/or methods, if such features, systems, articles, materials, and/or methods are not mutually inconsistent, is included within the inventive scope of the present disclosure.
Number | Name | Date | Kind |
---|---|---|---|
7545859 | Reichard | Jun 2009 | B2 |
20090012786 | Zhang et al. | Jan 2009 | A1 |
20160314778 | Christoph | Oct 2016 | A1 |
20170162205 | Melvin et al. | Jun 2017 | A1 |
Number | Date | Country |
---|---|---|
2013049376 | Apr 2013 | WO |
Entry |
---|
International Search Report and The Written Opinion of the International Searching Authority, International Application No. PCT/US2019/058765, pp. 1-14, dated Feb. 4, 2020. |
Anonymous: “Running total—Wikipedia”, Wikipedia, Aug. 19, 2018 (Aug. 19, 2018), pp. 1-2, XP055661187, Internet Retrieved from Internet: URL: https://en.wikipedia.org/w/index.php?titl=Running_total&oldid=855615611 [retrieved on Jan. 23, 2020]. |
Number | Date | Country | |
---|---|---|---|
20200135165 A1 | Apr 2020 | US |