MATLAB Answers

Power Spectrum of Colored Noises

24 views (last 30 days)
Nycholas Maia
Nycholas Maia on 17 Jan 2018
Answered: Greg Dionne on 2 Feb 2018
Hi, I would like to know how to "normalize" the power spectrum of FFT so that the length of the colored noise doesn't affect the amount of power ploted.
Example below: When I change the value of 'duration', the final plot will show a different amount of energy. I understand that this is a cumulative sum, but I would like to get a normalized version of the plot for all signals.
How can I do that?
% Sample Rate:
Fs = 48000;
% Duration (seconds):
duration = 10;
% Signal Length:
L = Fs * duration;
%%Generate Colored Noise:
generator = dsp.ColoredNoise(0, L);
% Get the white noise signal:
white_noise = generator();
%%Normalize the signal between [-1 +1]:
white_noise = white_noise/max(abs(white_noise));
%%FFT:
Y = fft(white_noise);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
%%Plot:
f = Fs*(0:(L/2))/L;
plot(f,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')

  0 Comments

Sign in to comment.

Accepted Answer

Greg Dionne
Greg Dionne on 2 Feb 2018
I think you're looking for a PSD.
Try periodogram(white_noise) or periodogram(white_noise,[],[],Fs)

  0 Comments

Sign in to comment.

More Answers (0)

Sign in to answer this question.