matlab中的iddata函数的初步理解和程序举例
一、iddata函数功能
iddata函数常用于系统识别分析领域数据分析方面。该函数在时域或频域中,将用于系统识别的输入输出数据及其特性数据的生成对象数据类型。即,可以使用iddata函数封装要标识的系统的输入和输出测量数据。
系统识别函数使用这些测量值来估计一个模型。模型检验函数使用输入测量值为模拟提供输入,模型检验函数使用输出测量值来比较,所估计的模型响应与原始数据的拟合程度如何。
iddata对象可以包含单个测量集,也可以包含多个测量集。每组数据对应一个实验。
这些对象具有以下特性,这些特性包含在对象特性:
(1)数据可以在频域中,也可以在时域中。您可以将对象从一个域转换到另一个域。
(2)在时域中,可以对数据进行均匀或非均匀采样。然而,要使用iddata对象进行估计,必须对数据进行均匀采样,并且必须在同一时刻记录每个实验的输入和输出数据。
(3)可以指定数据特性,例如采样时间、开始时间、时间点、频率采样点和采样间行为。
(4)可以提供标签和注释来区分和注释数据组件、实验和整个对象。
二、语法
2.1 语法1: data = iddata(y,u,Ts)
data = iddata(y,u,Ts)创建一个iddata对象,该对象包括时域输出信号y,输入信号u。Ts指定实验数据的采样间隔时间。
举例1:输入U和输出Y为列向量的情况
clc
clear
closefs=500;
dt=1/fs;
t=0:dt:0.3;
t=t'; % 转换为列向量
U=10*sin(2*pi*10*t);
Noise = 5*rand(length(U),1)-2.5;
Y=U+Noise;
Ts=dt;
zsm_data = iddata(Y,U,Ts);
figure(1)
plot(t,U,t,Y)
legend('U','Y')
title('合成的U和Y的绘图')
figure(2)
plot(zsm_data)
title('合成的U和Y经过iddata生成的数据的绘图')
运行结果:
图3 例1合成的U和Y经过iddata生成的数据的绘图
例子2:输入U和输出Y为行向量的情况
clc
clear
closefs=500;
dt=1/fs;
t=0:dt:1;
U=10*sin(2*pi*10*t);
Noise = 5*rand(1,length(U))-2.5;
Y=U+Noise;
Ts=1
zsm_data = iddata(Y,U,Ts);
figure(1)
plot(t,U,t,Y)
legend('U','Y')
运行结果:
图4 例2iddata函数生成的对象
对比例子1和例子2可知:
(1)data = iddata(y,u,Ts)中,y,u是列向量和行向量生成的data中y的个数和样本点数的结果有很大不同。
(2)输入时候,y,u一般以列向量进行输入,比如例子1,样本点有151个,输入为u1,输出为y1.
2.2 语法2 data = iddata(output,input,0.08,‘ExperimentName’,‘实验名称’)
举例:
clc
clear
closefs=500;
dt=1/fs;
t=0:dt:0.2;
t=t'; % 转换为列向量
U=10*sin(2*pi*10*t);
Noise = 5*rand(length(U),1)-2.5;
Y=U+Noise;
Ts=dt;
zsm_data = iddata(Y,U,Ts,'ExperimentName','电压测量实验1');
图6 附带实验名称的iddta数据产生