# Tag Info

0

Note that span in the rcosdesign() fn call sets the length of the filter, in symbols. So your filter length will end up being $span*sps+1$, or in this case $20*1000+1=20001$ taps. The new time axis that you've computed there is accurate for the delta (Tr/sps), but note that the endpoints there aren't accurate. This relates to why you're asking about the ...

0

So, apparently this is the way the web audio works, it cannot handle smooth transitions when playing back sound, which results in such clicks or crackling. This, this and this links helped me come to a conclusion that a custom ADSR envelope is needed. When I applied such envelope to gradually but very fast increase the amplitude of the sound at the beginning ...

4

Like @MattL. and @aconcernedcitizen say, the issue is numerical. Python's scipy.signal.firls uses internally the solver scipy.linalg.solve. For your input, the solver throws a "matrix singular" error, but firls suppresses the error and falls back to another solver scipy.linalg.lstsq which doesn't throw an error but also doesn't get the problem ...

6

The problem lies in the formulation of the desired response, and especially in the "don't care" region, which is extremely wide for the chosen filter length. Even though I can't give any exact relation between transition band width and filter length, I know that in the case of a least squares design, the matrix of the system of linear equations ...

2

Because of the comment, I obviously must have seen this question nearly 5 years ago, but I don't remember it really. But one advantage that windowed-sinc has over P-McC or LS for a brick-wall interpolating filter is that the windowed-sinc can be guaranteed to pass through zero at all integer values except 0. That means the interpolated signal always goes ...

1

To align the samples (and realigning with different filter implementations) consider implementing actual timing and carrier recovery loops, or using those discriminators and approaches to manually correcting the offsets as would be done in those acquisition and tracking loops. This will put you on the road toward an actual implementation when the transmitter ...

1

This is a well-known result with no specific name. In signal processing, we usually call the kernel impulse response (as correctly mentioned in a comment by Marcus Müller). The response to a unit step signal is called step response. So what you've found is how to compute the impulse response from the step response. If $h(t)$ denotes the impulse response of a ...

0

From the OP's original question and the subsequent comments I suspect that he is interested in creating an FIR filter from a truncated impulse response (for example the impulse response of a Butterworth filter by using only the first 200 samples). The compensation used is commonly done with "windowing" and this refers to the windowing process for ...

0

This is actually an excellent place to start with ML/DNN tools. Noise Reduction, Speech Processing and Recognition are driving a lot of the innovation in sound in this space. Recurrent Neural Networks and LSTM models are good at identifying patterns - which can be useful in this context. https://jmvalin.ca/demo/rnnoise/ If you’ve got an NVIDIA GPU you could ...

1

Then, using np.poly, I thought I would receive the coefficients of the resulting filter. I'm guessing, that's your problem. With 16 poles this becomes a very high order polynomial which is numerically challenging. Try implementing the filter as cascaded second order sections instead. If you want to eliminate steady state sine waves with constant frequency, ...

1

Complex multiplication involves a cross product that rotates the vectors during filtering. If a sample of signal X is complex and a tap of filter Y is complex: complex mul: X * Y = Xreal * Yreal - Ximag * Yimag + i * (Xreal * Yimag + Ximag * Yreal) which requires 4 multiplies, which can be done with 4 parallel filters, plus a summation unit. If the filter Y ...

4

Let's look at a simple convolution sum: $$y[n] = \sum_{k=0}^{N-1} h[k] \cdot x[n-k]$$ where $h[n]$ is the impulse response of the filter and $x[n]$ is the input signal. If both are complex we can rewrite this as y[n] = \sum_{k=0}^{N-1} h_r[k]x_r[n-k] - h_i[k]x_i[n-k] +j \cdot (h_r[k]x_i[n-k] + h_i[k]x_r[n-k]) = \ \sum_{k=0}^{N-1} h_r[k]x_r[n-k] - \sum_{k=0}...

4

A real operation on a complex input can be implemented as two real operations in parallelle, rather than a truely complex operation. An example would be multiplying a complex number with a real number. Rather than a full complex multiply, you get away with two real multiplies, one for the real part of the input, another for the imaginary part. -k

Top 50 recent answers are included