资源简介
function ARMODEL()
%现代数字信号处理
%采用MATLAB仿真实现AR模型,进行谱估计
%AR模型的理论公式: x(n) + a1*x(n-1) + a2*x(n-2) + …… +ap*x(n-p) = w(n)
%待估计数据样本:
%目前输入随机过程为叠加了正态分布噪声的正弦波
...
代码片段和文件信息
function ARMODEL()
%现代数字信号处理作业
%采用MATLAB仿真实现AR模型,进行谱估计
%AR模型的理论公式: x(n) + a1*x(n-1) + a2*x(n-2) + …… +ap*x(n-p) = w(n)
%待估计数据样本:
%目前输入随机过程为叠加了正态分布噪声的正弦波
Fs = 1000;
t = 0:1/Fs:15;
N = size(t2) %数据样值点数
randn(‘state‘0);
x = cos(2*pi*t*200) + randn(1N); % 200Hz cosine plus noise
%计算N个取样数据的取样数据自相关函数
rxx = zeros(1N); %保存取样数据自相关函数的变量
for m = 0:N-1
sum = 0;
for n= 1:N-m
temp1 = x(n)*x(m+n);
sum = sum + temp1;
end
rxx(m+1) = sum/N;
end
%采用Levison-Durbin算法求解AR模型的Yule-Walker模型
%需要确定AR模型理论公式中的参数:白噪声w(n)的方差、方程系数a1……ap(这里包括了模型的阶次)
PMAX = 100; %设定AR模型最高阶次
atemp1 = zeros(1PMAX+1); %保存方程系数的中间变量
atemp2 = zeros(1PMAX+1); %保存方程系数的中间变量
deviationtemp1 = zeros; %保存白噪声w(n)方差的中间变量
deviationtemp2 = zeros; %保存白噪声w(n)方差的中间变量
%AR(1)模型:x(n) + a1*x(n-1) = w(n)
%其Yule-Walker方程: R(0)*1 + R(1)*a1 = deviation1;
% R(1)*1 + R(0)*a1 = 0;
%求解方程确定a1、deviation1
atemp1(1) = 1;
atemp1(2) = -rxx(2)/rxx(1);
atemp2 = atemp1;
deviationtemp1 = ( rxx(1)*rxx(1) - rxx(2)*rxx(2) )/rxx(1);
deviationtemp2 = deviationtemp1;
%利用Levison-Durbin迭代算法计算AR模型参数
%根据FPE准则、AIC准则和BIC准则确定AR模型的阶次
%atemp1、deviation1保存第k次的运算结果
%atemp2、deviation2保存第k+1次的运算结果
FPE(1) = deviationtemp1*(N+2)/N;
AIC(1) = log(deviationtemp1) + 2/N;
BIC(1) = log(deviationtemp1) + log(N)/N;
veriance(1) = deviationtemp1;
criteria = 3
for P = 2:PMAX
sum1 = 0;
sum2 = 0;
for i = 2:(P+1)
sum1 = atemp1(i)*rxx(i) + sum1;
end
for i = 1:(P+1)
sum2 = atemp1(i)*rxx(P+2-i) + sum2;
end
deviationtemp1 = rxx(1) + sum1;
dk = sum2;
ref(P) = dk/deviationtemp1;
deviationtemp2 = ( 1 - ref(P)*ref(P) )*deviationtemp1;
for i = 2:(P+1)
atemp2(i) = atemp1(i) - ref(P)*atemp1(P+2-i);
end
%计算AR(P)模型参数
atemp1 = atemp2;
veriance(P) = deviationtemp2;
%利用阶次判断准则
FPE(P) = veriance(P)*(1+P/N)/(1-P/N);
AIC(P) = log(veriance(P)) + 2*P/N;
BIC(P) = log(veriance(P)) + P*log(N)/N;
if (criteria == 1) & (FPE(P-1) %利用最终预测误差(FPE)准则作为AR模型阶次的判断准则
a = atemp2(1:(P));
P = P - 1;
deviation = veriance(P-1);
break;
end
if (criteria == 2) & (AIC(P-1) %利用AIC准则作为AR模型阶次的判断准则
a = atemp2(1:(P));
P = P - 1;
deviation = veriance(P-1);
break;
end
if(criteria == 3) & (BIC(P-1) %利用BIC准则作为AR模型阶次的判断准则
a = atemp2(1:(P));
P = P - 1;
deviation = veriance(P-1);
break;
end
end
%计算功率谱估计值
a = atemp2(1:(P+1));
deviation = veriance(P);
freqsample = 10;
NF = Fs/freqsample;
freq = [freqsample:freqsample:Fs];
delta_w = 2*pi/NF;
theta = [delta_w:delta_w:2*pi];
for k = 1:NF
sum = 0;
for i= 2:P+1
theta1 = -1*theta(k)*(i-1);
sum = a(i)*( cos(theta1)+j*sin(theta1) ) + sum;
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3735 2004-06-21 18:40 ARMODEL.m
文件 1116 2005-11-13 09:24 zuoye.m
文件 219136 2005-11-23 12:02 随机序列作业.doc
----------- --------- ---------- ----- ----
223987 3
- 上一篇:多尺度Retinex
- 下一篇:SLEP工具包
相关资源
- SLEP工具包
- 快速傅里叶变换算法matlab实现
- 模式识别之线性分类器的matlab实现
- 基于粒子群算法的无功优化MATLAB源代
- rs码编译码的matlab代码
- matlab 整流器模型svpwm
- matlab APF
-
simuli
nk搭建的转速电流双闭环直流调 - 通信信号特征参数的提取matlab代码
- MATLAB图像分割提取算法源代码---车牌
- am调制解调系统仿真matlab代码
- 极值搜索算法程序
- 异步电机矢量控制模型——matlab自带
- 利用Matlab实现PCm编码的A律13折线法量
- l-bfgs的matlab代码
- 三相SVPWM逆变器仿真
- 正则化粒子滤波matlab程序
- Matlab实现灰度图像转换成RGB图像
- MATLAB画三维球体、半球体、圆柱、山
- matlab-logistic图像加密解密-彩色-灰度都
- MATLAB程序设计与应用(刘卫国-第3版)
- RNN-LSTM 卷积神经网络 Matlab 实现,简单
- MATLAB mexopts配置文件.zip
- nurbs曲线matlab程序代码
- matlab与机器学习百度云分享
- 模糊控制器与PID控制器_性能对比 基于
- 直流电机速度闭环控制
- 三相逆变器逆变器并网matlab仿真
- 极坐标牛顿法潮流计算的matlab通用程
- 卷积神经网络matlab代码
评论
共有 条评论