一、传递函数的定义
在工程中,传递函数(也称系统函数、转移函数或网络函数,画出的曲线叫做传递曲线)是用来拟合或描述黑箱模型(系统)的输入与输出之间关系的数学表示。通常它是零初始条件和零平衡点下,以空间或时间频率为变量表示的线性时不变系统(LTI)的输入与输出之间的关系。然而一些资料来源中用“传递函数”直接表示某些物理量输入输出的特性,(例如二端口网络中的输出电压作为输入电压的一个函数)而不使用变换到S平面上的结果。
传递函数通常用于分析诸如单输入、单输出的滤波器系统中,主要用在信号处理、通信理论、控制理论。这个术语经常专门用于如本文所述的线性时不变系统(LTI)。实际系统基本都有非线性的输入输出特性,但是许多系统在标称参数范围内的运行状态非常接近于线性,所以实际应用中完全可以应用线性时不变系统理论表示其输入输出行为。
简单说明一下,下面的描述都是以复数为变量的。在许多应用中,足以限定(于是),从而将含有复参数的拉普拉斯变换简化为实参的傅里叶变换。
那么,对于最简单的连续时间输入信号和输出信号来说,传递函数所反映的就是零状态条件下输入信号的拉普拉斯变换与输出信号的拉普拉斯变换之间的线性映射关系:
或者
在离散时间系统中,应用Z变换,传递函数可以类似地表示成
这常常被称为脉冲传递函数。
从微分方程直接推导
考虑一个常系数线性微分方程
其中 u和 r是 t的适当的光滑函数。L是相关函数空间上定义的,将 u变换为 r的算子。这种方程可以用于以强迫函数 r为变量约束输出函数 u。传递函数写成算子的形式,是 L的右逆,因为。
这个常系数齐次微分方程的解可以通过尝试找到。这个代换会产生特征多项式
在输入函数 r的形式也为的时候,非齐次的情形也可以很容易的解决。在那种情况下,通过代入就可以发现当且仅当
把那当作传递函数的定义需要注意区分实数和复数的差异。这是受到 abs(H(s))表示增益,而用-atan(H(s))表示相位滞后惯例的影响。传递函数的其他定义还有例如。
二、TCL编程的语法规则
TCL的语法规则:
1、解释器
在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。
2、数据类型
Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。这是它比较有特点的方面字符串有三种形式:命令(command),表达式(expresion)和表(list)。
3、Basic Command Syntax基本语法
Tcl有类似于shell和lisp的语法,当然也有许多的不同。一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。
例如:
set a 22//相当于C中的 a=22 a是一个变量这条命令分为三个域:1:set 2:a 3:22 set使用于设置变量的值的命令,a、20作为参数来传给它,a使它要操作的变量名,22是要付给的a值。
Tcl的命令名可以是内置的命令也可以是用户建的新命令,如果是用户用户建的新命令应用程序中用函数Tcl_CreateCommand来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必须被打全,但 Tcl解释器找不到一同名的命令时会用 unknown命令来代替。
在很多场合下,unknown会在库目录中搜寻,找到一个的话,会自动生成一个Tcl命令并调用它。unknown经常完成缩略的命令名的执行。但最好不要使用。
4、注释
和shell很象,第一个字母是"#"的Tcl字符串是注释。
其他细节规则
Grouping arguments with double-quotes用双引号来集群参数,目的在于使用有空白的参数。
例如:
set a"this string contains whitespace"
如果一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。
Variable substitution with$用美元符进行变量替换说白了就是引用该变量。
例如:
set a hello
set b$a// b="hello"实际上传给set命令的参数
//是b,"hello"
set c a// b="a"
Command substitution with brackets命令子替换(用方括号)
例如:
set a [set b"hello"]
实现执行 set b"hello"并用其结果来替换源命令中的方括号部分,产生一条新命令
set a"hello"//"hello"为 set b"hello"的返回值
最终的结果是b="hello" a="hello"
当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为Tcl命令。
如下一个复杂一点的例子:
set a xyz[set b"abc"].[set c"def"]
//return xyzabcdef
Backslash substitution转移符替换
转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与C语言中的一样。
Backspace(0x8).
f Form feed(0xc).
Newline(0xa).
Carriage-return(0xd).
Tab(0x9).
v Vertical tab(0xb).
{ Left brace(`{").
} Right brace(`}").
[ Open bracket(`[").
] Close bracket(`]").
$ Dollar sign(`$").
sp Space(`"): does not terminate argument.
; Semicolon: does not terminate command.
" Double-quote.
Grouping arguments with braces用花扩括号来集群参数
用花扩括号来集群参数与用双引号来集群参数的区别在于:用花扩括号来集群参数其中的三种上述的子替换不被执行。而且可以嵌套。
例如:
set a{xyz a{b c d}}//set收到两个参数 a"xyz a{b c d}"
eval{
set a 22
set b 33
}//eval收到一个参数"set a 22
set b 33"
5、命令综述
1.一个命令就是一个字符串(string)。
2.命令是用换行符或分号来分隔的。
3.一个命令由许多的域组成。第一个于是命令名,其它的域作为参数来传递。
4.域通常是有空白(Tab横向制表健 Space空格)来分开的。
5.双引号可以使一个参数包括换行符或分号。三种子替换仍然发生。
6.花括号类似于双引号,只是不进行三总体换。
7.系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。
8.如果第一个非控字符是`#",这一行的所有东西都是注释。
6、表达式
对字符串的一种解释是表达式。几个命令将其参数按表达式处理,如:expr、for和 if,并调用Tcl表达式处理器(Tcl_ExprLong,Tcl_ExprBoolean等)来处理它们。其中的运算符与C语言的很相似。
!
逻辑非
*/%+-
<>>
左移右移只能用于整数。
>===!=
逻辑比较
& ^|
位运算和异或或
&&''
逻辑"和""或"
x y: z
If-then-else与C的一样
Tcl中的逻辑真为1,逻辑假为0。
一些例子:
5./ 4.0
5./( [string length"abcd"]+ 0.0)
计算字符串的长度转化为浮点数来计算
"0x03">"2"
"0y"<"0x12"
都返回 1
set a 1
expr$a+2
expr 1+2
都返回 3
三、DB2中建立存储过程的详细参数和语法
DECLARE CHOICE2 CURSOR WITH RETURN TO CALLER FOR--声明游标 CHOICE2
SELECT COMPANYID,DEPTID,SEQID,SUBMITTIME,SUBMITDATE,
B.GRADEDESC HYEAR,PRODUCTID,PRODUCTCODE,PRODUCTDESC,
A.GRADEID,PRICE,SFZDPY,LQUANT,MQUANT,MCQUANT,LCQUANT,
UQUANT,OTHQUANT1,OTHQUANT2,OTHQUANT3,OTHQUANT4,EMP1,EMP2,STATUS,A.REMARK,
DECIMAL(ABS(MCQUANT-MQUANT)/NULLIF(MQUANT,0)*100,10,2)TAG
FROM T_SUPPLY_PPB_HY A
LEFT JOIN T_SUPPLY_GRADATION B ON A.GRADEID=B.GRADEID
WHERE HYEAR=TO_CHAR(P_NF)||P_BN
ORDER BY B.GRADEID,PRODUCTCODE,A.PRICE;
--1.DECIMAL(P,S)十进制数,小数点位置由数字的精度(P)和小数位(S)确定。
--精度是数字的总位数,必须小于32。小数位是小数部分数字的位数且总是小于或等于精度值。
--如果未指定精度和小数位,则十进制值的缺省精度为5,缺省小数位为0。
--2.语法:NULLIF( expression, expression)
-- expression:(常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组)
--如果两个表达式不相等,NULLIF返回第一个 expression的值。如果相等,NULLIF返回第一个 expression类型的空值。如果两个表达式相等且结果表达式为 NULL,NULLIF等价于 CASE的搜索函数。