4

It seems you are implementing a uniform partitioned convolution, which is not very hard to realize. You should stick to the signal flow of Fig 5.2 from Wefers p110 and the stream processing on p111. Partitioned convolution doesn't need windowing. A simple matlab code could be: NFFT = blockSize * 2; X_fdl = zeros(NFFT / 2 + 1, hBlocks); % input blocks ...


3

Multiplication in the frequency domain is equivalent to circular convolution in the time domain with a period of NFFT. If you don't zero pad them to at least length(x1)+length(x2)-1 samples, the IFFT result would be aliased in the time domain. That's why overlap-save method discards part of the result.


3

In step 5 it looks like you are implementing "overlap-save" not "overlap-add". In this case you DON'T zero pad the input, but do an FFT over two full frames of the input. Overlap add isn't all that complex but there is a lot of details in the buffering, indexing, handling the real values of DC & Nyquist, etc. I suggest standard ...


3

That depends on what you want to plot: The response of the continuous time system or the response of a sampled discrete time system, which will always depend on the choice of sample rate. Your system is not band-limited, so it can't be sampled without some amount of aliasing. Do I just evaluate s at iω If you just want to look at the approximate frequency ...


2

Let's say we have a signal and it's z transform $$x[n] \longleftrightarrow X(z)$$ and the convolution with itself $$y[n] = (x*x)[n] \longleftrightarrow Y(z)$$ Convolution in the time domain is multiplication in the frequency domain, so we have $$Y(z) = X^2(z)$$ The sum over each sequence is $$\sum_{-\infty}^{\infty}x[n] = X(z)_{z=1}$$ Hence we have $$\sum_{-\...


2

I was following you but I'm not sure where your last equation comes from. You want to use $Y(z)$ as I describe below. This is the kind of problem that makes sense only if you "see it" in my opinion. The trick is that $\sum_{n=-\infty}^{\infty}y[n]$ can be computed by evaluating the z-transform at $z=1$. Remember that the z-transform equation is: $$ ...


2

Either someone didn't stress enough that there are four basic flavors of the Fourier Transform, or they did introduce that for you but you've forgotten. For a sampled-time signal of infinite extent in time, you should use the DTFT (not to be confused with the discrete Fourier transform, of which the FFT is the fast version). The DTFT is defined as $$X(\omega)...


1

If you have the symbolic math toolbox, then you should be able to follow the instructions in Chapter 3 here. I tried to do this for your example: syms t tau a = 10; omega = 2*pi*100; f = a*exp(-a^2/(4.0*t))/(2.0*sqrt(pi)*t^(3.0/2.0)); g = exp(1i*omega*t); z = int(subs(f,tau)*subs(g,t-tau),tau,-inf,inf); z = simplify(z); figure(1) ezplot(f) but the ...


1

I don't think it is possible to make the CPU load remain constant for non-uniformly partitioned convolution, but a more favorable timing-dependency can be achieved. Section 6.5 from Wefers demonstrates an optimization method to find the optimal filter partition. It is based on the minimum-load partitions and introduces some restrictions to smooth the CPU ...


1

As you corrupt with Poisson noise, perhaps Richardson Lucy is relevant to you? https://en.m.wikipedia.org/wiki/Richardson–Lucy_deconvolution


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