• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Matlab
  • 标签: Kalman  

资源简介

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)

评论

共有 条评论