利用相关分析法辨识脉冲响应

article/2025/11/10 18:31:38

主程序:

%% 参数初始化
times=1;
Np=63;%2^6-1,输入序列循环周期
N=252*times;
a=1;%输入序列幅值
T0=1;%采样时间
delta_g=zeros(200,1);
ratio_vy=zeros(200,1);
%% 人机对话
sigma=input('请输入噪声标准差:  ');
r=input('请输入循环周期数(本程序中,输入2或3):  ');
% sigma=0.1;
%  for r=1:200
%% 生成输入序列
u=createM(Np,a,N);
%% 生成噪声序列
v=createV(sigma,N);
%% 生成理论值
y=transform(u,T0,N);
z=y+v;
%% 计算脉冲响应理论值
g0=calculateg0(T0,Np);
%% 计算脉冲响应估计值
g1=calculate_z(Np,r,a,u,z,T0);
%% 脉冲响应估计误差
g=g0-g1;
temp=sqrt(sum(g.^2)/sum(g0.^2));
delta_g(r)=temp;
%% 噪信比计算(方差是标准差的平方)
d_v=var(v);%噪声方差
d_y=var(y);%过程输出方差
ratio_vy(r)=sqrt(d_v/d_y);%噪信比
%  end
% 画图
%脉冲响应理论值与估计值的比较
% subplot(1,2,1)
figure(1)
t=linspace(0,62,63);
plot(t,g0,'-b','LineWidth',2);
hold on
plot(t,g1,'--r','LineWidth',2);
title('脉冲响应理论值与估计值')
legend('脉冲响应理论值','脉冲响应估计值');%加入噪声前后的输出序列比较
% subplot(1,2,2)
figure(2)
t=linspace(0,(N-1),N);
plot(t,y,'-b','LineWidth',1.5);
hold on
plot(t,z,'--r','LineWidth',1.5);
title('加入噪声前后的输出序列比较')
legend('不含噪声的输出序列','含噪声的输出序列');
ylim([-40 40]);

 

2、输入序列

%% 输入数据 M序列
function u=createM(Np,a,N)
%赋初值
M=[0 0 0 0 0 0 1];
for k=1:NM(1)=M(7)+M(6);if M(1)==2M(1)=0;endfor i=7:-1:2M(i)=M(i-1);endif M(1)==0u(k)=a;endif M(1)==1u(k)=-a;endend
end

3、噪声序列 

%扰动信号 白噪声序列
function v=createV(sigma,N)
%赋初值
M=32768;
A=179;
x=zeros(1,12*N);
x(1)=11;
%% 生成均匀分布数列
temp=x(1)/M;
x(1)=A*temp-floor(A*temp);for i=2:12*Nx(i)=A*x(i-1)-floor(A*x(i-1));end
%% 生成正态分布数列for k=1:Nksai=0;for i=(12*k-11):12*k   ksai=ksai+x(i);endv(k)=sigma*(ksai-6);end
end

 4、生产理论值

% 传递函数
function Y=transform(u,T0,N)
K=120;
T1=8.3;
T2=6.2;
K1=K/(T1*T2);
E1=exp(-T0/T1);
E2=exp(-T0/T2);
x(1)=0;
y(1)=0;for k=2:Nx(k)=E1*x(k-1)+T1*K1*(1-E1)*u(k-1)+T1*K1*(T1*(E1-1)+T0)*(u(k)-u(k-1))/T0;y(k)=E2*y(k-1)+T2*(1-E2)*x(k-1)+T2*(T2*(E2-1)+T0)*(x(k)-x(k-1))/T0;end
Y=y;
end    

5、脉冲响应理论值

function g0=calculateg0(T0,Np)
K=120;
T1=8.3;
T2=6.2;
E1=-T0/T1;
E2=-T0/T2;
K1=K/(T1-T2);
for k=1:Nptemp(k)=K1*(exp(k*E1)-exp(k*E2));
end
g0=temp;
end

6、脉冲响应估计值

%计算估计值
function g1=calculate_z(Np,r,a,u,z,T0)for k=1:Nptemp=0;for i=(Np+1):(r+1)*Nptemp=temp+u(i-k)*z(i);endRmz(k)=temp/(r*Np);end
c=-Rmz(Np-1);for k=1:Nptemp1(k)=Np*(Rmz(k)+c)/((Np+1)*a*a*T0);endg1=temp1;
end

 7、画图程序

