New answers tagged

0

My attempt: Consider the following diagram showing the beam with length L, sensors A and B on each side of the beam and an arbitrary position x representing the location of the discontinuity. First consider the case of a signal source emanating from x equally toward A and B, with zero loss in the beam. The overall distance of the beam itself is such that ...


1

MATLAB has built-in functions taking care of the steps you mention in 2. You can check out the pwelch function (here) which uses Welch's method for PSD estimation.(here) The choice of segment length, number, overlap and windowing function presents a trade-off between bias and variance.


0

In short, yes you can, somehow. It depends a lot on how you process images, and the nature or morphology of the images you analyze. First, it is well etabished that amplitude and phase spectra of natural images are often difficult to analyze (see classical textbooks). I would emphasize three classical issues: nature of the processing, of the images, of ...


0

If your sampling frequency is 5Hz (Which I don't think is!) and the signal contains a known frequency of 5Hz. So, the sampled signal will have aliasing for sure. You are correctly mapping your positive FFT spectrum from 0 to 2.5Hz, because digital frequency of sampled signal can only map from $[-f_s/2, f_s/2]$ which is $[-2.5hz, 2.5hz]$. The question is ...


0

Your FFT appears to be for a sampling frequency of 5 Hz. I estimate from your time domain data, if what we see there is a 5 Hz sinusoid, that your sampling frequency $F_s$ is actually closer to 500 Hz given by 1 cycle = 100 samples, so 100 samples/cycle * 5 cycles/sec = 500 samples/sec. Given the length of 250 samples with no further windowing, the ...


3

By default MATLAB uses linear interpolation when creating line plots, which means it simply draws a line from each point to each point, unless there are more points than pixels in which case each point or group of points within each pixel would represent each pixel shown. Compare the following to see this: This plots a line from x,y=1,2 to x,y= 5,7 plot([...


0

It would depend on the resolution you are looking for in the frequency /DFT. Sampling at 100HZ, one would get time domain samples every 10ms. For a decent DFT resolution you would be looking around 64 samples. Meaning 640ms, 140ms (14 samples) would be a good enough overlap in this scenario. So you could take the DFT of 64 samples, retain the last 14 time ...


0

1) Length of your window will determine the frequency resolution in each row. Since you mentioned you have sampled at 100Hz, if window length is 10, then each row will be having resolution of 100/10=10Hz. If you increase your window size to 20, then each row will have resolution of 100/20=5Hz. 2) MATLAB has spectrogram command to get the spectrogram as 2-D ...


1

If you want a strictly real result from an IFFT, then you have to force the input to be conjugate symmetric. That way, all the imaginary components will cancel out to (almost) zero (except for rounding “errors” or microscopic numerical noise).


1

For a real signal, the FFT is symmetric complex numbers in general. That is $X[((-k))_N] = X[((k))_N]$. When you did this c(round(n*1000/fs):end)=0 you have disturbed the symmetry and hence, the ifft of this new signal will no longer be real. See a simple example >> x=[1 3 5 6]; >> y=fft(x); >> y(1:2)=0; >> ifft(y) ans = -1....


2

The short answer is do not null out the "mirror frequencies" that are located above $f_s/2$ that match the frequencies you want to keep. If your FFT was generated from a real signal, then when you do the IFFT you will get the real signal back as long as you did not zero out those upper frequencies (as you did). The DFT (which the FFT computes) returns ...


1

The channel which you have created is having 4-Taps and all taps are one after the other, meaning roughly there are 4 multi-paths and they are very close to each other. How close depends on what is the Sub-Carrier Spacing you would have assumed. Anyway, the point is only 3 samples of Cyclic Prefix would be enough and even with 0 or 2 samples of CP will not ...


3

and how to avoid it? Address the NaN in your input data. Don't "fix", "paper over it" or "replace by 0". Find the root cause for the NaN, understand what's happening and take meaningful corrective action. NaN means your input data is bad. Doing anything with bad data is pointless since your output will be bad. Doing cosmetic adjustment just so the code ...


0

Your plot showing aliasing is applicable to complex signals. You can emulate this exactly if you use: y4_samples=10*e^(j*2*pi*f1*Tn)+10*e^(j2*pi*f2*Tn)+10*e^(j*2*pi*f3*Tn); Note that real signals such as $\cos(2\pi f_1 T_n)$ actually consist of two complex frequencies as given by Euler's identity: $$\cos(2\pi f_1 Tn) = \frac{e^{j2\pi f_1Tn} + e^{-j2\pi ...


0

I'm unsure why this happens Well, you know the formula of for convolution. Every single time, no matter what you do, you add to NaN, you get NaN. Same for multiplication. So, 499 "left and right" of each NaN, you'll get NaN. how to avoid it? This might sound stupid, but: don't have NaNs in your input, simple as that! Whether you want to replace the ...


0

I don't think it is flipped. I think you should try to find out which of the ECG-leads you are looking at (I, II, V1, etc.)


0

Firstly, because the speed can be positive and negative (meaning approaching to and going from sensor if target is moving), you need to shift your doppler indices from [0, N-1] to [-N/2,N/2 - 1] by simple subtraction by N. Then you just multiply scale [-N/2,N/2-1] by: lambda/(2*N*T_rpi) where: - lambda is wavelength for your FMCW radar (lambda = c/Fc, c - ...


0

I suspect that your problem is to do with having your speakers and microphone on different ALSA audio devices or subdevices. You need to find the available sound cards for recording and playback on your system. The following commands will tell you this information : aplay -l arecord -l You will need to define a default full duplex sound card using your ...


2

Your plot is correct. You are sampling three waves $f_1 = 10\textrm{Hz}, f_2 = 30\textrm{Hz}$, and $f_3 = 70\textrm{Hz}$, with a sample frequency of $F_s = 1.5\times70\textrm{Hz} = 105\textrm{Hz}$. This means that your Nyquist frequency is $F_N = F_s/2 = 52.5\textrm{Hz}$, and corresponds to the maximum value of your frequency axis. As such, the signals $...


0

I might have the ingredients to an answer here and here and here.


2

In the line Inverse_GShifted=real(ifft(GShifted)); I have changed to Inverse_GShifted=real(fftshift(ifft(GShifted))); This is because the ifft output is from $0 \le n \le N-1$, but your actual time output is symmetric about $n=0$. So what you have to do is to center it around $n=0$ by doing fftshift() command. It will give the output of $-N/2 \le n \le ...


0

There are 2 forms of the Basis Pursuit problem: $$\begin{align*} \text{The $ \lambda $ Form:} & \quad && \arg \min_{x} \frac{1}{2} {\left\| A x - b \right\|}_{2}^{2} + \lambda {\left\| x \right\|}_{1} \\ \text{The $ \epsilon$ Form:} && \quad & \arg \min_{x} {\left\| x \right\|}_{1} \\ & \text{subject to} && \frac{1}{2} {\...


1

For the 1-d case, I think that conv() is implemented in the direct domain while xcorr is implemented in the frequency domain. This indicates that conv will be faster for small kernels, while xcorr will be faster when inputs are equal size. I dont know if this still is the case, and if it extends to the 2-d case. Operations that allows for native single-...


1

For the Fourier transform (FT) of the Morlet wavelet, I also arrived at the same equation as that of @Electricman. Based on that equation, I sought a relationship between $f_b$ and the standard deviation of the Gaussian form of the FT. Is there any citable published literature (book or journal article) arriving at the following derivation? $$X(f)=\mathcal ...


1

The problem with your code is that you need to get the indexing and time gating right. Matlab represents the frequencies in the FFT vector somewhat out of order , i.e. from $[0,N-1]$ instead of $[-N/2+1,N/2]. Once you rotate them so that DC is in the center and grab the correct frequencies after convolution, this does indeed work. %% Create two signals n = ...


3

Let's assume you have 2 signals: vX and vY. So: clear(); numSamplesX = length(vX); numSamplesY = length(vY); numSamplesConv = numSamplesX + numSamplesY - 1; vTimeDomainConv = conv(vX, vY); vFrequencyDomainConv = ifft(fft(vX, numSamplesConv) .* fft(vY, numSamplesConv), 'symmetric'); max(abs(vTimeDomainConv - vFrequencyDomainConv)) %<! Should be < ...


0

Ok sorry, i will give you more details: in the picture there are the signals that I created as a result of the propagation of the gaussian signals I described above. Figure 4 and 5 are the xcorr and the GCC calculated adding an awgn to the signals. On the lower right you can see the different taus obtained with noisy signals and non-noisy signals: -tau_ab ...


3

Have you considered trying a constant jerk model as opposed to a constant acceleration model? Perhaps a higher order model would capture the acceleration better. See, for instance: K. Mehrotra and P. R. Mahapatra, "A jerk model for tracking highly maneuvering targets," in IEEE Transactions on Aerospace and Electronic Systems, vol. 33, no. 4, pp. 1094-1105, ...


1

This is inspired by the excellent answer by @Richard Lyons (which I upvoted) and the comment by @DSP Novice. It basically combines what they said. If the width of the 5000-amplitude pulse is always the same, then simply do as Richard Lyons suggested: it works fine. If the width varies, then the following scheme could be used: I imported your raw data and ...


1

Is the width of your 5000-amplitude pulse always the same? If so, then just discard your signal samples that occur after seven seconds. If the width of your 5000-amplitude pulse varies then try lowpass filtering (experimenting with different lowpass filter bandwidths) your signal to see if the filtered signal contains the information you desire. If the width ...


1

In sigp, you are measuring how much steps of Delta it takes to go from sig_nmax till your input signal at the point (sig_in) Suppose it gives you the value, 5.7 as shown in figure, you add 0.5 to it and round it to nearest integer, 6. Since the max value that integer can take is 7, you need to limit it to 7 in the next step. Last step qlevel(qindex) will ...


0

You must set the final size of your image. Take a look here.


1

sigp = (sig_in - sig_nmax)/Delta + 1/2; % convert into 1/2 to L+1/2 range qindex = round(sigp); % round to 1,2,3..... L levels qindex = min(qindex,L); % Eliminate L+1 as rare possibility q_out = q_level(qindex); % use index vector to generate output clear end sigp is a mid-tread uniform quantizer ...


0

I ran your code, there were some errors. f_spac variable is not used after it is filled inside the for-loop. What you can do is to define a variable f_delta=1000. This will make sure the 'f' variable is filled properly with spacing of 1000 and its multiples. N=8; r=1; f_d=1e3; M=4; m=0:M-1; fc=0; %% freq spacing for j=1:M f_spac(j)=(1+...


0

The answer to your direct question is no because the channel will not pass the frequencies where the signal is. To put in some practical sense, it will happen in the high frequency (HF = 3-30 MHz) regime where many factors affect whether or not certain frequencies propagate well. For example, a signal may propagate at a given frequency during the certain ...


0

If we focus on finite-duration impulse response filters and apply the MSE criterion to optimize the coefficients of the feedback and feedforward filters. The equalizer output can be expressed as: \begin{equation}\hat{I}_{k}=\sum_{j=-K_{1}}^{0} c_{j} v_{k-j}+\sum_{j=1}^{K_{2}} c_{j} \tilde{I}_{k-j}\end{equation} where $\hat{I}_{k}$ is an estimate of the $k$...


0

Yes you can shift its spectrum to fit into the band of $[1k, 5k]$ Hz. The following will do: $$y(t) = \cos(2\pi ~5000~ t) \cdot x(t)$$ A new band of will appear at $[11k, 15k]$ Hz, that must either be filtered out by you before adding to the channel, or the channel itself will do it for you.


2

The partial fraction form helps in calculating the z-transform inverse since we can get the inverse of each term in partial fraction by inspection and hence get the inverse of the whole transfer function. The factored form can directly give poles and zeros by equating the numerator and denominator to zero.


1

@Amelia. Hi. I tried to run your MATLAB code, but it contains several errors regarding vector lengths and produces error messages. But that's not the main issue here. The answer to your question is: If you compute the DFT of an N-point x(n) sequence you produce an N-point complex-valued xDFT(m) frequency-domain sequence. You can only reconstruct the original ...


0

At the risk of sounding stupid, I am going to give a fresh perspective (different from the link referenced above) to this problem. I will list my reasoning and finally give the code I tried. When the signal length is 1000, auto-correlation will have 1999 length. Hence FFT of PSD should have at least 1999 length. In my example I used 2000 for simplicity. I ...


Top 50 recent answers are included