Is the unit of Cxy from cpsd in decibel?
2 次查看(过去 30 天)
显示 更早的评论
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!
0 个评论
采纳的回答
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
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.
更多回答(2 个)
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?
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Signal Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!