Background
[0001] 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.
[0002] US 2009/012786 discloses a prior art noise-cancellation method and system, where no correction of the value of the norm to account for rounding errors is provided.
Summary
[0003] The present invention relates to a noise-cancellation method according to claim 1 and a noise-cancellation system according to claim 7. Advantageous embodiments are recited in dependent claims.
[0004] 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.
Brief Description of the Drawings
[0005]
FIG. 1 is a schematic of a noise-cancellation system according to an embodiment.
FIG. 2 is a schematic of a noise-cancellation system according to an embodiment.
FIG. 3 is a diagrammatic representation of a buffer according to an embodiment.
FIG. 4 is a diagrammatic representation of a buffer according to an embodiment.
FIG. 5 is a diagrammatic representation of a norm calculation according to an embodiment.
FIG. 6 is a diagrammatic representation of a recursive norm calculation according to an embodiment.
FIG. 7 is a flowchart of a recursive norm calculation method according to an embodiment.
FIG. 8 is a graph showing errors using a recursive norm calculation method and a hybrid recursive norm calculation method.
FIG. 9 is a diagrammatic representation of a hybrid recursive norm calculation with error correction according to an embodiment.
FIG. 10 is a flowchart of a recursive norm calculation method with error correction according to an embodiment.
Detailed Description
[0006] 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.
[0007] FIG. 1 is a schematic view of an example noise-cancellation system 100 which may perform a norm calculation. Noise-cancellation system 100 may be configured to destructively interfere with undesired sound in at least one cancellation zone 102 within a predefined volume 104 such as a vehicle cabin. At a high level, an embodiment of noise-cancellation system 100 may include a noise sensor 106, an error sensor 108, an actuator 110, and a controller 112.
[0008] 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 FIG. 1, noise sensor 106 may be an accelerometer mounted to and configured to detect vibrations transmitted through a vehicle structure 116. Vibrations transmitted through the vehicle structure 116 are transduced by the structure into undesired sound in the vehicle cabin (perceived as road noise), thus an accelerometer mounted to the structure provides a signal representative of the undesired sound
[0009] 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.
[0010] 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.
[0011] 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).
[0012] 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).
[0013] 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.
[0014] 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.
[0015] Turning to FIG. 2, there is shown a block diagram of an embodiment of noise-cancellation system 100, including a plurality of filters implemented by controller 112. As shown, controller may define a control system including W
adapt filter 126 and an adaptive processing module 128.
[0016] W
adapt 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. W
adapt filter 126 may be implemented as any suitable linear filter, such as a multi-input multi-output (MIMO) finite impulse response (FIR) filter. W
adapt 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).
[0017] 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 W
adapt filter 126. The noise-cancellation signal 118 produced by the updated W
adapt filter 126 will minimize error signal 120, and, consequently, the undesired noise in the cancellation zone.
[0018] The coefficients of
Wadapt filter 126 at time step
n may be updated according to the following equation:

