Hot answers tagged

3

When generating the sine wave, the code uses a sampling frequency to establish discrete points in the time domain. It is not continuous. This means the wave is broken up into bins that are exactly 1/fs in size/width. So if you want a true integral of the wave, you have to take the average density of all the points in a bin by dividing by the sampling ...


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, ...


3

Well, in your example, the channel isn't exactly sparse. It has been shown that $\ell_0$ minimization can recover any $K$-sparse vector $x$ from observations $\Phi x$ as long as $2K < {\rm spark}(\Phi) \leq M+1$, when $\Phi$ is $M \times N$ (so that $x$ is $N\times 1$), i.e., $K<M/2$ more or less. This is a necessary condition which means that if $K$ ...


2

You tell the phase demodulator that the signal has a maximum phase deviation of $\pi/2$, but then you actually use a signal with a phase deviation of $5\pi/2$ (due to the amplitude of the message signal). This doesn't make sense. Note that even the most ideal phase demodulator cannot distinguish between $\cos(2\pi f_ct+\phi(t))$ and $\cos(2\pi f_ct + \phi(t)...


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 ...


1

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 < ...


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 ...


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 ...


1

Since you have two poles, you have to decompose $0.3 <|z|<1$ into two ROCs, $R_A$ and $R_B$ such that: $$R_A \cap R_B \subseteq \{0.3 <|z| < 1\}$$ Your poles are $z=-0.3$, $z=-1$, so you have two choices for each ROC: $|z| > 1$ $|z| < 1$ and $|z| > 0.3$ $|z| < 0.3$ The requested ROC is given by $R_A \cap R_B = \{|z| < 1\}\cap\{...


1

When you have an $H(z)$ (a transfer function), its inverse Z-transform is the impulse response $h[n]$. iztrans is a symbolic function to compute any (causal) inverse Z-transform, either it is related to an impulse response or not. impz is a non-symbolic function to compute some samples of the impulse response of a digital filter. If I were you and I wanted ...


1

@A Q. To make your life easier, I suggest you stop using the cosd() command and only use MATLAB's cos() command. For your AM code, if variable dt1 is measured in seconds then your Fs sampling rate is 10,000 samples per second. But your carrier frequency fc1 is set to 500,000. If your fc1 = 500,000 is measured in Hz (cycles/second) then your fc1 value ...


Only top voted, non community-wiki answers of a minimum length are eligible