Multiple Power Spectral Density spectra on one plot
이전 댓글 표시
Hello,
I have calculated the PSD spectrum of a signal and displayed it from 0-500Hz using the following code:
periodogram(M3A,[],'onesided',512,1000)
I would like to display the spectrum up to 2000Hz, and then plot another spectrum on the same graph for comparison.
Please could someone point me in the right direction?
Best Regards
Andy
채택된 답변
추가 답변 (1개)
Wayne King
2011년 12월 15일
0 개 추천
Hi Andy, from the code you have shown above, your sampling frequency is 1 kHz. That means your spectrum is periodic with a period equal to 1 kHz. It then sounds like you want to compare it against the power spectral density of another process with a higher sampling rate?
You don't gain anything by extending your process spectrum to 2 kHz because it's periodic. You're better off (if the other process has a higher sampling rate) limiting the part of the spectrum you consider in the process with the higher rate.
Also, the sampling interval and the length of the input time series are part of the scaling factors for the periodogram.
And both the length and sampling interval affect frequency resolution (spacing of the DFT bins).
댓글 수: 2
Andy
2011년 12월 15일
Ken Saw
2014년 3월 24일
load sunspot.dat
year=sunspot(:,1);
relNums=sunspot(:,2);
plot(year,relNums)
title('Sunspot Data')
Y = fft(relNums);
Y(1)=[];
n=length(Y);
power = abs(Y(1:floor(n/2))).^2;
nyquist = 1/2;
freq = (1:n/2)/(n/2)*nyquist;
plot(freq,power)
xlabel('cycles/year')
title('Periodogram')
period=1./freq;
plot(period,power);
axis([0 40 0 2e+7]);
ylabel('Power');
xlabel('Period (Years/Cycle)');
hold on;
index=find(power==max(power));
mainPeriodStr=num2str(period(index));
plot(period(index),power(index),'r.', 'MarkerSize',25);
text(period(index)+2,power(index),['Period = ',mainPeriodStr]);
hold off;
카테고리
도움말 센터 및 File Exchange에서 Parametric Spectral Estimation에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!