随机信号分析编程作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机信号分析
编程作业
姓名:
学号:
学院:计算机与信息学院班级:通信工程14-1班
1.23编写一个产生均值为1、方差为4的高斯分布随机数程序,求其最大值、最小值、均值和方差,并与理论值比较。
解:分析:本题可用累加近似法产生标准正太分布随机数,首先产生12个相互独立的均匀分布随机数,计算这十二个数的和后减去六后就可以得到N(0,1)分布的随机数。以下是代码及结果:
从运行结果可以看出,
产生的1024个随机
数,其均值为
0.9557,方差为
3.8582与理论均值1
方差值4较为接近,故
此程序比较理想的产生
了均值为1方差值为4
的高斯随机数。
2.26编写一个产生协方差函数为C(τ)=4e−2|τ|的平稳高斯过程的程序,产生若
干样本函数,估计所产生的时间自相关函数和功率谱密度,并统计自相关函数和功率谱密度,最后将结果和理论值比较。
解:本题可根据教材例题5.13差分方程得到自相关函数为b2
1−a2
a|m|的随机序列,代码如下:
N=10000;
Ts=0.001;
sigma=2;
beta=2;
a=exp(-beta*Ts);
b=sigma*sqrt(1-a*a);
w=normrnd(0,1,[1,N]);
x=zeros(1,N);
x(1)=sigma*w(1);
for i=2:N
x(i)=a*x(i-1)+b*w(i);
end;
Rxx=xcorr(x)/N;
m=[-N+1:N-1];
Rxx0=(sigma^2)*exp(-beta*abs(m*Ts));
plot(m*Ts,Rxx0,'b.',m*Ts,Rxx,'r');title(‘理论与实测自相关函数’);
用matlab运行后绘制的图如下:
例题3.6.4仿真一个平均功率为1的白噪声通过带通系统,白噪声为高斯分布,带通系统的俩个截至频率分别为3kHz 和4kHz,求输出的自相关函数和功率谱密度。
%准备工作N = 500;
xt = random('norm',0,1,1,N);
ht = fir1(101,[0.3 0.4]);
HW = fft(ht,2*N);
%仿真
Rxx = xcorr(xt,'biased');
Sxx = abs(fft(xt,2*N).^2)/(2*N);
HW2 = abs (HW).^2;
Syy = Sxx.*HW2;
Ryy = fftshift(ifft(Syy));
%画曲线
w = (1:N)/N;
t = (-N : N-1)/N * (N/20000);
subplot(4,1,1); plot(w,abs(Sxx(1:N)));
subplot(4,1,2); plot(w,abs(HW2(1:N)));
subplot(4,1,3); plot(w,abs(Syy(1:N)));
subplot(4,1,4); plot(Ryy);
M = 100;
N = 500;
xt= random('norm',0,1,M,N);
ht = fir1(101,[0.3 0.4]);
HW =fft (ht,2*N);
Sxx = abs(fft(xt,2*N,2).^2)/(2*N);
Sxxav = mean(Sxx);
HW2 =abs(HW).^2;
Syy = Sxxav .* HW2;
Ryy = fftshift(ifft(Syy));
运行结果见下图:
教材习题6.16编写MATLAB程序,模拟产生功率谱为
S(ω)=16
(ω+ω0)2
+64
+16
(ω−ω0)
2
+64
的高斯带通随机信号,其中ω0=400π,绘制带通信号相关函数与功率谱。解:由傅里叶变换性质知
σ2e−β|τ|cosω0↔σ2β
(ω+ω0)2
+β2
+σ2β
(ω−ω0)
2
+β2
因此先产生俩个自相关函数同为R(τ)=σ2e−β|τ|的独立平稳过程i(t)和q(t),然后由x(t)=i(t)cos(w0t)-q(t)sinw0t就可得出要求的带通信号。代码如下:
NFFT = 1024;
fs = 1000;
Ts = 1/fs;
B= 0.5 * fs;
df = fs/NFFT;
f = -B:df:B-df;
sigma = sqrt(2);
beta = 8;
a = exp(-beta*Ts);
b = sigma * sqrt(1 - a*a);
f0 = 200;
N = 10000;
wi = normrnd (0,1,[1,N]);
wq = normrnd (0,1,[1,N]);
xi = zeros(1,N);
xq = zeros(1,N);
xi(1) = sigma*wi(1);
xq(1) = sigma * wq(1);
for i = 2:N
xi(i)=a*xi(i-1) + b*wi(i); xq(i)=a*xq(i-1) + b*wq(i); end
t = 0:Ts:(N-1)*Ts;
x0=xi.*cos(2*pi*f0*t) -
xq.*sin(2*pi*f0*t);
x = x0(N-1000+1:N);
t = t(N-1000+1:N);
Rxx = xcorr(x)/1000;
t0=[-1000+1:1000-1];
Rxx0=(sigma^2)*exp(-
beta*abs(t0*Ts));
subplot(141);plot(t,x);title('样本x');
subplot(142);plot(t0,Rxx);title( '实测自相关函数');
subplot(143);periodogram(x,[],10 00,fs);
subplot(144);plot(t0,Rxx0,'r');t itle('理论自相关函数');
以下是运行结果: