資源簡介
Kalman濾波算法S-Function程序,主要完成電池SOC估計。
代碼片段和文件信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%S函數實現對輸入信號Kalman濾波
function[sysx0strts]=SimuKalmanFilter(txuflag)
%輸入參數
%????t、x、u、分別對應時間、狀態、輸入信號
%????flag為標志位,其,取值不同,s函數執行的任務和返回的數據也是不同的
%輸出參數
%????sys為一個通用的返回參數值,其數值根據flag的不同而不同
%????x0位狀態初始數值
%????str在目前為止的MATLAB版本中并沒有什么作用,一般str=[]即可
%????ts為一個兩列的矩陣,包含采樣時間和偏移量兩個參數
switch?flag
????case?0??%?系統進行初始化,調用mdlInitializeSizes函數
????????[sysx0strts]=mdlInitializeSizes;
????case?1??%?計算連續狀態變量的導數,調用mdlDerivatives函數
????????sys=mdlDerivatives(txu);
????case?2??%?更新離散狀態變量,調用mdlUpdate函數
????????sys=mdlUpdate(txu);
????case?3??%?計算s函數的輸出,調用mdlOutputs
????????sys=mdlOutputs(txy);
????case?4??%?計算下一仿真時刻
????????sys=mdlGetTimeOfNextVarHit(txu);
????case?9??%?仿真結束,調用mdlTerminate函數
????????sys=mdlTerminate(txu);
????otherwise??%?其他未知情況處理,用戶可以自定義
????????error([‘Unhandled?flag=‘num2str(flag)]);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1.?系統初始化子函數
function[sysx0strts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates??=0;
sizes.NumDiscStates??=1;
sizes.NumOutputs?????=1;
sizes.NumInputs??????=1;
sizes.DirFeedthrough?=1;
sizes.NumSampleTimes?=1;????%至少需要的采樣時間
sys=simsizes(sizes);
x0??=5000+sqrt(5)
評論
共有 條評論