% 画图
%脉冲响应理论值与估计值的比较
% subplot(1,2,1)
figure(1)
t=linspace(0,62,63);
plot(t,g0,'-b','LineWidth',2);
hold on
plot(t,g1,'--r','LineWidth',2);
title('脉冲响应理论值与估计值')
legend('脉冲响应理论值','脉冲响应估计值');%加入噪声前后的输出序列比较
% subplot(1,2,2)
figure(2)
t=linspace(0,(N-1),N);
plot(t,y,'-b','LineWidth',1.5);
hold on
plot(t,z,'--r','LineWidth',1.5);
title('加入噪声前后的输出序列比较')
legend('不含噪声的输出序列','含噪声的输出序列');
ylim([-40 40]);

 

 

 

 该实验中,脉冲响应估计误差最后保持在0.025左右。后续实验可以尝试通过利用逆M序列来替代M序列或进一步增加周期数等方式来进一步提高实验准确度。

参考资料

1、实验一指导书,孙应飞

2、过程辨识,方崇智 萧德云,清华大学出版社

3、https://wenku.baidu.com/view/1df4d12f284ac850ad0242c7.html


http://chatgpt.dhexx.cn/article/f5cqtZUr.shtml

相关文章

【控制理论】矩形脉冲响应曲线法 Python 绘图

前言 在过程控制系统的学习中,测量一个被控对象的阶跃响应非常重要,因为根据阶跃响应曲线可以得到被控对象的许多非常重要的参数。而有一个非常重要的测量阶跃响应曲线的方法是矩形脉冲响应曲线法。在学习的过程中,我走了一些弯路&#xff0…

【视频】向量自回归VAR数学原理及R软件经济数据脉冲响应分析实例

最近我们被客户要求撰写关于向量自回归VAR的研究报告,包括一些图形和统计输出。 向量自回归 (VAR) 是一种用于多变量时间序列分析的统计模型,尤其是在变量具有相互影响关系的时间序列中,本视频中我们介绍了向量自回归并在R软件中进行实现。…

用脉冲响应不变法设计IIR 滤波器 MATLAB实现

一、实验目的 1. 掌握脉冲响应不变法设计IIR 数字滤波器的原理及具体设计方法。 2. 观察用脉冲响应不变法设计的滤波器的时域特性和频域特性,比较所设计的数 字滤波器的和相应模拟滤波器的频域特性,观察脉冲响应不变法设计中产生的…

非参数模型辨识:脉冲响应曲线

1.1 问题描述 1.2 方法思路 首先根据系统脉冲响应函数G(t)计算出51(0-50)个真值数据G,再利用以下公式产生550组带噪声的仿真数据。 最后利用上述仿真矩阵构造相应的数据矩阵,再用最小二乘法求解系统的脉冲响应估计值,其构造公式如下所示。 1.3 实验…

R语言VAR模型的不同类型的脉冲响应分析

目录 模型与数据 估算值 预测误差脉冲响应 识别问题 正交脉冲响应 结构脉冲反应 广义脉冲响应 参考文献 最近我们被客户要求撰写关于脉冲响应分析的研究报告,包括一些图形和统计输出。脉冲响应分析是采用向量自回归模型的计量经济学分析中的重要一步。它们的…

R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析

自从Sims(1980)发表开创性的论文以来,向量自回归模型已经成为宏观经济研究中的关键工具。最近我们被客户要求撰写关于向量自回归(VAR)的研究报告,包括一些图形和统计输出。这篇文章介绍了VAR分析的基本概念…

matlab单位阶跃响应与单位脉冲响应,python 已知响应函数求单位阶跃响应或脉冲响应...

最近学习自动控制原理,关于控制系统的一些,老师用布置了一些作业说要用matlab画,我试试python 首先介绍一下所使用的库:control matplotlib sympy 1.control库:用来计算脉冲响应与阶跃响应 Paste_Image.png 2.sympy:用以化简多项式为和的形式方便写参数 比如我们使用 sym…

使用扫频信号测量房间脉冲响应

使用指数扫频正弦信号,信号生成方法如下: 其中: ,是扫频信号的起始频率和结束频率 是扫频信号的时长 是扫频率 逆信号是通过缩放时间翻转的信号计算,计算方法如下: 其中 信号的脉冲响应 扫频信号、逆信号、IR&#xf…

