A message from our CEO about the future of Stack Overflow and Stack Exchange. Read now.

# Tag Info

## Hot answers tagged adaptive-filters

11

The key concept that you are missing is that you are not just minimising the difference between input and output signals. The error is often calculated from a 2nd input. Just look at the Wikipedia example related to the ECG. The filter coefficients in this example are recalculated to change the notch frequency of a notch filter according to the frequency ...

10

A beamformer is basically a spatial filter. It can be passive, just like a temporal filter. Instead of samples separated by time, they are separated by space. A passive temporal filter can be a bandpass that is "aimed" or "steered" at a particular frequency. For passive spatial filters (i.e. beamformers), the filter can be steered towards a particular ...

10

Turns out that convolution and correlation are closely related. For real signals (and finite energy signals): Convolution: $\qquad y[n] \triangleq h[n]*x[n] = \sum\limits_{m=-\infty}^{\infty} h[n-m] \, x[m]$ Correlation: $\qquad R_{yx}[n] \triangleq \sum\limits_{m=-\infty}^{\infty} y[n+m] \, x[m] = y[-n]*x[m]$ Now, in metric spaces, we like to use this ...

7

The LMS algorithm is based on the idea of gradient descent to search for the optimal (minimum error) condition, with a cost function equal to the mean squared error at the filter output. However, it doesn't actually calculate the gradient directly, as that would require knowing: $$E(\mathbf{x}[n]e^*[n])$$ where $\mathbf{x}[n]$ is the input vector and $e[... 7 TL;DR: No, they are not necessarily the same. Gory Details Least squares is just an optimization technique. It is used in a variety of ways. For filter design it is used to select that realizable filter$H_r(e^{j\omega})$that most closely matches, in the least squares sense, the ideal required filter response$H_i(e^{j\omega})$: $$H_r(e^{j\omega}) = \... 6 Note that the inverse of an FIR system is IIR, and the same is true for the inverse of an IIR system, unless it is an all-pole system, the inverse of which would be FIR. So in most cases the ideal equalizer should have an infinitely long impulse response in order to perfectly invert the channel. In practice almost all adaptive equalizers are FIR filters ... 6 That really depends on context, but generally adaptive implies that the calculations are done on-line / on the fly. In some applications, the filter is updated for a while, then the adaptation is turned off and the last lot of weights are used. 6 To expand on what Peter K. has said, if the signals being used by the filter are stationary, then the filter weights or coefficients can be determined and the filter operates as it was designed without further updates to the filter weights. However, if the signals change, or become quasi-stationary, the filter will adapt continuously. 6 Comments provided here are in two broad categories: Presentation and Subject matter. The "Presentation" section is the easiest to address. There are some things that could be rephrased in terms of language use but these might be just personal preferences. The "Subject matter" section includes comments in methodology which could take more time to address. ... 6 Here I expected y(n) is to be computed by convolving x(n) with h(n), but in the equation given by Wikipedia it is shown as a matrix multiplication y(n) = h^H(n).x(n). Are these two operations(convolution and matrix multiplication) same here?. The system is an FIR system, so the vector multiplication here is equivalent to convolution --- for ... 5 Your code reveals many misconception about what the CMA is supposed to achieve: your step size mu is much too small; note, however, that the optimal step size can only be found through experiment. the variabe noisedB appears to be the desired SNR of the received signal. An SNR of 0\,\text{dB} as specified by you is very poor (the noise is as strong as the ... 5 You want to remove the heart beat signal and keep the "noise". We can solve this problem by using a denoising algorithm, and subtracting the denoised signal from the original signal. Setting frequency cutoffs for a frequency domain filter can get tricky and turn into a game of whack-a-mole because there's "high frequency" components in the heartbeat blip (... 4 These are the key differences between FIR and IIR filters, regarding the feature you wish to control are the following:$$ \begin{array}{c|lcr} \text{Feature} & \text{IIR} & \text{FIR} \\ \hline \text{Implementation} & \text{Poles & Zeros} & \text{Zeros Only} \\ \text{States} & \text{Yes} & \text{No} \\ \text{Phase Delay} & \... 4 In order to be able to choose an optimal value for the delay$\Delta$it's important to understand how the system works. The purpose of the delay is to decorrelate the desired signal$s(n)$and the signal component$s(n-\Delta)$at the input of the adaptive filter. This means that$\Delta$must be chosen such that the autocorrelation$R_{ss}(k)$of$s(n)$is ... 4 The Covariance Matrix is commonly defined as $$\mathbf Q = E\left[ (\mathbf x -\mathbf\mu_{x})(\mathbf x -\mathbf\mu_{x})^*\right]$$ with$\mu$denoting the mean value, i.e.$\mu_{x}=E\left[\mathbf x\right]$, and$\mathbf x$being column vectors. The fact that you define the covariance matrix as $$\mathbf{R}_i = E\left[\textbf{u}_i^*\textbf{u}_i \right]$$ ... 4 A real filter wont perfectly remove all unwanted frequencies. But then, a real$X_\mathrm{anything,whatever}$won't do its job perfectly. The real world isn't perfect, you only get perfection in mathematics. What's important though is that a filter can approximately remove the unwanted frequencies. For example if you have some interference at 100 kHz, then ... 4 The use of the conjugate in the formation of the adaptive filter isn't necessary. However, if you do not write the output using a conjugate then it is quite easy to forget that the variables you are dealing with are complex. If you write $$h(n)=\sum_{k=0}^{\infty}w_k(n)u(n-k)$$ then it isn't clear that you are dealing with complex quantities. As Robert has ... 4 The IIR filter doesn't have to be unstable, but it has the potential of being so; unlike the FIR case which doesn't have even the potential. One reason for the (potential) unstability of an IIR (adaptive) filter is the numerical issues due to coefficient quantization. When the poles are closer to unit circle this will be critical. This is especially ... 4 Although what @Fat32 wrote is correct, I think the potential instability of IIR filters is not the main reason for the instability of an adaptive IIR filter. After all, we can calculate the poles in each iteration and put a hard constraint to avoid poles out of the unit circle. Even within the case of the FIR filters - which are unconditionally stable- we ... 3 "Deep zeros" in the input spectrum are caused by a channel which strongly attenuates one or several frequencies, often due to multipath fading. This causes problems for a (linear) equalizer because it tries to compensate for these "deep zeros" by strong amplification of the corresponding frequency bands, which leads to noise enhancement. Non-linear ... 3 Local contrast enhancement a.k.a. Unsharp masking is a simple, fast method for modeling, then removing, smooth (low-frequency) background noise. In a nutshell, extract a smooth background image with a wide-radius lowpass filter sharper_image = image + c * (image - background), c ~ 10 % or so: highpass Using scipy.ndimage, this is : def sharpen( image, ... 3 My best attempt at this so far is kind of inspired by the difference of Gaussians. I'm putting it as an answer, even though I'm not totally happy with it. Basically I made a blurred version of the image using two different Gaussian kernels. One captures the fine detail (small kernel) and the other captures the broad detail (large kernel). These two were ... 3 In case you're looking for an edge-preserving low pass filter, you could have a look at the bilateral filter. Implementation is fairly straightforward. 3 The quadratic surface is determined by the autocorrelation matrix of the data, which is always positive definite or positive semi-definite. This means that any stationary point is always a minimum. In the worst case, this minimum is not unique if the matrix is singular, but it can never be a saddle point. 3 It depends on how good your interpolation between samples is. If you have really good interpolation, anything more than 2 samples per cycle will suffice. This is not just a theoretical fact, it is my experience in practice using polyphase interpolation that combines 64 adjacent table-lookup samples. If you're using linear interpolation (which combines 2 ... 3 One way to do this is to look at modeling your signal: $$x[n] = x_h[n] + x_n[n]$$ where$x_h$is the hissing sound and$x_n$is the noise. If you can say that$x_n$is modeled as: $$x_n[n] = \sum_{k=K_1}^{K_2} a_k \sin(k\omega_0 n + \phi_k)$$ where$K_1$is the lowest harmonic of frequency$\omega_0$that makes it through your high pass filter,$K_2$is ... 3 ...can we predict$h$using LMS algorithm under all conditions? LMS converges under most "reasonable" conditions. The weights of the filter are adapted by a "signal" that is derived by the mean square error of the difference between two signals, which is convex. That is, it has a single minimum (when it does) and it will trickle towards it. If you notice ... 3 Unlike a standard high pass filter where you set a cut-off frequency and other design parameters for a fixed filter result with a pass band ripple, stop band rejection, phase response etc.. the "recursive least squares filter" is an adaptive filter commonly used for channel equalization. As a high level working example of a LMS equalizer, please see my post ... 3 The play similar role in those algorithms - the ability to forget the past and adapt to current reality. In the LMS, the classic implementation has$ \alpha = 1 \$. Namely the optimal weights at any point are function of all inputs. The Leakage factor allows to weigh the past differently in a damped manner which over times means the far past has ...

3

If you are working on chat application (presumably web), then I suggest to take a look at WebRTC. It offers a noise suppressor that works ok for speech. Another option would be to use part of the Speex, which also has a noise suppression module.

Only top voted, non community-wiki answers of a minimum length are eligible