1.阶跃信号高通滤波仿真验证
首先针对三阶高通滤波器进行线性系统的仿真验证
仿真结果如下,阶跃信号经过三阶滤波,在进行二重积分可以复位到初始水平
2.传递函数离散化处理
2.1首先将传递函数转化为状态空间方程
借助MATLAB工具求解
>> sys=tf([1 0 0 0],[1 4 5 2])
sys =
s^3
---------------------
s^3 + 4 s^2 + 5 s + 2
Continuous-time transfer function.
>> [A B C D]=tf2ss([1 0 0 0],[1 4 5 2])
A =
-4 -5 -2
1 0 0
0 1 0
B =
1
0
0
C =
-4 -5 -2
D =
1
>>
所以状态空间方程为
2.2将上述状态方程离散化
写出matlab function模块代码如下
x=x+Ts乘X导数
function y = fcn(u,Ts)
persistent x1 x2 x3;
if isempty(x1)
x1=0;
end
if isempty(x2)
x2=0;
end
if isempty(x3)
x3=0;
end
x3 = x3 + Ts*x2;
x2 = x2 + Ts*x1;
x1 = x1 + Ts*(-4*x1-5*x2-2*x3+u);
y = -4*x1-5*x2-2*x3+u;
end
算法框图如下:
设置固定步长执行:
2.3离散状态下的仿真结果
可以看出离散状态下的仿真结果与线性状态下的结果完全一样
3.C++代码生成
3.1算法模型调整
修改输入输出引脚
3.2修改代码生成设置
改成嵌入式代码生成,生成C++代码
生成报告
3.3代码生成
快捷键 Ctrl+B
或者
最终生成的代码如下: