现代信号处理

  • 格式:docx
  • 大小:244.97 KB
  • 文档页数:16

一、有两个ARMA 过程,其中信号1是宽带信号,信号2是窄带信号,分别用AR 谱估计算法、ARMA 谱估计算法和周期图算法估计其功率谱。

产生信号1的系统函数为1234123410.35440.35080.17360.2401()1 1.3817 1.56320.88430.4906z z z z H z z z z z --------++++=-+-+激励白噪声的方差为1。

产生信号2的系统函数为1212341 1.58570.9604()1 1.6408 2.2044 1.48080.8145z z H z z z z z ------++=-+-+激励白噪声的方差为1。

每次实验使用的数据长度为256。

(1) 对信号1,分别使用AR(4),AR(8),ARMA(4,4)和ARMA(8,8)模型进行谱估计,对AR 方法采用自协方差算法,对ARMA 算法采用改进的Yule-Walker 方程算法,也用周期图法作谱估计。

做20次独立实验,将20次实验结果画在一张图上,观察谱估计的随机分布性质,另将20次的平均值和真实谱画在一张图上进行比较。

(2) 对信号2,分别使用AR(4),AR(8),AR(12),AR(16),ARMA(4,2),ARMA(8,4)和ARMA(12,6)模型进行谱估计,对AR 方法采用自协方差算法,对ARMA 算法采用改进的Yule-Walker 方程算法,也用周期图法作谱估计。

做20次独立实验,将20次实验结果画在一张图上,观察谱估计的随机分布性质,另将20次的平均值和真实谱画在一张图上进行比较。

(3) 对各种算法的性能进行比较分析。

解:(1 )很多随机过程可以由或近似由均值为零、方差为 的白噪声序列u(n)经过具有有理传输函数H(z)的ARMA 线性系统来得到。

称该随机过程为ARMA 过程。

