Matlab画图问题,自相关函数,功率谱密度,求具体代码。

1、产生一组(0,1)均匀分布的随机序列,画出其自相关函数和功率谱密度;
2、产生一组服从N~(2,5)的正态随机序列,画出其自相关函数和功率谱密度;
3、估计随机过程X(t)=cos(600πt)+cos(640πt)+N(t)的自相关函数和功率谱,其中N(t)服从N~(0,1)的高斯分布。
4、随机相位信号X(t)=Acos(ωt+Ψ),其中A=2 和ω=1000π, Ψ是在(0, 2π)上均匀分布的随机变量。估计该随机信号的自相关函数和功率谱密度。
提示:随机序列{Xn}的自相关函数Rx(m)用下式计算(图片):

然后通过计算自相关函数的离散傅立叶变换(DFT)来得出序列的功率谱。DFT可以用MATLAB中的FFT函数来计算。

参考函数:fft, fftshift, ifft, ifftshift

第1个回答  2011-06-22
clear all;
close all;
warning off all;

Fs = 1000;
nfft=1024;
idx = 0:round(nfft/2-1);
k = idx*Fs/nfft;
t = 0:1/Fs:1;

x1 = rand(1,1001);
[cor1 lag1] = xcorr(x1,'unbiased');
figure(1);
subplot(211),plot(lag1/Fs,cor1),title('(0,1)均匀分布自相关函数');
Xk1 = fft(cor1,nfft);
Px1 = abs(Xk1);
subplot(212),plot(k,10*log10(Px1(idx+1))),title('(0,1)均匀分布功率谱密度');

x2 = normrnd(2,5,1,1001);
[cor2 lag2] = xcorr(x2,'unbiased');
figure(2);
subplot(211),plot(lag2/Fs,cor2),title('(2,5)正态分布自相关函数');
Xk2 = fft(cor2,nfft);
Px2 = abs(Xk2);
subplot(212),plot(k,10*log10(Px2(idx+1))),title('(2,5)正态分布功率谱密度');

x3 = cos(600*pi*t)+cos(640*pi*t)+randn(1,1001);
[cor3 lag3] = xcorr(x3,'unbiased');
figure(3);
subplot(211),plot(lag3/Fs,cor3),title('随机信号自相关函数');
Xk3 = fft(cor3,nfft);
Px3 = abs(Xk3);
subplot(212),plot(k,10*log10(Px3(idx+1))),title('随机信号功率谱密度');

fai = 2*pi*rand(1,1001);
x4 = 2*cos(1000*pi*t+fai);
[cor4 lag4] = xcorr(x4,'unbiased');
figure(4);
subplot(211),plot(lag4/Fs,cor4),title('随机相位信号自相关函数');
Xk4 = fft(cor4,nfft);
Px4 = abs(Xk4);
subplot(212),plot(k,10*log10(Px4(idx+1))),title('随机相位信号功率谱密度');追问

非常感谢!感觉你很厉害。我这里还有几个题,如果有时间能不能也帮我解答下,追加分。谢谢!
Q341474603

本回答被提问者采纳
相似回答