function ry=pinknoise(n); % Random noise with pink (1/f) power spectrum with mean zero % and unit standard deviation. n is number of points. % Tom O'Haver, 2008 x=[1:n]; y=randn(size(x)); % Random normally-distributed white noise % Fourier filter fy=fft(y); % Compute Fourier transform of signal y % Compute filter shape lft1=[1:(length(fy)/2)+1]; lft2=[(length(fy)/2):length(fy)]; ffilter1=ones(size(lft1))./(sqrt(lft1)); ffilter2=ones(size(lft2))./(sqrt(lft2)); ffilter=[ffilter1,ffilter2]; if length(fy)>length(ffilter), ffilter=[ffilter ffilter(1)];,end ffy=fy.*ffilter(1:length(fy)); % Multiply filter by Fourier transform of signal ry=real(ifft(ffy)); % Inverse transform to recover filtered signal 'ry' ry=((ry-mean(ry))./std(ry)); % Normalize to unit standard deviation