高分!急!用matlab分析功率谱密度,采样频率的设定.高手进!

来源:百度知道 编辑:UC知道 时间:2024/05/12 10:16:09
部分程序如下.解释一下,x_sample是我要分析的信号序列,sample rate是10Hz.我要分析该序列在[0.04 0.15]Hz区间和[0.15 0.4]区间的psd,并计算平均功率,考察它们的比(即r)随时间的变化情况.

我比较糊涂的是,psd设定的参数:
1.fs是采样频率,这里采样频率为什么要设成输入信号的频率?按照奈奎斯特定律,不是应该是它的两倍以上才可以包含全部频谱吗?
2.nfft是计算出来的点数,它的大小关系到后面得到的频域信号的精度,对吗?
3.单边oneside和双边除了幅度的区别还有什么别的?
4.单边的情况下y是4096(2^12)个点,那边对应的是0,那边是pi?

我最关心第一个问题,怎样才能确保我得到的频谱是正确的,否则后面计算的平均功率都扯淡了.如能给予解答,无限感激!

w=hann(m);
k=1;
Fs=10;
h = spectrum.periodogram('Hann');
m=100;
j=8;
for i=1:j:Npp-m
mx=(x_sample(i:m+i-1)-mean(x_sample(i:m+i-1)));
p=mx.*w';
hopts = psdopts(h);
set(hopts,'NFFT',2^13,'Fs',Fs,'SpectrumType','onesided');
Hpsd = psd(h,p,hopts);
y(:,k)=Hpsd.Data;
g1(k) = avgpower(Hpsd,[.04 .15]);
g2(k) = avgpower(Hpsd,[.15 .4]);
r(k)=g1(k)/g2(k);
time_r(k)=0.1*j*(k-1)+m/2*0.1;
k=k+1;
end;

1.fs是采样频率,这里采样频率为什么要设成输入信号的频率?按照奈奎斯特定律,不是应该是它的两倍以上才可以包含全部频谱吗?
fs就是差值之后的序列的sample rate. 只要fs大于 sample的2倍以上频率就可以。
2.nfft是计算出来的点数,它的大小关系到后面得到的频域信号的精度,对吗?
是的。
3.单边oneside和双边除了幅度的区别还有什么别的?
没有别的了。
4.单边的情况下y是4096(2^12)个点,那边对应的是0,那边是pi?
左边是0右边是pi.

楼主你好!

不知我的答案你是否满意:

(1)做波形显示以及fft变换,程序如下:

[y,fs]=wavread('E:\MATLAB6p5\work\3.wav');%读出信号,采样率。
y=y(:,1);%取单声道。
sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)'); %画频域波形

t=(0:sigLength-1)/Fs;
figure;plot(t,y);xlabel('Time(s)'); %画时域波形

(2)关于滤波
声音频率主要集中在0~1KHZ,我想虑掉500hz以下的频率,因此采用一个高通滤波器
这里我使用了一个10阶butterworth高通滤波器,边带是500hz,但是这不能直接用,因为声音文件的采样率是44k,500hz相对于44k来说太小了。所以我得先把我的声音欠采样,然后再滤波。程序如下:
[k,Fs,bits]=wavread('E: