本文主要是介绍基于视频的电熔镁炉工况识别系统→2.模型建立,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于视频的电熔镁炉工况识别系统→2.模型建立
《基于视频的电熔镁炉工况识别系统→2.模型建立》
- 该系统是一个高斯白噪声所驱动的一阶ARMA模型很多文献都这么写,且噪声,
- LDS_model.m
- imput:furnace_patches_724.mat
- output: _n=20_nv=1_724.mat 724个视频的 A B C X C0=Ymean=w[k] Q
- 调用suboptimalSystemID来求解模型参数
参数求解过程 | 代码 |
---|
- 构建输入序列矩阵、去均值
- 每一列是每帧的外观特征,反映外观信息
- m:视频一帧的特征数 17884
- τ: 视频帧数 50
| input:dataMatrix 68*263*50 - 将dataMatrix变为17884*50维
| F = size(dataMatrix,3);if (size(dataMatrix,3)~=1)I = double(reshape(dataMatrix,[],F));
elseF = size(dataMatrix,2);I = double(dataMatrix);
end | - 去均值
| C0 = mean(I,2);
Y = I - repmat(C0,1,F); |
|
- 选择状态维数 ,估计观测矩阵C。
- 每一列是每帧的状态特征,反映动态信息:
| | [U,S,V] = svd(Y,0);
C = U(:,1:n);
X = S(1:n,1:n)*V(:,1:n)'; |
|
- 估计状态转移矩阵A并进行正则化
- 这里的逆是伪逆
- A除以A的谱半径
| | A = X(:,2:F)*pinv(X(:,1:(F-1))); | | e = eig(A);
e = abs(e);
target = 0.9999;
if any(e>=target)spectral_radius = max(e);A = A*target/spectral_radius;
end |
|
- 估计输入矩阵B
- ,所以说B是S的一部分
- 1.S的每一列代表1个样本,且~N(0,Q),即均值为0 2.因此协方差矩阵这样写
- 由于,所以可以估计
- n×(τ-1)=n×n × n×(τ-1) × (τ-1)×(τ-1) 因为n<τ-1
- n×nv × nv×nv
| | S = X(:,2:F) - A*X(:,1:(F-1));
[Uv,Sv,Vv] = svd(S,0);
B = Uv(:,1:nv)*Sv(1:nv,1:nv)./sqrt(F-1);
Q = B*B'; |
|
这篇关于基于视频的电熔镁炉工况识别系统→2.模型建立的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!