任意平稳ARMA 过程,其功率谱密度有如下形式:222|)(||)(|)(σωωω⋅=A B P x (1)则x(n)可用ARMA(p,q)模型描述,即22|)(|)(σωω⋅=H P x(2)则可以根据给出的信号1的系统函数来进行计算。

2σ仿真图形结果下所示:信号1的20次谱估计总图如图一所示:信号1的20次AR(4)谱估计总图A B信号1的20次的ARMA(4,4)谱估计总图信号1的20次的ARMA(8,8)谱估计总图C D 图一 信号1的20次谱估计信号1的20次谱估计平均如下图二所示:信号1的20次AR4谱估计平均图信号1的20次AR8谱估计平均a b信号1的20次ARMA(4,4)谱估计平均图信号1的20次ARMA(8,8)谱估计平均C d图二信号1的20次谱估计平均上图中蓝色曲线表示理论值,红色曲线表示估计值。

信号1的20次周期图法图谱估计如图三所示:信号1的20次周期图法谱估计平均图a b图三信号1的20次周期图法图(2)仿真结果如下所示:信号2的20次谱估计总图如图四所示信号2的20次AR(4)谱估计总图信号2的20次AR(8)谱估计总图a bC de fG图四信号2的20次谱估计信号2的20次谱估计平均如图五所示:信号2的20次AR4谱估计平均信号2的20次AR8谱估计平均信号2的20次AR12谱估计平均信号2的20次ARMA(4,2)谱估计平均信号2的20次ARMA(8,4)谱估计平均信号2的20次ARMA(12,6)谱估计平均图六 信号2的20次谱估计平均信号2的周期法谱估计如图七所示:信号2的20次的周期图法谱估计总图信号2的20次周期图法谱估计平均3 各个算法分析,对于信号1,有图形可以看出,AR模型,估计所得值随着阶数的增加,更加靠近真实值。

ARMA算法,阶数的增加,估计曲线与理论曲线更加吻合。

相同条件下ARMA比AR所得的效果更好。

从20次平均结果来看,周期图法最接近理论值。

对于信号2得到的结果和信号1类似。

MATLAB程序代码信号1clear all;close all;clc;N = 256;omiga = pi/N:pi/N:pi;A = [1 -1.3817 1.5632 -0.8843 .4906];B = [1 .3544 .3508 .1736 .2401];Px_peri = zeros(20,N);Px_peritotal = zeros(1,N);Px_ar4 = zeros(20,N);Px_ar4total = zeros(1,N);Px_arma44 = zeros(20,N);Px_arma44total = zeros(1,N);Px_ar8 = zeros(20,N);Px_ar8total = zeros(1,N);Px_arma88 = zeros(20,N);Px_arma88total = zeros(1,N);Px_arth = get_pw(A(2:5),0,4,1,N);Px_armath = get_pw(A(2:5),B(2:5),4,4,N);for l = 1:20u = normrnd(0,1,1,N);x = filter(B,A,u);p = 4;A_mation4 = get_ar_coe(p,x);Px_ar4(l,:) = get_pw(A_mation4,0,p,1,N);q = 4;y = filter([1 A_mation4],1,x);p_temp = 100;a_temp = get_ar_coe(p_temp,y);B_mation4 =get_ar_coe(q,a_temp);Px_arma44(l,:) = get_pw(A_mation4,B_mation4,p,q,N);p = 8;A_mation8 = get_ar_coe(p,x);Px_ar8(l,:) = get_pw(A_mation8,0,p,1,N);q = 8;y = filter([1 A_mation8],1,x);p_temp = 100;a_temp = get_ar_coe(p_temp,y);B_mation8 =get_ar_coe(q,a_temp);Px_arma88(l,:) = get_pw(A_mation8,B_mation8,p,q,N);for j = 1:NPx_peri(l,j) = sum(x.*exp(-1i*omiga(j)*(1:256)))*conj(sum(x.*exp(-1i*omiga(j)*(1:256))));endendPx_peri = Px_peri/N;figure;hold on;for l = 1:20plot(omiga,log(Px_ar4(l,:)));Px_ar4total = Px_ar4total + Px_ar4(l,:);endPx_ar4total = Px_ar4total/20;title('信号1的20次AR(4)谱估计总图');axis([0 pi -5 5]);figure;plot(omiga,log(Px_armath));title('信号1的ARMA模型理论谱');axis([0 pi -5 5]);hold on;plot(omiga,log(Px_ar4total),'-r');title('信号1的20次AR4谱估计平均图');axis([0 pi -5 5]);figure;hold on;for l = 1:20plot(omiga,log(Px_ar8(l,:)));Px_ar8total = Px_ar8total + Px_ar8(l,:);endPx_ar8total = Px_ar8total/20;title('20次信号1的AR(8)谱估计总图');axis([0 pi -5 5]);figure;plot(omiga,log(Px_armath));title('信号1的ARMA模型理论谱');axis([0 pi -5 5]);hold on;plot(omiga,log(Px_ar8total),'-r');title('信号1的20次AR8谱估计平均');axis([0 pi -5 5]);figure;hold on;for l = 1:20plot(omiga,log(Px_arma44(l,:)));Px_arma44total = Px_arma44total + Px_arma44(l,:); endPx_arma44total = Px_arma44total/20;title('信号1的20次的ARMA(4,4)谱估计总图');axis([0 pi -5 5]);figure;plot(omiga,log(Px_armath));title('信号1的ARMA模型理论谱图');axis([0 pi -5 5]);hold on;plot(omiga,log(Px_arma44total),'-r');title('信号1的20次ARMA(4,4)谱估计平均图');axis([0 pi -5 5]);figure;hold on;for l = 1:20plot(omiga,log(Px_arma88(l,:)));Px_arma88total = Px_arma88total + Px_arma88(l,:); endPx_arma88total = Px_arma88total/20;title('信号1的20次的ARMA(8,8)谱估计总图');axis([0 pi -5 5]);figure;plot(omiga,log(Px_armath));title('信号1的ARMA模型理论谱');axis([0 pi -5 5]);hold on;plot(omiga,log(Px_arma88total),'-r');title('信号1的20次ARMA(8,8)谱估计平均');axis([0 pi -5 5]);figure;hold on;for l = 1:20plot(omiga,log(Px_peri(l,:)));Px_peritotal = Px_peritotal + Px_peri(l,:);endPx_peritotal = Px_peritotal/20;title('信号1的20次的周期图法谱估计总图');axis([0 pi -5 5]);figure;plot(omiga,log(Px_armath));title('信号1的ARMA模型理论谱图');axis([0 pi -5 5]);hold on;plot(omiga,log(Px_peritotal),'-r');title('信号1的20次周期图法谱估计平均图');axis([0 pi -5 5]);信号2clear all;close all;clc;N = 256; % 信号点数omiga = pi/N:pi/N:pi; % 谱估计x轴坐标B = [1 1.5857 .9604];A = [1 -1.6408 2.2044 -1.4808 .8145];Px_peri = zeros(20,N);Px_peritotal = zeros(1,N);Px_ar4 = zeros(20,N);Px_ar4total = zeros(1,N);Px_arma42 = zeros(20,N);Px_arma42total = zeros(1,N); Px_ar8 = zeros(20,N);Px_ar8total = zeros(1,N);Px_arma84 = zeros(20,N);Px_arma84total = zeros(1,N); Px_ar12 = zeros(20,N);Px_ar12total = zeros(1,N);Px_arma126 = zeros(20,N);Px_arma126total = zeros(1,N); Px_ar16 = zeros(20,N);Px_ar16total = zeros(1,N);Px_arth = get_pw(A(2:5),0,4,1,N);Px_armath = get_pw(A(2:5),B(2:3),4,2,N);for l = 1:20u = normrnd(0,1,1,N);x1 = filter(B,A,u);p = 4;A_mation4 = get_ar_coe(p,x1);Px_ar4(l,:) = get_pw(A_mation4,0,p,1,N);q = 2;y1 = filter([1 A_mation4],1,x1);p_temp = 100;a_temp = get_ar_coe(p_temp,y1);B_mation2 =get_ar_coe(q,a_temp);Px_arma42(l,:) = get_pw(A_mation4,B_mation2,p,q,N);p = 8;A_mation8 = get_ar_coe(p,x1);Px_ar8(l,:) = get_pw(A_mation8,0,p,1,N);q = 4;y1 = filter([1 A_mation8],1,x1);p_temp = 100;a_temp = get_ar_coe(p_temp,y1);B_mation4 =get_ar_coe(q,a_temp);Px_arma84(l,:) = get_pw(A_mation8,B_mation4,p,q,N);p = 12;A_mation12 = get_ar_coe(p,x1);Px_ar12(l,:) = get_pw(A_mation12,0,p,1,N);q = 6;y1 = filter([1 A_mation12],1,x1);p_temp = 100; % 取阶数为100a_temp = get_ar_coe(p_temp,y1); %求Y1(z)等价100阶AR模型的解B_mation6 =get_ar_coe(q,a_temp); % 由a_temp建立q=6阶AR模型Px_arma126(l,:) = get_pw(A_mation12,B_mation6,p,q,N);% 得到ARMA(12,6)的谱估计p = 16;A_mation16 = get_ar_coe(p,x1); % 得到AR(16)的估计参数Px_ar16(l,:) = get_pw(A_mation16,0,p,1,N); % 得到AR(16)的谱估计for j = 1:NPx_peri(l,j) = sum(x1.*exp(-1i*omiga(j)*(1:256)))*conj(sum(x1.*exp(-1i*omiga(j)*(1:256))));endendPx_peri = Px_peri/N;figure;hold on;for l = 1:20plot(omiga,log(Px_ar4(l,:)));Px_ar4total = Px_ar4total + Px_ar4(l,:); endPx_ar4total = Px_ar4total/20;title('信号2的20次AR(4)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_ar4total),'-r');title('信号2的20次AR4谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_ar8(l,:)));Px_ar8total = Px_ar8total + Px_ar4(l,:); endPx_ar8total = Px_ar8total/20;title('信号2的20次AR(8)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_ar8total),'-r');title('信号2的20次AR8谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_ar12(l,:)));Px_ar12total = Px_ar12total + Px_ar4(l,:); endPx_ar12total = Px_ar12total/20;title('信号2的20次AR(12)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_ar12total),'-r');title('信号2的20次AR12谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_ar16(l,:)));Px_ar16total = Px_ar16total + Px_ar4(l,:);endPx_ar16total = Px_ar16total/20;title('信号2的20次AR(16)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_ar16total),'-r');title('信号2的20次AR16谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_arma42(l,:)));Px_arma42total = Px_arma42total + Px_arma42(l,:); endPx_arma42total = Px_arma42total/20;title('信号2的20次的ARMA(4,2)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_arma42total),'-r');title('信号2的20次ARMA(4,2)谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_arma84(l,:)));Px_arma84total = Px_arma84total + Px_arma84(l,:); endPx_arma84total = Px_arma84total/20;title('信号2的20次的ARMA(8,4)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_arma84total),'-r');title('信号2的20次ARMA(8,4)谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_arma126(l,:)));Px_arma126total = Px_arma126total + Px_arma126(l,:); endPx_arma126total = Px_arma126total/20;title('信号2的20次的ARMA(12,6)谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_arma126total),'-r');title('信号2的20次ARMA(12,6)谱估计平均');axis([0 pi -12 10]);figure;hold on;for l = 1:20plot(omiga,log(Px_peri(l,:)));Px_peritotal = Px_peritotal + Px_peri(l,:); endPx_peritotal = Px_peritotal/20;title('信号2的20次的周期图法谱估计总图');axis([0 pi -12 10]);figure;plot(omiga,log(Px_armath));title('信号2的ARMA模型理论谱');axis([0 pi -12 10]);hold on;plot(omiga,log(Px_peritotal),'-r');title('信号2的20次周期图法谱估计平均');axis([0 pi -12 10]);。