where
T̃de is an estimate of the physical transfer function between actuator 110 and the noise-cancellation zone 102,
T̃'de is the conjugate transpose of
T̃de, e 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.
[0019] The norm of output signal
x may be calculated by the adaptive processing module 128 (FIG. 2) based on a plurality of noise-sensor samples (e.g., 100 samples, although other suitable buffer lengths may be used stored in a buffer 132, shown in FIG. 3, received at the current and previous time steps. Buffer 132 may be, for example, a first-in-first-out (FIFO) buffer-that is to say, once the buffer has reached capacity, the oldest sample is removed each time a new sample is added. Assuming a new value is received each time step, a new value will be added to buffer 132 and the oldest value will be removed from buffer 132. Buffer 132 thus represents a shifting window of values including the newest value and a number
N of previous values.
[0020] This process is shown in FIG. 3 which depicts an example buffer 132 with an example length of five values. The values are represented as
x(
n), where n is the time step at which the respective value was received. Thus,
x(1) was received at Time Step 1,
x(2) was received at Time Step 2, and so on. Each time a new value is received, it is placed at the front of buffer 132 and the remaining values of buffer 132 are shifted by one place toward the back of the buffer 132. Thus, at Time Step 2, x(2) is placed at the front of buffer 132 and
x(1), received earlier, is shifted back by one place. Likewise, at Time Step 3, x(3) is placed at the front of buffer 132 and x(2) and
x(1) are shifted back. Once buffer 132 has reached capacity, the oldest value is removed from buffer 132 to accommodate the newest value. For example, at Time Step 6, x(6) is placed at the front of buffer 132 while
x(1) is removed from buffer 132 to accommodate
x(6). Similarly, at Time Step 7, new value x(7) is placed at the front of buffer while the oldest value x(2) is removed.
[0021] The process depicted in FIG. 3 is depicted more abstractly in FIG.4, showing buffer 132 at some arbitrary time step
n. As shown, the front of buffer 132 contains the newest received value
x(
n) while each subsequent place in the buffer contains samples received in order from newest to oldest (thus, the remaining places of buffer 132 respectively contain
x(
n - 1),
x(
n - 2),
x(
n - 3), and
x(
n - 4)). The value to be added during the next time step,
x(
n + 1), is shown entering to the left of buffer 132 and the value removed during the last time step,
x(
n -
N), is shown to exiting to the right of buffer 132.
[0022] 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 FIGs. 4-6 and 9 is only one way to represent the implementation of buffer 132 and does not necessarily represent the positioning of registers within memory, which may or may not be contiguous.
[0023] 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:

[0024] Similarly, at the tenth time step (assuming a buffer length of five), equation (2) may be expanded as follows:

Of course, the buffer length of five is merely used as an example, and, as mentioned above, any suitable buffer length may be used.
[0025] The process of finding a new result
y(
n) according to equation (2) is depicted in FIG. 5. At time step
n the value of
y(
n) is computed according to:

(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)).
[0026] 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.
[0027] 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:

