New answers tagged

0

When simulating data with a neat model, like in yours, there is a risk of bias in trying to recovered the "true" model from the observation, and overlooking some tacit assumptions or even the actual goal (hence this pragmatic answer). First, fitting Gaussians to noisy data is a complicated topic, that as attracted many works. Even fitting a single ...


1

Applying ssq_cwt with extract_ridges, I obtain below. Improvable with better windowing, more samples. Smoothing can be applied on amplitude plot to make it more interpretable without losing much accuracy. import numpy as np from ssqueezepy import ssq_cwt, extract_ridges from ssqueezepy.visuals import plot, imshow # z = see OP's code; used np.random.seed(...


1

So, according to your text, $$ H := F^bh,$$ i.e. what you call the bit-reversed order FFT of the channel impulse response. Since "bit-reversed order" just implies you're permuting outputs of the FFT, $F^b$ is just a row permutation $\Pi_{BR}$ of the standard DFT matrix $D$. Since the "proper" DFT actually leads to a diagonal $H$ (as a ...


4

Solving the Linear Combination of Real Harmonic Signal The data model is given by: $$ x \left( t \right) = \sum_{i = 1}^{M} {a}_{i} \sin \left( 2 \pi {f}_{i} t + {\phi}_{i} \right) + n \left( t \right) $$ Where $ M, {\left\{ {a}_{i} \right\}}_{i = 1}^{M}, {\left\{ {f}_{i} \right\}}_{i = 1}^{M}, {\left\{ {\phi}_{i} \right\}}_{i = 1}^{M} $ are unknown ...


1

FFT is poorly-equipped for this task$^{1}$; time-frequency localization, like STFT or CWT, is preferred. Said representations can be refined further to trace out frequency and amplitude over time with synchrosqueezing. 1: I originally understood the question as tracking instantaneous amplitude and frequency modulations of a (non-stationary) signal, which isn'...


1

The standard method of dealing with spectral leakage is time domain windowing. This involves a fair bit of tradeoff: main lobe width, side lobe peaks & distribution, stop band attenuation, etc. These tradeoffs are controlled by choosing the window type and window parameters (if applicable). What the best trade off is, really depends on your specific ...


1

There is nothing wrong about subtracting the bias. For the Weiner filter, the operation is a matrix multiply, there are no non-linear operations taking place which is reason everything works out. There are two possible ways to do it: Subtract the bias before the filter. In this case you'll have a Weiner filter, $G_1$, which will produce $\hat{x}$ given $x+n$...


1

Why don't you simply compute $X^{H} X / N$ ? clear all; close all; fs = 4000; N = 100*fs; R = 0.5;% overlap percent Nseg = fs; M = 8; I noticed your data was not complex, since you metioned complex in the question here I made it complex. X = 0.5*randn(N,M) + 0.5j *randn(N,M); This will be close to the identity matrix there will be small complex ...


Top 50 recent answers are included