%%%% 传递函数 %%%%
sys=tf([0 50],[1000,1],'inputdelay',100);
%%% 对传递函数进行离散化 %%%%
dsys=c2d(sys,ts,'zoh'); %%%% dsys为离散化得到的方程 %%%%
[num,den]=tfdata(dsys,'v'); %%%% num 为分子系数,den 为分母系数 %%%%
%%%% 设定初值y,由于滞后,故y的输出在刚开始有输入的滞后时间内为零 %%%%%
for k=1:101
y(k)=0;
end
%%%% 输入 u 为一组伪随机数 %%%%%%
。。。。。。。。随机序列可以自己用想用。。。。。
接下来弄一个循环:每一个y(k)就可以的得到
y(k+101)=-den(2)y11(k+100)+num(2)u(k);
希望对你有帮助。
1/4
varargin可以理解为一个可变的元胞数组,可储存函数的所有输入参数,并可以通过参数位置来读取,读取方式为varargin{i},i表示第i个参数,如下图的一个查表函数,就可以通过可变参数来定义算法
2/4
nargin 在当前函数内使用,就可以统计当前函数的参数个数
3/4
做个简单的函数,做示例,实现功能:根据函数输入参数(数值或字符串),在命令窗口输出函数的个数和具体参数名,函数代码内容如下:
4/4
进行任意测试,体会下varargin的用法,学以致用(^▽^)
差分变换法。
当模拟调节器采用微分方程来表示时,其导数可以用差分方程近似。假设通过模拟化的设计方法得到了一个控制器的传递函数,首先将传递函数转化成相应的微分方程通过常用的差分近似方法对导数进行离散化,常用的差分近似有前向差分和后向差分两种。
matlab实现传递函数的Z变换
matlab实现传递函数的Z变换,浅谈传递函数、Z变换与差分方程之间的转化
在我们进行PID控制器或现代控制理论设计时,经常遇到三者之间的转换,下面将阐述一下如何在MATLAB上 *** 作。
注意!下面所有的“”即半角单引号,都被替换成了星号,所以务必注意!!
1、传递函数的形式
假设传递函数为:G(s)=exp^(-0004s)400/(s^2+50s);
其中^后表示指数,如:2^3=8;4^2=16;
在matlab里面建立这个传递函数的命令就是:sys=tf(400,[1,50,0],inputdelay,0004);inputdelay两边的号改成半角单引号!!
2、Z函数
把传递函数离散化就得到Z函数,在matlab里面离散化命令是:dsys=c2d(sys,0001,z);z两边的号改成半角单引号!!其中0001为采样时间;
G(z) =z^(-4) ( 00001967 z + 00001935)/( z^2 - 1951 z + 09512)
= z^(-4) [00001967z ^(-1)+ 00001935z^(-2)]/[ 1 - 1951 z^(-1) + 09512z^(-2)] =Y(z)/U(z)……(2)式
(2)式可写成:
z^(-4) [00001967 z ^(-1)+ 00001935z^(-2)] U(z) = [ 1 - 1951 z^(-1) + 09512z^(-2)] Y(z) (3)式
3、差分方程形式
由(3)式可得
[00001967 z ^(-5)+ 00001935z^(-6)]U(z) = [ 1 - 1951 z^(-1) + 09512z^(-2)] Y(z)(4)式把(4)式的z^(-n)中的(-n)写成(k-n),
如左边的z^(-5)U(z)可写成u(k-5),右边的z^(-1)Y(z)可写成y(k-1),
可得:
00001967 u(k-5)+ 00001935u(k-6)= y(k) - 1951 y(k-1) + 09512y(k-2) (5)式
由(5)式得
y(k) = 1951 y(k-1) - 09512y(k-2)+00001967 u(k-5)+ 00001935u(k-6)
即差分方程形式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)