where

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).
[0028] This process is shown diagrammatically in FIG. 6. As shown, the value of
y(
n) is determined according to equations (6) and (7), which itself is, in part, recursively based on the value of
A(
n) from the previous time step (
A(
n - 1)), shown in FIG. 6 as being taken from the removed previous result
y(
n - 1).
[0029] 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)
.
[0030] An example of the recursive norm calculation is shown as method 700 in FIG. 7. Method 700 may be implemented, for example, by adaptive processing module 128, which, in turn, is implemented by controller 112. As mentioned above, method 700 may be implemented by controller 112 and may be stored as program code in non-transitory storage medium 122, although purely hardware or firmware implementations are possible. At step 702, a new value
x(n) is received and stored at the first place of buffer 132, while each remaining value is stepped down one place, resulting in end value
x(
n -
N) being removed from buffer 132 but retained in memory. (As mentioned above,
x(
n - N) may actually be stored in one extra place of buffer 132, or stored elsewhere.) At step 704, part of a previously-determined result
A(
n - 1), which represents the result of summing and squaring the values stored in buffer before the inclusion of
x(
n) and the removal of
x(
n -
N) at Time Step
n, is summed with
x2(
n). At step 704, the removed end value
x(
n -
N) is then subtracted from the sum of
A(
n - 1) and
x2(
n)
.
[0031] 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).
[0032] 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.
[0033] 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.
[0034] 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.
[0035] The recursive norm calculation, described above and depicted in FIG. 6, however, experiences accumulating rounding errors, when implemented in a floating-point processor, as the result of using the large previously-calculated value as part of a recursive calculation. Consequently, the result
y(
n) will slowly deviate from the correct value. Indeed, the accumulating rounding errors may come to dominate the result
y(
n). An example of this problem is shown in FIG. 8, which compares error (the y-axis) to sample or time step (the x-axis) for an example 200-value buffer. Line 802, which is the result of the recursive method, shows the error between the recursive method of FIG. 6 and the typical norm-calculation method of FIG. 5 and the nature of the random walk of the error that can potentially grow unbounded over time.
[0036] 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.
[0037] 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 FIG. 9. According to the hybrid recursive norm calculation, a second calculation may be calculated in parallel with the recursive calculation. The second calculation, shown as
B(
n), calculates a running total of squared and summed input values for each received input value of
x(n) until the number of values squared and summed equals the length of buffer 132, at which point the value
B(
n) (after being square-rooted) will equal the correct value of the norm calculation.
[0038] This may be demonstrated formally, as follows:

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.,
moden, 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.
[0039] Method 700, amended to include the hybrid recursive norm calculation, shown as method 1000 in FIG. 10. Steps 1002-1006 thus mirror the steps of 702-706, because the recursive norm calculation occurs in the same way. At step 1008, the newly received value
x(
n) is squared, (thus yielding
x2(
n)) and added to a sum
B(
n - 1), stored in memory, which represents the squared input values summed together up until time step
n. At step 1010, if the input values have been squared and summed together
N times, the squared and summed value (
B(
n)) replaces the recursive squared and summed value (
A(
n)) determined in step 1006. At step 1012, if
B(n) has replaced
A(n) at step 1010, then
B(
n) is set to zero.
[0040] Returning to FIG. 8, this hybrid recursive norm calculation yields the substantially straight line 804 that hovers around zero, and does so using fewer operations per time step than a correction method requiring the calculation of the entire correct value in a single time step. The error of the hybrid method is returned to zero with respect to the typical norm-calculation every N samples when
B(
n) is assigned to
A(
n). This disclosure thus describes a method of calculating a norm that is more efficient than previous methods, while maintaining accuracy within acceptable standards, thus improving the functioning of a computer.
[0041] 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 W
adapt 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.
[0042] 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.
[0043] 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.
[0044] 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.
[0045] 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).
[0046] 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.
[0047] 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. 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.
1. A noise-cancellation method (1000), comprising the steps of:
receiving (1002) a value x(n) from a noise sensor (106) at a time step;
storing the received value in a buffer (132), the buffer having a length N, the buffer further storing a number of additional values, wherein an end value x(n-N) is removed from the buffer to accommodate the received value;
providing a previously-computed result A(n-1), 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 (1004) a square of the received value to the previously-computed result and subtracting (1006) 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 A(n); or
(ii) subtracting (1006) a square of the end value from the previously-computed result and adding (1004) 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 A(n); and
updating a plurality of coefficients of an adaptive filter (126) according to, in part, the value of the newly-computed result;
generating with the adaptive filter a noise-cancelling signal (118) using the updated plurality of coefficients; and
providing the noise-cancellation signal to an actuator (110) 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 (102);
wherein the method further comprises the step (1010) of, during the time step, summing the square of the values stored in the buffer to yield a corrective value B(n) and replacing the newly-computed result with the corrective value.
2. The method of claim 1, further comprising the step of finding a square root of the newly-computed result to yield a norm calculation y(n), wherein the step of updating the plurality of coefficients is based in part on the norm calculation.
3. The method of claim 1, further comprising the steps of: adding (1008) the square of the received value x(n) to a running sum B(n-1) of squared received values to yield a current running sum B(n) of squared received values; and
replacing (1010) the newly-computed result A(n) with the current running sum B(n) 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 N of the buffer.
4. The method of claim 3, further comprising the step (1012) 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.
5. The method of claim 1, wherein 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.
6. The method of claim 1, wherein steps (i) and (ii) are performed before the step of storing the value in the buffer.
7. A noise-cancellation system (100), comprising:
a noise-cancellation filter (126) including a plurality of coefficients configured to generate a noise-cancellation signal (118) based on the plurality of coefficients;
an actuator (110) 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 (102);
an error sensor (108) configured to output an error sensor signal (120) having a value x(n) at a time step; the error sensor signal being representative of residual undesired noise in the noise-cancellation zone;
an adaptive processing module (128) configured to:
store the value in a buffer (132), the buffer having a length N, the buffer further storing a number of additional values, wherein an end value x(n-N) is removed from the buffer to accommodate the value;
provide a previously-computed result A(n-1), 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 (1004) a square of the received value to the previously-computed result and subtracting (1006) 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 (1006) a square of the end value from the previously-computed result and adding (1004) 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;
wherein 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.
8. The noise-cancellation system of claim 7, wherein 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.
9. The noise-cancellation system of claim 7, wherein 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.
10. The noise-cancellation system of claim 9, wherein 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.
11. The noise-cancellation system of claim 7, wherein 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.
1. Rauschunterdrückungsverfahren (1000), das die folgenden Schritte umfasst:
Empfangen (1002) eines Werts x(n) von einem Geräuschsensor (106) zu einem Zeitschritt;
Speichern des empfangenen Werts in einem Puffer (132), wobei der Puffer eine Länge N aufweist und der Puffer ferner eine Anzahl von zusätzlichen Werten speichert, wobei ein Endwert x(n-N) aus dem Puffer entfernt wird, um den empfangenen Wert aufzunehmen;
Bereitstellen eines zuvor berechneten Ergebnisses A(n-1), wobei das zuvor berechnete Ergebnis die Summe des Quadrats der im Puffer zu einem vorherigen Zeitschritt gespeicherten Werte darstellt;
Ausführen eines von:
(i) Addieren (1004) eines Quadrats des empfangenen Werts zum zuvor berechneten Ergebnis und Subtrahieren (1006) eines Quadrats des Endwerts von der Summe des empfangenen Werts und des zuvor berechneten Werts, um ein neu berechnetes Ergebnis A(n) zu erhalten; oder
(ii) Subtrahieren (1006) eines Quadrats des Endwerts vom zuvor berechneten Ergebnis und Addieren (1004) eines Quadrats des empfangenen Werts zum Ergebnis des Subtrahierens des Quadrats des Endwerts vom zuvor berechneten Ergebnis, um ein neu berechnetes Ergebnis A(n) zu erhalten; und
Aktualisieren einer Vielzahl von Koeffizienten eines adaptiven Filters (126), teilweise entsprechend dem Wert des neu berechneten Ergebnisses;
Erzeugen eines Rauschunterdrückungssignals (118) mit dem adaptiven Filter unter Verwendung der aktualisierten Vielzahl von Koeffizienten; und
Bereitstellen des Rauschunterdrückungssignals an einen Aktuator (110) zur Umwandlung eines Rauschunterdrückungs-Audiosignals basierend auf dem Rauschunterdrückungssignal, wobei das Rauschunterdrückungs-Audiosignal ein unerwünschtes Rauschsignal in einem Rauschunterdrückungsbereich (102) destruktiv stört;
wobei das Verfahren ferner den Schritt (1010) des Summierens des Quadrats der im Puffer gespeicherten Werte während des Zeitschritts umfasst, um einen Korrekturwert B(n) zu erhalten, und des Ersetzens des neu berechneten Ergebnisses durch den Korrekturwert.
2. Verfahren nach Anspruch 1, das ferner den Schritt des Findens einer Quadratwurzel des neu berechneten Ergebnisses umfasst, um eine Normberechnung y(n) zu erhalten, wobei der Schritt des Aktualisierens der Vielzahl von Koeffizienten teilweise auf der Normberechnung basiert.
3. Verfahren nach Anspruch 1, das ferner die folgenden Schritte umfasst: Addieren (1008) des Quadrats des empfangenen Werts x(n) zu einer laufenden Summe B(n-1) von quadrierten empfangenen Werten, um eine aktuelle laufende Summe B(n) der quadrierten empfangenen Werte zu erhalten; und
Ersetzen (1010) des neu berechneten Ergebnisses A(n) durch die aktuelle laufende Summe B(n) von quadrierten empfangenen Werten, wenn die aktuelle laufende Summe von quadrierten empfangenen Werten das Ergebnis des Summierens einer Anzahl von quadrierten Werten gleich der Länge N des Puffers ist.
4. Verfahren nach Anspruch 3, das ferner den Schritt (1012) des Setzens der aktuellen laufenden Summe von quadrierten empfangenen Werten auf Null umfasst, nachdem das neu berechnete Ergebnis durch die aktuelle laufende Summe von quadrierten empfangenen Werten ersetzt wurde.
5. Verfahren nach Anspruch 1, wobei der empfangene Wert eine Vielzahl von empfangenen Werten umfasst und der Endwert eine Vielzahl von Endwerten umfasst, wobei die Anzahl der Vielzahl von empfangenen Werten und die Anzahl der Vielzahl von Endwerten gleich ist.
6. Verfahren nach Anspruch 1, wobei die Schritte (i) und (ii) vor dem Schritt des Speicherns des Werts im Puffer durchgeführt werden.
7. Rauschunterdrückungssystem (100), das Folgendes umfasst:
Ein Rauschunterdrückungsfilter (126), das eine Vielzahl von Koeffizienten enthält und dazu konfiguriert ist, basierend auf der Vielzahl von Koeffizienten ein Rauschunterdrückungssignal (118) zu erzeugen;
einen Aktor (110), der dazu konfiguriert ist, das Rauschunterdrückungssignal zu empfangen und basierend auf dem Rauschunterdrückungssignal ein Rauschunterdrückungs-Audiosignal umzuwandeln, wobei das Rauschunterdrückungssignal ein unerwünschtes Rauschsignal in einem Rauschunterdrückungsbereich (102) destruktiv stört;
einen Fehlersensor (108), der dazu konfiguriert ist, in einem Zeitschritt ein Fehlersensorsignal (120) mit einem Wert x(n) auszugeben; wobei das Fehlersensorsignal ein unerwünschtes Restrauschen im Rauschunterdrückungsbereich darstellt;
ein adaptives Verarbeitungsmodul (128), das für Folgendes konfiguriert ist:
Speichern des Werts in einem Puffer (132), wobei der Puffer eine Länge N aufweist und der Puffer ferner eine Anzahl von zusätzlichen Werten speichert, wobei ein Endwert x(n-N) aus dem Puffer entfernt wird, um den Wert aufzunehmen;
Bereitstellen eines zuvor berechneten Ergebnisses A(n-1), wobei das zuvor berechnete Ergebnis die Summe des Quadrats der im Puffer zu einem vorherigen Zeitschritt gespeicherten Werte darstellt;
Ausführen eines von:
(i) Addieren (1004) eines Quadrats des empfangenen Werts zum zuvor berechneten Ergebnis und Subtrahieren (1006) eines Quadrats des Endwerts von der Summe des empfangenen Werts und des zuvor berechneten Werts, um ein neu berechnetes Ergebnis zu erhalten; oder
(ii) Subtrahieren (1006) eines Quadrats des Endwerts vom zuvor berechneten Ergebnis und Addieren (1004) eines Quadrats des Werts zum Ergebnis des Subtrahierens des Quadrats des Endwerts vom zuvor berechneten Ergebnis, um ein neu berechnetes Ergebnis zu erhalten; und
Aktualisieren der Vielzahl von Koeffizienten des adaptiven Filters, teilweise entsprechend dem Wert des neu berechneten Ergebnisses;
wobei das Rauschunterdrückungsfilter dazu konfiguriert ist, ein aktualisiertes Rauschunterdrückungssignal basierend auf der aktualisierten Vielzahl von Koeffizienten zu erzeugen, wobei der Aktuator ein aktualisiertes Rauschunterdrückungs-Audiosignal basierend auf dem aktualisierten Rauschunterdrückungssignal umwandelt, wobei das aktualisierte Rauschunterdrückungs-Audiosignal ein unerwünschtes Rauschsignal in einem Rauschunterdrückungsbereich destruktiv stört;
wobei das adaptive Verarbeitungsmodul ferner für Folgendes konfiguriert ist: Summieren des Quadrats der im Puffer gespeicherten Werte während des Zeitschritts, um einen Korrekturwert zu erhalten, und Ersetzen des neu berechneten Ergebnisses durch den Korrekturwert.
8. Rauschunterdrückungssystem nach Anspruch 7, wobei das adaptive Verarbeitungsmodul ferner dazu konfiguriert ist, eine Quadratwurzel des neu berechneten Ergebnisses zu finden, um eine Normberechnung zu erhalten, wobei das Aktualisieren der Vielzahl von Koeffizienten teilweise auf der Normberechnung basiert.
9. Rauschunterdrückungssystem nach Anspruch 7, wobei das adaptive Verarbeitungsmodul ferner für Folgendes konfiguriert für: Addieren des Quadrats des empfangenen Werts zu einer laufenden Summe von quadrierten empfangenen Werten, um eine aktuelle laufende Summe von quadrierten empfangenen Werten zu erhalten; und
Ersetzen des neu berechneten Ergebnisses durch die aktuelle laufende Summe von quadrierten empfangenen Werten, wenn die aktuelle laufende Summe von quadrierten empfangenen Werten das Ergebnis des Summierens einer Anzahl von quadrierten Werten gleich der Länge des Puffers ist.
10. Rauschunterdrückungssystem nach Anspruch 9, wobei das adaptive Verarbeitungsmodul ferner dazu konfiguriert ist, die aktuelle laufende Summe von quadrierten empfangenen Werten auf Null zu setzen, nachdem das neu berechnete Ergebnis durch die aktuelle laufende Summe von quadrierten empfangenen Werten ersetzt wurde.
11. Rauschunterdrückungssystem nach Anspruch 7, wobei der empfangene Wert eine Vielzahl von Werten umfasst und der Endwert eine Vielzahl von Endwerten umfasst, wobei die Anzahl der Vielzahl von Werten und die Anzahl der Vielzahl von Endwerten gleich ist.
1. Procédé d'annulation de bruit (1000), comprenant les étapes consistant à :
recevoir (1002) une valeur x(n) à partir d'un détecteur de bruit (106) lors d'une étape temporelle ;
stocker la valeur reçue dans une mémoire tampon (132), la mémoire tampon ayant une longueur N, la mémoire tampon stockant en outre un nombre de valeurs supplémentaires, dans lequel une valeur d'extrémité x(n-N) est retirée de la mémoire tampon pour accueillir la valeur reçue ;
fournir un résultat calculé précédemment A(n-1), dans lequel le résultat calculé précédemment représente la somme du carré des valeurs stockées dans la mémoire tampon lors d'une étape temporelle précédente ;
réaliser un parmi :
(i) l'ajout (1004) d'un carré de la valeur reçue au résultat calculé précédemment et la soustraction (1006) d'un carré de la valeur d'extrémité de la somme de la valeur reçue et de la valeur calculée précédemment afin de produire un résultat nouvellement calculé A(n) ; ou
(ii) la soustraction (1006) d'un carré de la valeur d'extrémité du résultat calculé précédemment et l'ajout (1004) d'un carré de la valeur reçue au résultat de soustraction du carré de la valeur d'extrémité du résultat calculé précédemment afin de produire un résultat nouvellement calculé A(n) ; et
mettre à jour une pluralité de coefficients d'un filtre adaptatif (126) conformément à, en partie, la valeur du résultat nouvellement calculé ;
générer avec le filtre adaptatif un signal d'annulation de bruit (118) en utilisant la pluralité mise à jour de coefficients ; et
fournir le signal d'annulation de bruit à un actionneur (110) pour la transduction d'un signal audio d'annulation de bruit sur la base du signal d'annulation de bruit, le signal audio d'annulation de bruit interférant de manière destructrice avec un signal de bruit non souhaité dans une zone d'annulation de bruit (102) ;
dans lequel le procédé comprend en outre l'étape (1010) consistant à, durant l'étape temporelle, faire la somme du carré des valeurs stockées dans la mémoire tampon pour produire une valeur correctrice B(n) et remplacer le résultat nouvellement calculé par la valeur correctrice.
2. Procédé selon la revendication 1, comprenant en outre l'étape consistant à trouver une racine carrée du résultat nouvellement calculé pour produire un calcul de norme y(n), dans lequel l'étape consistant à mettre à jour la pluralité de coefficients est basée en partie sur le calcul de norme.
3. Procédé selon la revendication 1, comprenant en outre les étapes consistant à :
ajouter (1008) le carré de la valeur reçue x(n) à une somme courante B(n-1) de valeurs reçues au carré pour produire une somme courante en cours B(n) de valeurs reçues au carré ; et
remplacer (1010) le résultat nouvellement calculé A(n) par la somme courante en cours B(n) de valeurs reçues au carré si la somme courante en cours de valeurs reçues au carré est le résultat de la somme d'un nombre de valeurs au carré égal à la longueur N de la mémoire tampon.
4. Procédé selon la revendication 3, comprenant en outre l'étape (1012) consistant à régler la somme courante en cours de valeurs reçues au carré sur zéro après le remplacement du résultat nouvellement calculé par la somme courante en cours de valeurs reçues au carré.
5. Procédé selon la revendication 1, dans lequel la valeur reçue comprend une pluralité de valeurs reçues et la valeur d'extrémité comprend une pluralité de valeurs d'extrémité, dans lequel le nombre de la pluralité de valeurs reçues et le nombre de la pluralité de valeurs d'extrémité est le même.
6. Procédé selon la revendication 1, dans lequel les étapes (i) et (ii) sont réalisées avant l'étape consistant à stocker la valeur dans la mémoire tampon.
7. Système d'annulation de bruit (100), comprenant :
un filtre d'annulation de bruit (126) comportant une pluralité de coefficients configurés pour générer un signal d'annulation de bruit (118) sur la base de la pluralité de coefficients ;
un actionneur (110) configuré pour recevoir le signal d'annulation de bruit et pour effectuer la transduction d'un signal audio d'annulation de bruit sur la base du signal d'annulation de bruit, le signal d'annulation de bruit interférant de manière destructrice avec un signal de bruit non souhaité dans une zone d'annulation de bruit (102) ;
un détecteur d'erreur (108) configuré pour émettre un signal de détecteur d'erreur (120) ayant une valeur x(n) lors d'une étape temporelle ; le signal de détecteur d'erreur étant représentatif d'un bruit non souhaité résiduel dans la zone d'annulation de bruit ;
un module de traitement adaptatif (128) configuré pour :
stocker la valeur dans une mémoire tampon (132), la mémoire tampon ayant une longueur N, la mémoire tampon stockant en outre un nombre de valeurs supplémentaires, dans lequel une valeur d'extrémité x(n-N) est retirée de la mémoire tampon pour accueillir la valeur reçue ;
fournir un résultat calculé précédemment A(n-1), dans lequel le résultat calculé précédemment représente la somme du carré des valeurs stockées dans la mémoire tampon lors d'une étape temporelle précédente ;
réaliser un parmi :
(i) l'ajout (1004) d'un carré de la valeur reçue au résultat calculé précédemment et la soustraction (1006) d'un carré de la valeur d'extrémité de la somme de la valeur reçue et de la valeur calculée précédemment afin de produire un résultat nouvellement calculé ; ou
(ii) la soustraction (1006) d'un carré de la valeur d'extrémité du résultat calculé précédemment et l'ajout (1004) d'un carré de la valeur au résultat de soustraction du carré de la valeur d'extrémité du résultat calculé précédemment afin de produire un résultat nouvellement calculé ; et
mettre à jour la pluralité de coefficients du filtre adaptatif conformément à, en partie, la valeur du résultat nouvellement calculé ;
dans lequel le filtre d'annulation de bruit est configuré pour générer un signal d'annulation de bruit mis à jour sur la base de la pluralité mise à jour de coefficients, l'actionneur effectuant la transduction d'un signal audio d'annulation de bruit mis à jour sur la base du signal d'annulation de bruit mis à jour, le signal audio d'annulation de bruit mis à jour interférant de manière destructrice avec un signal de bruit non souhaité dans une zone d'annulation de bruit ;
dans lequel le module de traitement adaptatif est en outre configuré pour : durant l'étape temporelle, faire la somme du carré des valeurs stockées dans la mémoire tampon pour produire une valeur correctrice et remplacer le résultat nouvellement calculé par la valeur correctrice.
8. Système d'annulation de bruit selon la revendication 7, dans lequel le module de traitement adaptatif est en outre configuré pour trouver une racine carrée du résultat nouvellement calculé pour produire un calcul de norme, dans lequel la mise à jour de la pluralité de coefficients est basée en partie sur le calcul de norme.
9. Système d'annulation de bruit selon la revendication 7, dans lequel le module de traitement adaptatif est en outre configuré pour : ajouter le carré de la valeur reçue à une somme en cours de valeurs reçues au carré pour produire une somme courante en cours de valeurs reçues au carré ; et
remplacer le résultat nouvellement capturé par la somme courante en cours de valeurs reçues au carré si la somme courante en cours de valeurs reçues au carré est le résultat de la somme d'un nombre de valeurs au carré égal à la longueur de la mémoire tampon.
10. Système d'annulation de bruit selon la revendication 9, dans lequel le module de traitement adaptatif est en outre configuré pour définir la somme courante en cours de valeurs reçues au carré sur zéro après le remplacement du résultat nouvellement calculé par la somme courante en cours de valeurs reçues au carré.
11. Système d'annulation de bruit selon la revendication 7, dans lequel la valeur reçue comprend une pluralité de valeurs et la valeur d'extrémité comprend une pluralité de valeurs d'extrémité, dans lequel le nombre de la pluralité de valeurs et le nombre de la pluralité de valeurs d'extrémité est le même.