how to generate an abitrary length colored noise when the PSD is know !
20 views (last 30 days)
Show older comments
I want to generate colored noise samples of arbitrary length, I have the PSD of the noise in a vector of 512 elements !
3 Comments
Bjorn Gustavsson
on 7 Oct 2014
Presumably your signal is then bandlimited to frequencies corresponing to your 512-samples wide PSD, meaning that the PSD at higer frequencies is zero - so you should be able to simply pad the PSD with zeros up to the desired length.
Answers (2)
Image Analyst
on 20 Aug 2014
You need to use inverse transform sampling. By doing that you can get any distribution you want from a uniform distribution. See http://en.wikipedia.org/wiki/Inverse_transform_sampling
I've also attached a demo where I pull random values from a Rayleigh distribution. Feel free to modify it.
You might also be interested in this: http://www.mathworks.com/matlabcentral/fileexchange/7309-randraw
4 Comments
Bjorn Gustavsson
on 7 Oct 2014
That would lead to a random-number sequence with a given probability distribution function, but the OP asked for a given power spectral density, as far as I understood the question.
Youssef Khmou
on 21 Aug 2014
You proceed using Inverse Fourier transform , here is how you can start , let us consider zero mean random variable of length 200 :
x=randn(200,1);
f=fft(x); % Discret Fourier Transform with same length
p=f.*conj(f); % Power
figure; plot(p)
C=real(ifft(f)); % inverse transform of the power
figure; plot(C,x) %
the original signal or the ones resulting from inverse transformation are similar, so suppose you have vector of Power spectrum, you ifft with the desired length N :
X=real(ifft(x,N));
0 Comments
See Also
Categories
Find more on Detection in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!