Recent Questions - Signal Processing Stack Exchange most recent 30 from dsp.stackexchange.com 2020-12-05T18:35:12Z https://dsp.stackexchange.com/feeds https://creativecommons.org/licenses/by-sa/4.0/rdf https://dsp.stackexchange.com/q/71827 0 How do we calculate bandwidth from signal formula? Nerdvan https://dsp.stackexchange.com/users/54010 2020-12-05T13:46:30Z 2020-12-05T16:42:34Z <p><a href="https://i.stack.imgur.com/zo4Vl.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zo4Vl.png" alt="composite signal" /></a></p> <p>How can we calculate the bandwidth of distinct signals like this? I guess the right answer is 90 - 10 = 80 Hz. But I have a hard time understanding why is this calculated in that way. I thought the bandwidth is calculated by the diversity of signals and since there aren't in-between frequencies like 11, 12... in the image there are 5 signals, shouldn't the bandwidth be 5 Hz? What am I missing here?</p> https://dsp.stackexchange.com/q/71824 0 Explanation on how to calculate sinusoidal waveform? [closed] Dave https://dsp.stackexchange.com/users/54463 2020-12-05T13:05:37Z 2020-12-05T13:11:08Z <p>I need help and an explanation on how to calculate this please:</p> <pre><code>Calculate the frequency of a sinusoidal waveform whose period is 250ns. You must use SI units in your answer. </code></pre> https://dsp.stackexchange.com/q/71823 0 how to do initialization of random vectors in matlab Muhammad Wasif https://dsp.stackexchange.com/users/54462 2020-12-05T12:50:50Z 2020-12-05T13:10:32Z <p>I have to generate random vectors for <span class="math-container">$\mathbf{p}^{(0)}$</span>, <span class="math-container">$\mathbf{u}_l^{(0)}$</span>,<a href="https://i.stack.imgur.com/8sCNb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/8sCNb.png" alt="a picture of algorithm" /></a> and <span class="math-container">$\mathbf{v}_l^{(0)}$</span> for <span class="math-container">$l=1\ldots L$</span>.</p> <p>Now I am confused about how to generate these vectors as <span class="math-container">$l=1\ldots L$</span> is the number of users, for example, I have <span class="math-container">$L=2$</span> then the generation of vectors should like <span class="math-container">$\mathbf{p}^{(1)}$</span>, <span class="math-container">$\mathbf{p}^{(2)}$</span> for <span class="math-container">$\mathbf{u}_1^{(0)}$</span>, <span class="math-container">$\mathbf{u}_2^{(0)}$</span>, <span class="math-container">$\mathbf{v}_1^{(0)}$</span>, <span class="math-container">$\mathbf{v}_2^{(0)}$</span> and after that, I have performed steps 1 and 2 respectively, for each <span class="math-container">$l$</span>. Kindly guide me I am very confused.</p> <pre><code>L=4; N=4; N_l=2; P=10; w = ones(L,1); beta = ones(L,1); %p = zeros(L,1); H = sqrt(.5)*(randn(N_l,N)+1i*(randn(N_l,N))); u_l = sqrt(.5)*(randn(N,1)+1i*(randn(N,1))); u_i = sqrt(.5)*(randn(N,1)+1i*(randn(N,1))); v_l = sqrt(.5)*(randn(N_l,1)+1i*(randn(N_l,1))); u_l = u_l./norm(u_l,2); v_l = v_l./norm(v_l,2); for k = 1:L p(k,:)=P/L; w'*p(k)&lt;=P; </code></pre> <p>A general code for initialized vectors are given in code but they are for <span class="math-container">$L=1$</span>, I have work for generalized case where <span class="math-container">$L$</span> can be changed accordingly</p> https://dsp.stackexchange.com/q/71822 1 Deconvolution of a 1d time domain wave signal for objective function Lampard https://dsp.stackexchange.com/users/54461 2020-12-05T12:33:50Z 2020-12-05T16:54:27Z <p>I have a synthesized signal (the bottom of the following figure), which is the convolution of the input signal (at the top) and the objective function (in the middle). The intention is to retrieve the objective function from the convoluted signal, when the input signal is known. From practical point of view, it seems to be an ill-conditioned problem, but I'm curious to know the expert opinions on how far one can get, and with what SP toolset. Specifically, I would like to know: 1). comparing the first wave packet and second, how to tell whether the first square in the objective function is one with shorter time span but the same amplitude, or with the same time span but smaller-amp; 2). for the 4th square, how to tell it's not two separate short squares rather than a single long one. I've also attached the Matlab codes I used to generate the figures. Thank you very much.</p> <p><strong></strong>: I have now added an example experimental data, and the signal (in blue, noise levels are the yellow and red plots) is believed to be predominantly formed by the convolution of the input signal with a objective function (which can be assumed to be step functions with different amplitudes - could be negative - and widths), and the ultimate goal is to recover the info of the objective function at the big signal amplitudes.</p> <p><a href="https://i.stack.imgur.com/ZNakh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ZNakh.png" alt="enter image description here" /></a></p> <p><a href="https://i.stack.imgur.com/qwSTa.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qwSTa.png" alt="enter image description here" /></a></p> <pre><code>clear; close all; %% 10MHz incident signal; fs = 1000e6; f = 10e6; wavelength = fs/f; sig = wavemaker(3.5, f, fs); figure; subplot(3,1,1); plot(sig, 'LineWidth', 1); title(strcat('input signal, wavelength =',num2str(wavelength),' data pts')); axis([0,3300,-2,2]) %% Sparse signal; N = 3000; % N : length of signal s = zeros(N,1); k = [50:(50+wavelength*0.1) 500:(500+wavelength*0.6) 1200:(1200+wavelength*1.6) 2200:(2200+wavelength*4.6)]; s(k) = 1; subplot(3,1,2); plot(s, 'LineWidth', 1); title('distribution: objective function'); axis([0,3300,0,2]) %% convoluted signal y = conv(sig,s); subplot(3,1,3);plot(y, 'LineWidth', 1);hold on; plot(abs(hilbert(y)), 'LineWidth', 1); title('convoluted signal between input and districution'); xlim([0,3300]) function x = wavemaker(nCycles, fc, fs) % function to generate wave packet; nSample = round(fs / fc * nCycles); ts = 1 / fs; T = ts * nSample; t_max = ts * (nSample-1); t = 0: ts: t_max; x = sin( 2 * pi * fc .* t); x = x.*hanning(nSample)'; end </code></pre> https://dsp.stackexchange.com/q/71816 -1 Find the minimum number of arithmetic operations required for 2D Filters [closed] Ashley https://dsp.stackexchange.com/users/54446 2020-12-05T06:45:11Z 2020-12-05T11:06:41Z <p><a href="https://i.stack.imgur.com/AvmEl.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/AvmEl.jpg" alt="enter image description here" /></a></p> <p>Find the minimum number of arithmetic operations required for 2D Filters</p> https://dsp.stackexchange.com/q/71815 3 White Gaussian Noise Spectrum and Power Noha https://dsp.stackexchange.com/users/46733 2020-12-05T06:11:47Z 2020-12-05T13:24:09Z <p>White Gaussian noise has constant power spectral density <span class="math-container">$N_0/2$</span>. I know that the area under the power spectral density curve between two points gives the power of the signal between these two points.</p> <ol> <li><p>If I want to know the power of a certain frequency in the signal (not in a range of frequencies), can we say that the power of each frequency in the signal is exactly <span class="math-container">$N_0/2$</span>?</p> </li> <li><p>The total of power of additive white Gaussian noise is infinity, what does this mean? Is it reasonable to assume that the noise added to the signal have an infinite power?</p> </li> </ol> https://dsp.stackexchange.com/q/71814 -2 Find all the possible codes resulting from Huffman Coding [closed] Ashley https://dsp.stackexchange.com/users/54446 2020-12-05T05:48:01Z 2020-12-05T05:48:01Z <p><a href="https://i.stack.imgur.com/KuZ9H.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/KuZ9H.jpg" alt="enter image description here" /></a></p> <p>Find all the possible codes resulting from Huffman Coding.</p> https://dsp.stackexchange.com/q/71811 1 Understanding the H1 and H2 estimators Pontus S https://dsp.stackexchange.com/users/54450 2020-12-04T21:55:39Z 2020-12-05T12:13:29Z <p>So the <span class="math-container">$H_1$</span> and <span class="math-container">$H_2$</span> frequency response estimators for SISO systems are defined according to:</p> <p><span class="math-container">\begin{align} H_1 &amp;= \frac{P_{yx}}{P_{xx}}\\ H_2 &amp;= \frac{P_{yy}}{P_{xy}} \end{align}</span></p> <p>Where <span class="math-container">$\frac{A}{B}$</span> is an element-wise division of vectors <span class="math-container">$A$</span> and <span class="math-container">$B$</span>. The <span class="math-container">$H_1$</span> estimator should be used when the noise is uncorrelated with the input, and <span class="math-container">$H_2$</span> should be used when the noise is uncorrelated with the output. I've been trying to experiment with estimating frequency responses but I end up getting the same result regardless of which of the estimators I use. I first define the cross-spectral density according to:</p> <p><span class="math-container">\begin{align} P_{xy} &amp;= X\odot \bar{Y}\\ P_{yx} &amp;= Y\odot \bar{X}\\ P_{yy} &amp;= Y\odot \bar{Y}\\ P_{xx} &amp;= X\odot \bar{X} \end{align}</span></p> <p>Where <span class="math-container">$\bar{A}$</span> denotes the complex conjugate of <span class="math-container">$A$</span>, <span class="math-container">$\odot$</span> denotes element-wise multiplication. Here <span class="math-container">$Y$</span> and <span class="math-container">$X$</span> are vectors of the same length and the Fourier transformation of the signals <span class="math-container">$x$</span> and <span class="math-container">$y$</span>.</p> <p>If the definition of cross-spectral density is inserted into the <span class="math-container">$H_1$</span> and <span class="math-container">$H_2$</span> estimator formulations as described at the beginning of this post I get:</p> <p><span class="math-container">\begin{align} H_1 &amp;= \frac{Y\odot \bar{X}}{X\odot \bar{X}} = \frac{Y}{X}\\ H_2 &amp;= \frac{Y\odot \bar{Y}}{X\odot \bar{Y}} = \frac{Y}{X} \end{align}</span> And, therefore, <span class="math-container">$H_1 = H_2 = \frac{Y}{X}$</span></p> <p>The <span class="math-container">$H_1$</span> and <span class="math-container">$H_2$</span> estimators should yield different results as one is supposed to be used when the noise is uncorrelated with the input and the other with the output (as mentioned above).</p> <p>However, according to my methodology, they are equivalent, at least according to my definitions and calculations. There must, therefore, be something wrong with my approach, but I can't seem to understand what.</p> https://dsp.stackexchange.com/q/71810 1 Why can you use the one-sided laplace transform to solve differential equation describing a causal LTI-system? DancingIceCream https://dsp.stackexchange.com/users/54046 2020-12-04T19:36:31Z 2020-12-05T12:39:48Z <p>In an example, an equation describing a causal LTI-system is</p> <p><span class="math-container">$$(D^2 + 5D + 6) y(t) = (D+1) x(t)$$</span></p> <p>where <span class="math-container">$y(t) = y_{zs}(t) + y_{zi}(t)$</span> and the initial conditions are <span class="math-container">$y(0^-) = 2, \dot{y}(0^-) = 1$</span>.<br /> <span class="math-container">$x(t) = e^{-4t}u(t)$</span> and we want to calculate <span class="math-container">$y(t)$</span>.</p> <p>My teacher said in an example of a solution that because <span class="math-container">$x(t) = 0, \quad t &lt; 0$</span> we can take the one-sided/unilateral laplace transform of the RHS (since then the unilateral and bilateral laplace transform are the same, I guess ). Further, the explanation continued with that because the system is causal, the impulse response <span class="math-container">$h(t) = 0$</span> for <span class="math-container">$t &lt; 0$</span> and therefore <span class="math-container">$y_{zs}(t) = (x*h)(t) = 0$</span> for <span class="math-container">$t &lt; 0$</span>. Therefore, <strong>supposedly, <span class="math-container">$y(t&lt;0)=0$</span> and we can take the one-sided laplace transform of the LHS too</strong>.</p> <p>I am questioning the part in boldface, because what about the zero-input response <span class="math-container">$y_{zi}(t)$</span>, how do we know its value for <span class="math-container">$t&lt;0$</span>? I would like to belive it is not equal to <span class="math-container">$0$</span> for <span class="math-container">$t&lt;0$</span> due to the initial conditions given at <span class="math-container">$0^-$</span> not being zero and <span class="math-container">$0^- &lt; 0$</span>. If it is not equal to <span class="math-container">$0$</span> for <span class="math-container">$t&lt;0$</span> how can we know we can take the one-sided laplace transform of the LHS?</p> <p>Note: I also read <a href="https://dsp.stackexchange.com/questions/37731/differential-equations-and-lti-systems">this question</a> in which it is stated that non-zero initial conditions make the system non-linear and time-varying, which also makes me think the equation at hand is inconsistent with the fact that it describes an LTI-system?</p> <p><strong>Edit 1</strong> in response to the comment about Lathi's linear systems and signals:<br /> I did not remember that this example was indeed from the book, but I have read the example and the section &quot;Comments on initial conditions at <span class="math-container">$0^-$</span> and at <span class="math-container">$0^+$</span> &quot; before. The section explains that we cannot expect the total response <span class="math-container">$y(t)$</span> to satisfy the initial conditions given at <span class="math-container">$0^-$</span> at <span class="math-container">$0$</span>, which makes perfect sense I think since <span class="math-container">$0^- \neq 0$</span>. It goes on to say that there is another version of the laplace transform, <span class="math-container">$L_+$</span> that is not as convenient to work with. The author's discussion might have gone a bit over my head, because unfortunately I can't understand how it answers my questions, that is how we can assume <span class="math-container">$y(t)$</span> to be causal (in order to use the unilateral laplace transform on both sides of the equation) and the note about the non-zero initial conditions implying the system to not be LTI.</p> <p>The reason I have not accepted the answer given so far is that it is a bit to advanced for me to judge its correctness and therefore I wanted to wait a bit in case there would be more input for my question. But eventually I will just assume it is correct and accept it.</p> https://dsp.stackexchange.com/q/71808 0 Solve for minimum and maximum value of dct coefficient Ashley https://dsp.stackexchange.com/users/54446 2020-12-04T18:15:55Z 2020-12-05T16:25:32Z <p><a href="https://i.stack.imgur.com/r0NrB.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/r0NrB.jpg" alt="solve for minimum and maximum value of dct coefficient" /></a></p> <p>Solve for minimum and maximum value of dct coefficient</p> https://dsp.stackexchange.com/q/71804 3 Derivation of the lowpass to bandpass transformation chaffdog https://dsp.stackexchange.com/users/54437 2020-12-04T12:17:00Z 2020-12-05T10:01:58Z <p>I have a basic question.</p> <p>The &quot;well known&quot; lowpass to bandpass transformation is <span class="math-container">$$s \longmapsto \frac{\bar{s}^2 + \omega_1\omega_2}{\bar{s}(\omega_1 - \omega_2)},$$</span> which gives a bandpass transfer function of <span class="math-container">$$\frac{1}{s + 1} \longmapsto \frac{\bar{s}(\omega_1 - \omega_2)}{\bar{s}^2 + \bar{s}(\omega_1 - \omega_2) + \omega_1 \omega_2}.$$</span></p> <p>My intuition is that a bandpass should be the product of a lowpass and a highpass. However, this product gives a different transfer function: <span class="math-container">$$\frac{\omega_1}{s + \omega_1} \frac{s}{s + \omega_2} = \frac{\omega_1 s}{s^2 (\omega_1 + \omega_2) s + \omega_1 \omega_2},$$</span> which indicates that the bandpass transformation does not give this cascade of lowpass and highpass.</p> <ul> <li><p>My question is, how is the bandpass transformation designed, in terms of either combining lowpass filters or by pole placement?</p> </li> <li><p>Related question, but using a different derivation technique, and reference is made to the lowpass/highpass derivation, but it is not shown: <a href="https://dsp.stackexchange.com/questions/22016/how-is-the-lowpass-to-bandpass-transformation-derived">How is the lowpass to bandpass transformation derived?</a></p> </li> </ul> https://dsp.stackexchange.com/q/71802 0 Output of LTI (in time and frequency $\omega$ domain) : when input goes through LPF brucebanner https://dsp.stackexchange.com/users/53992 2020-12-04T09:28:46Z 2020-12-05T08:50:44Z <p>I would like to raise a mathematical question :</p> <p>Let's say we are been given : <span class="math-container">$$x(t) = \begin{cases} \cos(\pi t) &amp; |t| \leq 0.5 \\ 0 &amp; \textrm{otherwise} \end{cases}$$</span> If <span class="math-container">$x(t)$</span> goes through an LPF : <span class="math-container">$H(\omega) = \begin{cases} \pi - 0.5|\omega| &amp; |\omega| \leq 1.5\pi\\ 0 &amp; \textrm{otherwise} \end{cases}$</span><br /> Compute and sketch :</p> <ol> <li>Fourier coefficients of <span class="math-container">$x(t)$</span>, as well as <span class="math-container">$X(\omega)$</span></li> <li><span class="math-container">$y(t)$</span> and <span class="math-container">$Y(\omega)$</span> where <span class="math-container">$y$</span> is the output of the LTI. <strong>Is y(t) periodic</strong>? If so compute it's period and its trigonmetric fourier anlysis coefficients I did the math and I've got this: <span class="math-container">$a_n = \frac{2}{\pi}\frac{\cos(\frac{n\pi}{2})}{1-n^2}$</span> which can not be defined for <span class="math-container">$n=-1$</span> or <span class="math-container">$n=1$</span><br /> update:* We have to compute <span class="math-container">$a_1$</span> and <span class="math-container">$a_{-1}$</span> in seperate: If we do the computations we gain : <span class="math-container">$a_1= a_{-1}=0$</span> I then did : <span class="math-container">$$c_m = \frac{1}{2}(a_m + jbm) \rightarrow c_m = \frac{a_m}{2}$$</span> <span class="math-container">$$x(t) = \sum_{m=-\infty}^{\infty}c_me^{jm \omega_o t} \rightarrow X(\omega) =2\pi \sum_{m=-\infty}^{\infty}c_m\delta(\omega - m\omega_o)$$</span></li> </ol> <p><em>What I tried:</em><br /> Now we know for an LTI : <span class="math-container">$y(t) = x(t) * h(t) \rightarrow Y(\omega) = X(\omega)H(\omega)$</span><br /> but since <span class="math-container">$H(\omega)$</span> exists only in <span class="math-container">$\delta=[-1.5\pi, 1.5\pi]$</span> and <span class="math-container">$\omega_o = \pi$</span> then we only need <span class="math-container">$X(\omega)$</span> in <span class="math-container">$\delta$</span> .<br /> But , <span class="math-container">$X(\omega)$</span> is <span class="math-container">$0$</span> for <span class="math-container">$|m|=1 \rightarrow |\omega| =\pi$</span> and therefore <span class="math-container">$X(\omega) \neq 0 \rightarrow m=0$</span> in <span class="math-container">$\delta$</span> so :<br /> <span class="math-container">$X(\omega) = 2\pi a_0 \delta(\omega)$</span> in <span class="math-container">$\delta$</span></p> <p>we also know <span class="math-container">$\int_{-a}^{a}f(x)\delta(x)dx=f(0)$</span> so:</p> <p><span class="math-container">\begin{align} y(t) &amp;= \frac{1}{2\pi}\int_{-\infty}^{\infty}Y(\omega)e^{j\omega t}d\omega \rightarrow \int_{-1.5\pi}^{1.5\pi}\frac{1}{2\pi}Y(\omega)e^{j\omega t}d\omega \\ &amp;\rightarrow \int_{-1.5\pi}^{1.5\pi}\frac{1}{2\pi}(\pi^2a_0 -0.5a_0|\omega|)e^{j\omega t}\delta(\omega)d\omega = \frac{1}{2\pi}\pi^2 a_0 = \frac{1}{2\pi}\pi^2 \frac{2}{\pi} = 1 \end{align}</span></p> <p>I assume that it should have been periodic but it's not. So where did my solution go wrong?</p> https://dsp.stackexchange.com/q/71799 1 Difference between Analog IQ sampling and creating IQ digitally malik12 https://dsp.stackexchange.com/users/47019 2020-12-04T03:30:24Z 2020-12-05T17:45:53Z <p>In the context of wideband receiver design, what are the advantages and disadvantages of Analog IQ sampling vs creating IQ digitally (with Hilbert transform)?</p> <p><a href="https://i.stack.imgur.com/vuX17.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vuX17.png" alt="Block Diagram For IQ conversion" /></a></p> <p>Why do we use different ADCs to create independent IQ channels when we can use Hilbert Transform to create the Q channel and use only one ADC?</p> https://dsp.stackexchange.com/q/71446 0 Applying Circular Cross Correlation in MATLAB Noha https://dsp.stackexchange.com/users/46733 2020-11-14T18:16:25Z 2020-12-05T14:55:35Z <p>I have searched Google for circular cross correlation using Matlab, and I have found it only for one dimensional signals.</p> <p>Could you please help me implementing circular cross correlation between two images using MATLAB?</p> https://dsp.stackexchange.com/q/71233 0 Scipy fourier transform zero frequency spike (from DC offset) - de-meaning and hanning window have no effect CBurton https://dsp.stackexchange.com/users/53963 2020-11-04T01:48:34Z 2020-12-05T06:01:55Z <p>I am trying to plot the FFT of essentially a random signal that has a non-zero mean shown below. <a href="https://i.stack.imgur.com/VLmkd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VLmkd.png" alt="enter image description here" /></a></p> <p>The FFT of the signal is peaked over the zero frequency which usually indicates a DC offset. Although I have already demeaned and applied a hanning window to the data. <a href="https://i.stack.imgur.com/uo7yY.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/uo7yY.png" alt="enter image description here" /></a></p> <p>I am not sure what I am doing wrong here. I have also tried plotting from <code>[1:]</code> to ignore the zero frequency and applying a highpass filter which have had no effect. My code is below.</p> <pre><code># a = signal.detrend(hhe_trim.data, type='constant') a = hhe_trim.data.astype(np.float64) a -= np.mean(a) win = signal.hann(174001) dt = 0.01 n = 174001 X = fftpack.fft(a*win, n=n) freqs = fftpack.fftfreq(len(a), dt) plt.plot(freqs, np.abs(X)) # plt.yscale(&quot;log&quot;) plt.show() </code></pre> <p>My data has 174 001 samples and a sampling rate of 100Hz. Any help would be appreciated!</p> https://dsp.stackexchange.com/q/71225 0 Fourier transform of a signal and its autocovariance function miNiON https://dsp.stackexchange.com/users/53957 2020-11-03T19:18:17Z 2020-12-04T22:00:45Z <p>While I do know the difference between the two, in theory, I am not very sure about why we look at the Fourier transform of the auto-covariance function. What extra information does it give us over and above what we can already get by taking the Fourier transform of the original time-series? Also, when is one advantageous over the other?</p> https://dsp.stackexchange.com/q/70945 1 Seeking advice on how to denoise a video from poor CCTV lighting James Bond https://dsp.stackexchange.com/users/53777 2020-10-20T04:25:52Z 2020-12-05T18:34:21Z <p>I have grainy CCTV footage that will need some amount of clean up. I request for ideas on the best way to clean out the noise. I am attaching a frame extracted from the video here for hints on the specific noise cleaning I will need. Just for context, the guy in the image robbed and brutalized a vulnerable female a couple of days back. The guy wore a COVID mask thorough out the ordeal. In the brief spell when he put the mask off, he was in a region where lighting was too poor. Hence the image that would give us a clean shot is way too grainy.<br /> <a href="https://i.stack.imgur.com/uQUco.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/uQUco.jpg" alt="Blurry Image - No mask-Needs cleaning" /></a></p> <p><a href="https://i.stack.imgur.com/ikd3t.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ikd3t.jpg" alt="Better Image, but has Mask. Image only included for context" /></a></p> https://dsp.stackexchange.com/q/68923 0 Automatic detection of noise-only segments in audio clstaudt https://dsp.stackexchange.com/users/51356 2020-07-08T13:03:25Z 2020-12-05T16:04:05Z <p>This is my first question for this community. My connection to DSP comes via machine learning/deep learning, and I am working in the Python ecosystem.</p> <p>As a preprocessing step to audio classification, I am looking for a simple method to reduce noise.</p> <p>Promising noise reduction methods such as <a href="https://github.com/timsainb/noisereduce" rel="nofollow noreferrer">1</a> expect a noise-only sample as input, then are able to subtract noise. (The approach is also described in an answer of <a href="https://dsp.stackexchange.com/questions/3152/how-to-de-noise-raw-sound-data/3156?newreg=a0b2c4d93f6f41a19c35665cf73f88b1">2</a>)</p> <p>Getting a noise sample manually is doable for denoising a few recordings. However, it does not scale to processing thousands of recordings with different noise types and volumes.</p> <p>Can you recommend a method for automatically obtaining a noise sample from every recording? Alternatively, denoising methods that do not require a noise sample as input?</p> https://dsp.stackexchange.com/q/64489 1 Phase difference calculation for non divisible sample rate to frequency Slav https://dsp.stackexchange.com/users/48092 2020-03-10T01:01:23Z 2020-12-05T14:02:00Z <p>I am learning DSP and I am trying to simulate a simple phase difference calculator between two sinusoidal signals using GNU radio.</p> <p>My flowchart looks like this: <a href="https://i.stack.imgur.com/9nAet.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9nAet.png" alt="GNU radio flowchart"></a> As can be seen on the chart, one of the signals is using a delay block (controlled by the "delay sig" range GUI).</p> <p>Other interesting points are:</p> <ol> <li>fft_width variable: Calculated by an expression - int(freq/20)</li> <li>freq variable: Controlled by a GUI range with steps of 1.2KHz. Min 1.2KHz, Max 9.6KHz</li> <li>The skip head and Keep M in N blocks - used together to extract only the FFT bin in interest. To do so the skip head calculates the first N blocks to be skipped via this expression: int((samp_rate/fft_width))+2 . Idea taken from this video: <a href="https://youtu.be/GJKbD--MsLM?t=326" rel="nofollow noreferrer">https://youtu.be/GJKbD--MsLM?t=326</a></li> </ol> <p><strong>The problem:</strong></p> <p>This flowchart works when the samp_rate and freq are divisible - say samp_rate=10k and freq = 1k. However, for more of a real world scenario I have chosen variables that have lower ratio and are not divisible. In particular: samp_rate=11k and freq=1.2k. As a result of this the phase calculation fluctuates between 180 degree difference - for example 3.42 and 3.42-pi.</p> <p><strong>The question:</strong></p> <p>How do I make this flowchart work when the samp_rate and freq are not divisible? Furthermore how do I make it work for samp_rate of 11k, but different frequencies (chosen by the freq range GUI)?</p> <p><strong>What I tried:</strong></p> <p>Not much unfortunately, as I cannot find much information about this problem. That said, I read somewhere that clock synchronization via a PLL or Clock Recovery MM might help, but I do not know how to apply the relevant GNU radio blocks to this flowchart. Furthermore, if PLL is used would it not change the phase difference between the signals when trying to synchronize them?</p> <p>Thank you for your time!</p> <p><strong>EDIT:</strong> I tried putting a PLL ref output block between the throttle and FFT blocks: <a href="https://i.stack.imgur.com/h1vpT.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/h1vpT.png" alt="PLL ref out block flowchart"></a></p> <p>For the parameters I used:</p> <p>loop bandwidth: pi/200 (documentation states it should be either that or 2*pi/100)</p> <p>min_freq &amp; max_freq: (2*pi*1.1e3)/samp_rate (documentation states it needs to be in radians per sample)</p> <p>My goal was to try to make it work for 1.2k frequency, but unfortunately I still face the same problems. How can I fix it? </p> https://dsp.stackexchange.com/q/50640 3 How to calculate the power of a discrete signal? / Clarification on PSD estimates Hemanti https://dsp.stackexchange.com/users/36794 2018-07-18T09:31:17Z 2020-12-05T11:05:05Z <p>I want to calculate the <strong>channel power $P_\mathrm{x}$</strong> of a given <strong>discrete and complex signal $x[n]$</strong> (with a length of <em>N</em>) in a given <strong>bandwidth $B$</strong>. </p> <p>I'm aware, that I could probably apply a sharp bandpass filter with bandwidth $B$ on $x[n]$ and calculate the average power in the time domain. However, I think, it might be easier to do my calculation on the DFT $X[k]$ of my signal, where I just look at those frequency bins within $B$. Here are the different approaches, that I've read about so far, to calculate the power of a signal:</p> <ol> <li>Calculate the average power in the time domain by $$P_\mathrm{x} = \dfrac{1}{N}\sum_{n=1}^{N}|x[n]|^2$$</li> <li>Use Parseval's theorem to calculate power in frequency domain by $$P_\mathrm{x} = \dfrac{1}{N^2}\sum_{k=1}^{N}|X[k]|^2$$</li> <li>Sum the power spectrum (modified periodogram?) according to <a href="https://holometer.fnal.gov/GH_FFT.pdf" rel="nofollow noreferrer">Heinzel et al., p. 15</a> by $$P_\mathrm{x} = \sum_{k=1}^{N} \dfrac{|X[k]|^2}{S_1^2}$$ with $$S_1 = \sum_{j=1}^{N} w[j]$$ where <em>w[j]</em> is the <em>j</em>'th DFT window coefficient.</li> <li>Estimate the PSD according to <a href="https://holometer.fnal.gov/GH_FFT.pdf" rel="nofollow noreferrer">Heinzel et al., p. 16</a>, sum the result and multiply by the DFT frequency resolution $f_{res}$ by $$P_\mathrm{x} = \sum_{k=1}^{N} \dfrac{|X[k]|^2}{S_2 \cdot f_s} \cdot f_{res}$$ where $f_s$ is the sampling frequency, $$f_{res} = f_s / N$$ (for an N-point DFT) and $$S_2 = \sum_{j=1}^{N} w[j]^2$$ where $w[j]$ is the $j$'th DFT window coefficient.</li> </ol> <p>All of those approaches give the same result, as long as I use a rectangular window on the signal before applying the DFT, which means $S_1 = S_2 = N$. Unfortunately, as soon as I use a different window where $S_1 \neq S_2$, my results from 1) and 4) are still correct, while my results from 2) and 3) are off. </p> <p>I understand, that 2) and 3) are mathematically the same for a rectangular window where $S_1 = N$, so my guess is, I have to scale 2) by $S_1$, as well, in case I use a non-rectangular window. However, I don't really understand why 3) is incorrect as it is supposed to compute the power spectrum (before taking the sum). Perhaps, I don't understand the definition of a "power spectrum" yet, but why doesn't the sum give me the total signal power? </p> <p>Also, while I think, that I understand scaling by $S_1$ in 3), I don't understand scaling with $S_2$ in 4). Yet, 4) is correct and 3) isn't (I guess, 3) is only coincidentally correct for a rectangular window, since then it is mathematically the same as 4)). So how do I correctly interpret the power spectrum (and its sum) used in 3)? I've read, that method 3) is actually called "periodogram", which can be used to estimate the PSD. However, how can this give a PSD? I'm nowhere dividing by a frequency (which would give me the unit of a PSD, which is $V^2/Hz$), and it's quite different from the PSD calculation used in 4). I'm really confused here. Can anyone clarify?</p> <p>I've created a small Matlab script to illustrate those concepts and help you understand my question better.</p> <pre><code>%% Create signal N = 4000; % length of signal fs = 4000; % sampling freq = 4 kHz f1 = 1000; % signal freq = 1 kHz ts = 1/fs; fres = fs/N; % frequency resolution of N-point DFT x = zeros(N,1); for n = 0:N-1 x(n+1) = 10 * (cos(2*pi*f1*n*ts) + 1j * sin(2*pi*f1*n*ts)); end x_mag = abs(x); %% Window the signal and comoute the window sums for scaling window = ones(N,1); % window = hanning(N); % window = flattopwin(N,'periodic'); S1 = sum(window); S2 = sum(window.^2); x_win = x.*window; %% Transform the signal to frequency domain X = fft(x_win,N); X_mag = abs(X); %% Plot signal representations in time and frequency domain figure; subplot(2,1,1); plot(real(x)); hold on; plot(imag(x)); hold off; subplot(2,1,2); plot(X_mag); %% Calculate power with built-in Matlab function as a reference power_matlab_time_domain = bandpower(x) %% 1) Calculate power by average of instantaneous power in time domain power_time_domain = 1/N * sum(x_mag.^2) %% 2) Calculate power by parseval theorem power_parseval_freq_domain = 1/N^2 * sum(X_mag.^2) %% 3) Calculate power from power spectrum power_ps_freq_domain = sum(X_mag.^2/S1^2) %% 4) Calculate power from power spectral density power_psd_freq_domain = sum(X_mag.^2/(S2*fs)) * fres </code></pre> <p>In the end, I'd like to sum only over a range of the discrete frequencies to obtain the channel power of a frequency modulated signal, using either approach 3) or 4). Is this a valid approach?</p> https://dsp.stackexchange.com/q/49310 0 Speech Processing applications: stereo data for features Rachid Riad https://dsp.stackexchange.com/users/32989 2018-05-18T21:22:44Z 2020-12-04T23:07:00Z <p>I am working on speech databases that have a stereo format. I want to extract spectral information (Mel-filterbanks, MFCC, LPCC) and also some other prosody features like the fundamental Frequency F0. </p> <p>Is there a standard way to handle the computations of speech features for Stereo data?</p> <p>This is for speech recognition but also spotting some irregular speech audio events, so it is different from <a href="https://dsp.stackexchange.com/questions/28162/calculating-spectral-features-on-stereo-audio-data-centroid-spread-kurtosis-e">MIR</a>. </p> <p>The maximum amplitude difference between the two channels is 7% and the mean is 0.3%. Does not tell much about the spectral features, will investigate the difference in the frequency domain now.</p> https://dsp.stackexchange.com/q/47947 0 Distinguish between sinusoidal oscillations and rythmic pulses Marouan https://dsp.stackexchange.com/users/34544 2018-03-19T11:51:52Z 2020-12-04T20:01:40Z <p>I want to distinguish between a sinusoidal oscillations and rythmic pulses. Which method can i use to do that?</p> <p>I want to implement a detector that can distinguish between this two types of signals. </p> <p><a href="https://i.stack.imgur.com/PRnmD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PRnmD.png" alt="enter image description here"></a></p> <p><a href="https://i.stack.imgur.com/ttpOP.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ttpOP.png" alt="enter image description here"></a></p> <p>i have calculated the fast fourier transform of this signals. however to determine if it is a rhythmic pulses or sinusoidal oscillations, i have to fixe a threshold manually. It seems not good.</p> https://dsp.stackexchange.com/q/46513 2 How to Combine 8 N/8 FFT's into one N FFT Karl Haebler https://dsp.stackexchange.com/users/33319 2018-01-18T15:43:01Z 2020-12-04T21:01:40Z <p>I need to make in FPGA (using Verilog) an FFT. Input data is N=8192 points at 1 GSPS. However, the FPGA operates at 125 MHz, therefore the data is split into 8 channels (each one at 125 MHz). This splitting of data and computing the N/8 FFT is not problematic for me, it is already done. </p> <p>What I don't understand is how to combine the outputs of the N/8 FFTs to create one N FFT. I have created a schematic showing the flow of data, where blue blocks represent what is done and green blocks represent what I don't understand. </p> <p>I understand generally the Cooley-Tukey FFT algorithm and Butterfly diagrams as they relate to 8 point or 16 point data, but I don't understand how these can be expanded to a 8192 input sequence. </p> <p>Any help regarding the theory, math, or FPGA implementation behind how the green blocks are implemented is greatly appreciated! </p> <p><a href="https://i.stack.imgur.com/LfTk7.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LfTk7.jpg" alt="Signal Flow Schematic"></a></p> https://dsp.stackexchange.com/q/37618 3 Conceptual problem : numberof symbols for nonuniform distribution using entropy : how to determine block size? SKM https://dsp.stackexchange.com/users/750 2017-02-14T18:39:15Z 2020-12-05T02:04:30Z <p>A sequence of data of length $N$ can be subdivided into equal sixed blocks each of length (size) $l$. For each block, $w$, we can calculate the entropy known as the block entropy. Considering, entropy calculation by varying the size of the blocks ie., the window size is different. The entropy of the entire sequence is $H_N = 1.99$. I then create subwords using different sized windows : <code>Window = [1,2,4,6,8,10,12]</code> This gives Shannon's entropy for each sub-word (block) as</p> <p>$H_w = \{H_1 = 1.99119952705784, H_2 = 3.20880064685926, H_4= 4.97725978596446, H_6= 6.10391179247315, H_8= 6.40200948312778,H_{10}=6.44186057426463, H_{12} = 6.45326152085405\}$ respectively.<br> Out of these entropy values for each block the maximum entropy value is, <code>maxEntropy = 6.4638</code> for block of size <code>blksze = 12</code>. </p> <p><strong>My confusion and questions are</strong></p> <ol> <li><p>Based on these values of block entropy, is it possible to determine what is the optimal length $l$ of the sequence ? Please correct me where wrong.</p></li> <li><p>Can entropy of the whole sequence be less than the block size? For equiprobable occurrece of symbols, $H_N \le log2(4)= 2$ this is the theoretical value. But, when the block size 12 I got entropy for $H_{w} = H_{12} = 6.45326152085405$ which is greater than $H_N = 1.99$. I don't know if this result is correct and what I should expect theoretically. </p></li> <li><p>Is my implementation correct? How to infer the plots?</p></li> </ol> <p><strong>Details:</strong> </p> <p>Consider a source that emits codewords consisiting of adjacent symbols of length $l$. The sequence length is $N &gt; l$. If the source is binary ($n=2$ symbols), then I have $N(w) = n^l$ possible words of length $l$. Each word is associated with a probability and I need to estimate the probability numerically since it is unknown. Let, $n=4$ and the alphabet set is $A = {1,2,3,4}$. Let the symbol sequence be $b =[2, 3, 4, 1, 2, 2,1, 3,2, 1, 2, 4,\ldots]'$ and $N$ denotes the number of elements in the sequence. </p> <p>A block of size $l$ is defined as a segment of $l$ consecutive elements of the symbol sequence or in other words a concatenation of several symbols. If $w$ is a symbol sequence of size $l$, then $N(w)$ denotes the number of blocks of $b$ which are identical to $w$.</p> <p>$p(w)$ is the probability that a block from $b$ is identical to a symbol sequence $w$ of size $l$ i.e. $$p(w) = \frac{N(w)}{n-|w|+1}$$</p> <p>Let, a symbol sequence of length $N = 10$ be $b = \{1,3,4,1,2,1,1,3,4,2\}$, here the alphabet set is $\mathcal{A} = \{1,2,3,4\}$ and the number of symbols $|\mathcal{A}| = n = 4$. Each symbol can be represented by 4 bits. </p> <p>Below is an implementation to show entropy calculation for for a data sequence <code>b = randi([1 n],1,N)</code>; where <code>N= 100</code> length of the sequence, $\mathcal{A} = \{1,2,3,4\}$, $|\mathcal{A}|$= n = 4. The entropy of the series is <code>H_N = 1.9823</code> for <code>N=100</code></p> <p><a href="https://i.stack.imgur.com/wZFnx.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/wZFnx.jpg" alt="plot"></a> Plot on left side (a) shows the effect of block length on Shannon's block entropy. The maximum value of block entropy is reached at block length = 12 and corresponding value is 6.4638 which is greater than $log2(4)$.</p> <p>Plot on right side (b) shows the effect of block length on Shannon'e entropy rate. From this plot, the <code>maxEntropyRate = 1.9912</code> for <code>blksze2 = 1</code> which means considering all the data points, <code>N</code>. What do these mean and which one to select?</p> <p>What do I infer from these values and how can I apply maximum entropy principle?</p> <pre><code>clear all N= 100; %total length of the sequence n=4; % number of unique symbols (alphabets) b = randi([1 n],1,N); % creating the sequence p_1 = sum(b==1)/length(b); %calculating probability p_2 = sum(b==2)/length(b); p_3 = sum(b==3)/length(b); p_4 = sum(b==4)/length(b); p = [p_1,p_2,p_3,p_4]; H_N = -sum(p(p&gt;0).*log2(p(p&gt;0))) % entropyfor the whole sequence for N =100 Window = [1,2,4,6,8,10,12]; %this is the array of different block size Base=2; ShEntropy = zeros(1,length(Window)); for NWindows=1:length(Window) blk_size = Window(NWindows); ShEntropy(NWindows) =BlockEntropy(Series,blk_size,Base );% this is H_w store_entropy(NWindows,:) = [ShEntropy(NWindows),blk_size] ; EntropyRate(NWindows) = ShEntropy(NWindows)/blk_size ; store_EntropyRate(NWindows,:) = [EntropyRate(NWindows),blk_size] ; end temp1 = sortrows(store_entropy,1); maxEntropy = temp1(end,1) blksze1 = temp1(end,2) figure(1) subplot(1,2,1) plot(Window(1:end), ShEntropy(1:end)); subplot(1,2,2) temp2 = sortrows(store_EntropyRate,1); maxEntropyRate = temp2(end,1) blksze2 = temp2(end,2) plot(Window(1:end), EntropyRate(1:end)); LargestEntropy_Theory =log2(n) function ShEntropy =BlockEntropy(Series,Window,Base ) n=length(Series); D=zeros(n,Window); % Pre Allocate Memory for k=1:Window; D(:,k)=circshift(Series,1-k);end D=D(1:end-Window+1,:); % Truncate Last Part % % Repace each Row with a "SYMBOL" % in this Case a Number ............... [K l]=size(D); for k=1:K; MyData(k)=polyval(D(k,:),Base);end clear D UniqueMyData = unique(MyData); nUniqueMyData = length(UniqueMyData); FreqMyData = zeros(nUniqueMyData,1); % Initialization for i = 1:nUniqueMyData FreqMyData(i) = .... sum(double(MyData == UniqueMyData(i))); end % Calculate sample class probabilities P = FreqMyData / sum(FreqMyData); % Calculate entropy in base 2 ShEntropy= -sum(P .* log2(P)); % entropy of each block, H_n end </code></pre> https://dsp.stackexchange.com/q/33895 1 Motion detection one threshold over dataset Maystro https://dsp.stackexchange.com/users/4442 2016-08-25T14:49:24Z 2020-12-04T19:27:46Z <p>We're working on a project where we have to detect the moments where motions happen in a medical scene. I have a data set of 20 videos that are closely resemble (Same camera &amp; configuration used, same shooting/environment conditions etc...). Here is what I did for each video:</p> <ul> <li>Compute the <code>optical flow</code> (Farneback) between 2 consecutive images (<code>t-1, t</code>)</li> <li>For each couple of images (<code>t-1, t</code>), compute the <code>Norm1</code> of the displacement vector of all the pixels and then get the mean of these values. Then, I represent each couple of images by the mean of the <code>Norm1</code> of <code>optical flow</code> results.</li> <li><p>By doing so, I could draw a signal that represents the variation of these values as you can see below (Example video <strong>#1</strong>) <a href="https://i.stack.imgur.com/SkQ0T.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/SkQ0T.png" alt="enter image description here"></a></p></li> <li><p>We zoom on the first 100 seconds of this signal to see the following: <a href="https://i.stack.imgur.com/sKCZn.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sKCZn.png" alt="enter image description here"></a></p></li> </ul> <p>To be able to detect the motions in video <strong>#1</strong>, we can just use as threshold the value <code>0.2</code> so we can differentiate between motion and not. But to be able to handle similar cases, we have to set a threshold at application/project level not on a video level: the threshold should be applicable over all the videos and for any new video of the same type. Let's take a look over the same kinda signal for video <strong>#2</strong>:</p> <p><a href="https://i.stack.imgur.com/39DhM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/39DhM.png" alt="enter image description here"></a></p> <p>Obviously, the threshold in this case is <code>0.25</code> which is <em>different</em> from <code>0.2</code>, the one we used for video <strong>#1</strong> . To have a robust solution, we shall have one threshold per application so my question is about how can we use these thresholds (choosed manually) to have a global threshold for this application? </p> <p>P.S: We already tried to use the mean of all these thresholds but it didn't work.. It failed to detect some important motions. We're asking such a question here because we just want to know if there is a fundamental principle to follow in such cases.</p> https://dsp.stackexchange.com/q/32010 3 Why does signaling overhead for time synchronization scale up with the number of transmitter nodes in a multiple access system? vaz https://dsp.stackexchange.com/users/17530 2016-07-07T13:43:58Z 2020-12-05T17:02:35Z <p>I was recently reading about random multiple access methods without time synchronisation (of the pure Aloha type). In <a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6847724" rel="nofollow">this paper</a> it is stated that, </p> <blockquote> <p>The need for transmitter synchronization is a major drawback for large networks as the signaling overhead scales up with the number of transmitters independently from their traffic activity factor.</p> </blockquote> <p>I understand that oscillators tend to drift in time and present instabilities depending on the technology, operating conditions, etc., and therefore a reference signal must be given by the central node with a periodicity that depends on the desired accuracy and the transmitter's clock drift.</p> <p>I would like to know why there is also a dependency on the network size.</p> <p>EDIT: The only scenario I can think of where signalling scales up with the network size, is a distributed network (but in that context, we usually talk about logical clocks and not about hardware clocks/oscillators). Note also that the network described in the paper has a star topology, so a periodic broadcast message from the central node would do, independently on the number of users in the network.</p> https://dsp.stackexchange.com/q/29882 3 Aquila DSP C++ Library - Wave file FFT analog frequency off by factor of 4? teague https://dsp.stackexchange.com/users/20371 2016-04-03T18:10:19Z 2020-12-05T12:03:20Z <p>I'm working with the Aquila C++ DSP library. I'm computing the FFT of a wave file (16 bit depth, single channel, 44100 sample rate). I am using a window size of 16384 to calculate the FFT spectrum.</p> <p>I'm having an issue converting the the digital frequency (0/N, 1/N, ... N/N) to the corresponding analog frequency. When I apply the sample rate multiplier S,</p> <p>f = S*i/N; // Convert from digital frequency to analog frequency</p> <p>I get analog frequencies that are 4 times greater than what I expect. </p> <p>For example, I read in a pianos A1 note. I expect this to be ~55 Hz. Instead I'm getting ~220 Hz. Refer to the photo below.</p> <p><a href="https://i.stack.imgur.com/I1NNB.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/I1NNB.png" alt="FFT with analog frequncies 4x larger than expected"></a></p> <p>Now I'm first wondering if I'm scaling my the wrong number. However, I'm pretty sure it's correct. So now I'm curious if somehow the time domain data I'm reading is compressed by a factor of 4, such that the frequencies appear to be 4 times greater. Does anyone know if there is a common .wav file 'gotch-ya' when reading from them?</p> <p>I've posted the relevant part of my code if anyone is interested.</p> <pre><code>/* sample window */ int window_size = 16384; /* Calculate the FFT */ std::shared_ptr&lt;Aquila::Fft&gt; p_fft_interface = Aquila::FftFactory::getFft(window_size); // This returns a shared pointer to an FFT calculation object. auto spectrum = p_fft_interface-&gt;fft(wave_object.toArray()); QVector&lt;double&gt; x(window_size); QVector&lt;double&gt; y(window_size); /* Prepare to plot &amp; convert to analog frequency */ double max_value = 0; for(int i = 0; i &lt; window_size; i++) { x[i] = i*(sample_freq/window_size); y[i] = abs(spectrum[i]); if(abs(spectrum[i]) &gt; max_value) { max_value = abs(spectrum[i]); } } </code></pre> https://dsp.stackexchange.com/q/26039 0 How do you calculate RMSE in degrees for a DOA estimator system with multiple incoming signals? Milliarde https://dsp.stackexchange.com/users/17525 2015-09-24T18:21:59Z 2020-12-05T08:06:05Z <p>Let's say you have a system with 1 transmitter and 5 receivers. We'll use the <a href="https://en.wikipedia.org/wiki/Multiple_signal_classification" rel="nofollow">MUSIC</a> algorithm to determine DOA of incoming signals.</p> <p>If we have 1 signal (at 0° for example), it's easy to calculate RMSE vs SNR. Simply take the peak of the MUSIC spectrum (an angle) and find the difference between the actual target angle.</p> <p>However, what if we have 2 signals? One at 0° and a second at 10° for example. You can no longer look at the MUSIC spectrum and simply pick the 2 greatest points, since the absolute greatest points may be at 0.0° and 0.1°, even if there's a clear (lower) peak at 10°.</p> <p>What would be the/an appropriate way to measure the error when multiple signals are present? Or perhaps another metric (besides RMSE) is needed, such as probability of observing 2 peaks, etc.</p> https://dsp.stackexchange.com/q/24750 1 What Is the Intuition of Convolution in The Signal Processing World [closed] Madhumitha https://dsp.stackexchange.com/users/16329 2015-07-17T14:01:09Z 2020-12-05T14:55:39Z <p>It is known that an LTI system is defined by its Impulse Response and the Convolution Operator. </p> <p>Could some put some intuition behind?</p> <p>Thank You.</p> https://dsp.stackexchange.com/q/17459 1 Upsample / Downsample a Signal from 1920.93Hz to 1920Hz [duplicate] salfasano https://dsp.stackexchange.com/users/4334 2014-07-24T18:31:48Z 2020-12-05T14:55:31Z <p>I've just learned that the A/D converter I am using is not sampling at my desired sampling rate. I request 20 seconds of data at 1920Hz and I receive 38400 points of data that were actually sampled at 1920.93Hz. </p> <p>So for example, if I sample a 30Hz sine wave and chop the signal up into 300 sections, the phase of the sine wave in section 1 differs from the sine wave in section 300. If my sampling rate was 1920Hz, as expected, the phase of each section would line up perfectly.</p> <p>Now, to correct for this, is there any way of processing the signal such that it appears as if it was sampled at the correct sampling rate through interpolation or other means?</p>