系统识别的工作流程
识别是根据实验数据构建动态对象数学模型的过程。
    In [ ]:
Pkg.add(["DataFrames", "CSV", "ControlSystemIdentification"])
using DataFrames, CSV, ControlSystemIdentification;
一个近似的识别工作流程看起来像这样:
首先,您需要进行实验以收集系统数据。 然后我们选择模型的结构,我们希望适合这些数据和识别算法。 接下来,将获得的数据"调整"到所选择的结构。 将根据验证数据集检查识别结果。 如果识别结果不能令人满意,则需要返回并更改模型的结构或识别算法。
收集实验数据
首先,必须获得实验数据以进行鉴定。 在本例中,实验数据从CSV文件上传到Engee。 我们将实验数据分为两部分:第一部分用于鉴定,第二部分用于验证。
    In [ ]:
Import_data = "data.csv" 
table = CSV.read(Import_data, DataFrame);
inputdata = Float64.(table[:, 2]); 
outputdata = Float64.(table[:, 3]);
识别数据:
    In [ ]:
Ts = 0.1;
identdata  = iddata(outputdata[1:Int32(end/2)], inputdata[1:Int32(end/2)], Ts);   
plot(identdata)     
Out[0]:
验证数据:
    In [ ]:
valdata  = iddata(outputdata[Int32(end/2):end], inputdata[Int32(end/2):end], Ts);   
plot(valdata)   
Out[0]:
模型结构选择与识别
我们将在状态空间中识别线性静止系统。 首先,让我们选择系统等于1的顺序。
    In [ ]:
nx = 1; # порядок системы
res = subspaceid(identdata, nx; verbose=true)
Out[0]:
模型的验证
    In [ ]:
simplot(valdata, res) 
Out[0]:
正如我们所看到的,所识别的模型不能充分再现真实系统的动态。
模型结构修改与识别
让我们退后一步,改变模型的结构。 这次设系统的顺序为2。
    In [ ]:
nx = 2; # порядок системы
res = subspaceid(identdata, nx; verbose=true)
Out[0]:
模型的验证
    In [ ]:
simplot(valdata, res) 
Out[0]:
这一次,我们对识别的准确性感到满意。
结论
在这个例子中,我们熟悉了基于从CSV表中获得的实验数据的系统识别工作流程。