matlab一直系统函数画脉冲响应,【 MATLAB 】使用 impz 函数计算并画出脉冲响应

这篇博文在于讨论 impz 函数的使用。 我在 MATLAB 中查看 impz 的帮助文档时,始终看的不是太明白这个函数的使用,于是我根据一个例子,对这个函数做了一点分析,解决了一些我的疑惑,记录于此。 帮助文档上对这个函数的概括是数字滤波器的脉冲响应。 所谓的数字滤波器不就是一…

相关分析法辨识系统脉冲响应

背景介绍 在实际工程中,由于系统的测量都是载噪的,而且噪声对观测数据的影响常常达到不可忽略的地步,因此当噪声影响足以使得要求的精度不足时,就必须考虑噪声的影响。实际中,系统噪声存在各种难以精确描述的因素&…

脉冲响应

使用MATLAB中的系统建模工具对热风枪Chirp激励和输出数据建立三阶模型,并输出该模型的离散系统传递函数:tf2 。 基于Chirp信号激励下系统数据数据建模响应曲线 在MATLAB中显示 tf2 的数据。可以得到该离散时间系统函数有理多项式对应的分子和分母的系…

使用Stata做脉冲响应分析

Source: Rizaudin Sahlan → Impulse Response Function with Stata (time series) 在这篇推文中,我们讨论 VAR 模型中的脉冲响应函数(IRFs)。 脉冲响应函数反映了当 VAR 模型某个变量受到"外生冲击"时,模型中其他变量受到的动态影响。我们会…

matlab 单位脉冲响应,滤波器系数、单位脉冲响应、频率响应等概念笔记

单位脉冲响应:单位脉冲和滤波器系数的卷积。 对于FIR滤波器来说,单位脉冲响应就是滤波器系数。对于IIR滤波器,应该是需要用matlab中的filter函数,得到单位脉冲响应。 频率响应:幅度和相位随频率的变化关系。具体地&…

单位脉冲(冲激)响应与频率响应

1.线性时不变系统 (1)线性系统:满足可加性和比例性(齐次性)的系统。 令y(t)为系统对输入x(t)的响应: 比例性:ay(t)为该系统对ax(t)的响应,其中a为复常数。 可加性:为…

房间脉冲响应测量与模拟方法

本文是作者投稿到“21dB声学人”公众号的文章,现经有允许转载到自己的博客,技术交流可以联系593170280qq.com 房间脉冲响应(Room Impulse Response, RIR)表征了房间系统的系统响应,可以用于房间均衡和计算房间声学参数…

时间序列分析(12)| 脉冲响应函数、格兰杰因果检验

上篇介绍到,VAR模型研究的是多个时间序列变量之间的相互影响关系,但是模型估计出的参数结果及其显著水平似乎并不能直观地反映这种影响关系,而要想直观地呈现这种关系,就需要使用本篇介绍的「脉冲响应函数」(impulse r…

鸢尾花数据集可视化

Iris数据集 Iris数据集包含有四个属性一个标签 四个属性分别是 花萼(Sepall)长度花萼宽度花瓣(Petal)长度花瓣宽度 一个标签,用来说明是哪一种鸢尾花 山鸢尾(Setosa)变色鸢尾(versicolor)维吉尼亚鸢尾(virginica) 目标 任意两个不同的…

鸢尾花数据集分类--神经网络

1.1 鸢尾花数据集介绍 iris数据集是用来给莺尾花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征,我们需要建立一个分类器,该分类器可通过样本的四个特征来来判断样本属于山鸢尾(Setosa&#xff0…

机器学习鸢尾花数据集分析

目录 1 sklearn数据集的使用2 sklearn数据集返回值介绍3 查看数据分布4 数据集的划分5 总结 1 sklearn数据集的使用 鸢尾属(拉丁学名:Iris L.)是单子叶植物纲,鸢尾科多年生草本植物,有块茎或匍匐状根茎;叶…

决策树可视化:鸢尾花数据集分类(附代码数据集)

决策树 数据集实战可视化评价 决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,流程图就是一种决策树。 有没有车,没车的话有没有房,没房的话有没有存款,没存款pass。这个流程就是…