Is the unit of Cxy from cpsd in decibel?

조회 수: 2 (최근 30일)
Kay
Kay 2011년 10월 20일
Hi,
I want to use the Signal Processing Toolbox to compute the Cross spectrum gain and phase for my sequences X and Y. I wondered the Cxy that cpsd gives me is in the units of dB? I saw the example and it says the unit is dB/rad/freq, how can I convert it to dB?
Thank you so much!

채택된 답변

Wayne King
Wayne King 2011년 10월 20일
Hi, no, the output is the cross spectrum, it is complex-valued. If you want the output in db. Use
10*log10(abs(Pxy));
For example:
Fs = 1000;
t = 0:1/Fs:.296;
x = cos(2*pi*t*200)+randn(size(t));
y = cos(2*pi*t*100)+randn(size(t));
[Pxy,F] = cpsd(x,y,[],[],[],Fs);
plot(F,10*log10(abs(Pxy))); grid on;
% compare to
figure;
cpsd(x,y,[],[],[],Fs);
  댓글 수: 4
Wayne King
Wayne King 2011년 10월 20일
yes, angle(Pxy) gives you the phase. The difference between 10*log10() and 20*log10() is the difference between magnitude and magnitude squared, they are both in dB per unit frequency.
Kay
Kay 2011년 10월 20일
is dB same as dB/Hz?
if not, how do I get rid it?

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Kay
Kay 2011년 12월 1일
I'm getting some offset of the result after cpsd, do you know if the algorithm of the cpsd would give me a larger set of numbers as a result?
thanks, Kay

Giandomenico
Giandomenico 2013년 1월 31일
편집: Giandomenico 2013년 1월 31일
I have a problem with cpsd amplitude. I generate a 20s signal with two harmonic components at 5 and 10Hz, both with an amplitude of 10, then I perform the cpsd I have the two components at the right frequencies, but both with an amplitude of 1000??? it should be 100, right?
fs=512; % sampling frequency
L=10240; % samples
t=(0:L-1)'/fs;
x=10*sin(2*pi*10*t)+10*sin(2*pi*5*t);
[Gxx, f]=cpsd(x,x,rectwin(L),0,L,fs);
plot(f,abs(Gxx),'.r')
Where I am wrong?

카테고리

Help CenterFile Exchange에서 Signal Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by