New answers tagged

2

Your Python code has two weak spots, rather typos, but these are not the source of your failure to "show a plateau" in PSD graph. First we review these "typos". The line f, check = welch(Const_wave,samplerate,nperseg=len(Wave)) must read f, check = welch(Const_wave,samplerate,nperseg=len(Const_wave)) or else, the variable Const_wave ...


1

Since you are reproducing the paper's results, read it carefully. At the bottom of page 4 it says This representation is formed by complex numbers, eliminating the imaginary part of each number in the frequency-domain signal. For this transformation, it is needed to calculate the power spectral density (PSD), as shown in Equation (3), $$ P = \lim_{T\to\...


2

This is a common trap in generating frequency ramps. For the ramp given by $\cos(2\pi f(t) t)$ with the ramp function as $f(t)$, $f(t)$ is NOT the instantaneous frequency desired. Please see this post which fully details this: Simulation of a Frequency ramp For optimized frequency chirp generation for channel estimation that accounts for this as well as ...


1

There is a bit of terminology confusion here. Strictly speaking the order of the filter is the number of poles, so in your case you designed a 4th order filter. Many software packages use the convention for bandpass/stop filters to specify the order of each slope to make it consistent with lowpass/highpass design calls. That results in a filter of twice the ...


0

As said in the comments this question is better aligned with stack overflow. Answer The problem is that curve_fit assumes ydata = f(xdata, *params) + eps, and you assumed ydata = f(params, xdata) + eps. If I understand your problem correctly your function could be implemented as def myfun(xdata, a, b, c): return np.exp(a)./ xdata**np.exp(b) - c


1

Phase offset and timing offset are two different things with two independent tracking loops to resolve. A Phase Lock loop eliminates carrier phase offset (and a frequency offset is a carrier offset changing with time). We can have phase offset with no timing offset, and we can have timing offset with no phase offset. Once carrier offset is removed, I ...


0

You can use various library available to extract features such as: Librosa audiolazy psafe pyAudioProcessing pyAudioAnalysis


1

This post provides many details on implementing carrier recovery for a higher order QAM system (or even QPSK). High modulation index PSK - carrier recovery Using a PI loop filter where in addition to a simple accumulator, a direct (proportional) path is also summed in results in a 2nd order Type 2 tracking loop as required to track phase offsets to zero ...


0

The mel spectrogram additionally includes a step of projecting (power of) STFT bins onto Mel-frequency bins via a Mel filterbank; I don't have access to path so I made demo on exponential chirp: You can visualize the kind of projection taking place by plotting the mel basis: Note in general the two won't look alike unless filters.mel are carefully selected ...


4

As mentioned in the comments you can just take the integral of the squared magnitude. Notice that the magnitude of $|e^{a+bj}| = |e^a||e^{bj}| = e^a$ for $a,b \in \mathbb{R}$, comparing with your function we see that $|x_i(t)|=1$. We conclude that $x_i(t)$ is a power signal, not an energy signal, i.e. you must define a time interval to integrate. Then the ...


1

Q1: Sample values in .wav file represent the waveform amplitude? Yes. Q2: What is silence? That depends on how you define it. The signal that you generated actually has a lot of energy but it's all at 0 Hz. Your DAC cannot reproduce 0 Hz, your speaker cannot reproduce 0 Hz, air cannot transmit 0 Hz, and your ear can't hear 0 Hz. There is lots of energy ...


0

The order of the filter and number of samples per symbol are two choices for the RRC filter for a given roll-off factor. Increasing the number of samples per symbol allows for simpler analog reconstruction filtering (as given by a higher sampling rate for the waveform), but this can be done with subsequent upsampling if needed so an common good choice is to ...


1

I'd take bets that the 2D-DCT is just separable into identical row-wise and column-wise DCTs. Anything else would be surprising. Anyways, you know the 2D-DCT is a reversible linear operation: It maintains dimensionality, and has only a trivial null space. Therefore, you can analyze what it does directly from applying it to an arbitrarily chosen basis of ...


0

You need change the scalings parameter. In this case, you need increase it.


1

There are quite a few solutions, you can recognize that you have the square root of the rolling mean of the squared magnitude of the signal. Using pandas rolling mean this could be written as follows. import pandas as pd; def rolling_rms(x, N): return (pd.DataFrame(abs(x)**2).rolling(N).mean()) **0.5 Each entry in the result contains the RMS of N ...


1

First, I assume that it is a that is equal to array([ 1. , -3.9671626 , 5.90202586, -3.90255878, 0.96769554]). Second, that array when you go through all the z-domain stuff, you find that you are representing the difference equation $$\sum_{k=0}^N a_k y_{n-k} = \sum_{k=0}^N b_k x_{n-k}$$ If you solve that for $y_n$ you get $$y_n = -\sum_{k=1}^N a_k ...


0

PyWavelets' cwt is flawed, and so is scipy's; use ssqueezepy.cwt. a low pass for the lower frequencies not covered using the mother and daughter wavelets ... with the short time Fourier transform of lower frequencies in one graph This is exactly what kymatio's Scattering1D does (pass average=False, oversampling=999), it's CWT for most frequencies, and STFT ...


1

I was able to run your code, reproduce your results, and it seems like the values given by that table are too highly truncated. I modified the code to calculate the scattering matrix where you have it hard coded in, and the results are much closer. I also modified it to use an impulse of 0.01, as that's what they used in the linked article. Apologies for ...


0

Break your signal into short overlapping frames over which it is stationary. Say, the length of the frame is $L$ samples. You can window it to smooth out discontinuities. For example, you can use a Hann window with an overlap of $L/2$ samples. On each windowed frame, use the Wiener filter to find the optimal inverse filter coefficients to cancel your noise. ...


0

By Welch's method, you can calculate the power spectrum by averaging the magnitude of a bunch of FFT frames (or time frames of the STFT). If your signal is $x(t)$, and its STFT is $X(\omega, \tau)$, where $\omega$ is the frequency bin, $\tau$ is the time frame and $T$ is the total number of frames, the PSD is $$P_x(\omega) = \frac{1}{T} \sum_{\tau=0}^{T-1} |...


0

I know it is a bit late, but i had the SAME issue as you today. But from what you showed, i may got the solution similar to Matlab. I don't know if it is the right answer but you could tell me in a future! Just to complement what you have already said, in the matlab documentation for the function, we have: stopband attenuation of 60 dB. I did some changes ...


Top 50 recent answers are included