傅里叶、拉普拉斯、Z变换这一串

📶 三大变换的数学推导过程 $\mathscr{F,L,Z}$傅里叶变换、拉普拉斯变换、Z 变换这三大变换讨论广泛1。个人理解,这三个变换都是为了简化一些难以在时间域分析的问题而引入的。 拉普拉斯变换是对傅里叶变换的推广,忽略了时域信号时间为负的部分,使得变换也可以适用于$t\rightarrow +\infty$不为零的信号 Z 变换是拉普拉斯变换针对离散信号的简化,使得表达式更加便于分析 傅里叶变换 拉普拉斯变换 $Z$变换 表达式 $F(\omega)=\int_{-\infty}^{\infty}f(t)e^{-j\omega t}\mathrm{d} t$ $F(s)=\int_0^\infty f(t)e^{-st}\mathrm{d}t$ $F(z)=\sum\limits_{k=0}^{\infty}f(kT)z^{-k}$ 适用范围 狄利克雷条件 狄利克雷条件的前两条 前者+(时间)离散 变换域 频域 复(频)域 $Z$域 对应系统模型 频率特性 传递函数 脉冲传递函数 数学演变过程 周期函数的傅里叶级数 周期为 T 的任一周期函数$f(t)$,若满足下列狄利克雷条件(Dirichlet conditions2): 在一个周期内只有有限个不连续点 在一个周期内只有有限个极值点(注:函数连续是条件 1、2 的充分非必要条件) 周期内绝对可积:积分$\int^{\frac{T}{2}}_{-\frac{T}{2}} |f(t)| \mathrm{d}t$ 存在 则$f(t)$可展开为如下的傅里叶级数: $$ f(t)=\frac{1}{2} a_0 + \sum\limits_{n=1}^{\infty} (a_n \cos{n\omega_0 t}+b_n\sin{n \omega_0 t}) $$式中,系数$a_n$和$b_n$由欧拉—傅里叶系数公式给出,其中$\omega_0=\frac{2\pi}{T}$称为角频率。 $$ a_n=\frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \cos{n \omega_0 t}\mathrm{d} t, n=0,1,2,\dots,\infty $$$$ b_n=\frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \sin{n \omega_0 t}\mathrm{d} t, n=1,2,\dots,\infty $$推导3:分别对$f(x),f(x)\cos kx, f(x)\sin kx$在周期$[-\frac{T}{2},\frac{T}{2}]$上积分。 ...

August 30, 2021 · 2 min · Leo

控制系统中对信号求导的注意事项

线性定常系统的重要特性引发的思考 女朋友在阅读胡寿松第六版《自动控制原理》时有一个困惑。为什么书中 P71 页表 3-2 中的阶跃信号1,求导之后消失了,而不是作为单位脉冲信号$\delta(t)$处理。难道这里的1视为常数,这样就与零初始条件矛盾了。 书中的表 3-2 一阶系统对典型输入信号的输出响应如下: 输入信号 输出响应 $1(t)$ $1-e^{-t/T}, t \ge 0$ $\delta(t)$ $\frac{1}{T}e^{-t/T}, t\ge 0$ 书中由此得出线性定常系统的一个重要特性:系统对输入信号导数的响应,就等于系统对输入信号响应的导数。 也就是说第二行脉冲响应应该是第一行阶跃响应的导数,但是这里为什么1对应的导数$\delta(t)$没有了呢? 答:因为后面的指数项$e^{-t/T},t \ge 0$,在零初始条件下还需要乘以一个$u(t)$,根据求导的乘法公式求导之后会出现一个$\delta(t)$,从而相互抵消。 将阶跃响应写成如下形式: $$ 1-e^{-t/T}(t \ge 0)=1(t)-e^{-t/T}\times 1(t) $$对阶跃响应求导: $$ \begin{aligned} \frac{\mathrm{d}}{\mathrm{d}t} [&1(t)-e^{-t/T}\times 1(t)] \\ =&\delta(t)- \frac{\mathrm{d}}{\mathrm{d}t}[e^{-t/T}1(t)] \\ =&\delta(t)- [\frac{\mathrm{d}}{\mathrm{d}t}e^{-t/T}\times1(t)+e^{-t/T}\times \frac{\mathrm{d}}{\mathrm{d}t} 1(t)] \\ =&\delta(t) -[-\frac{1}{T}e^{-t/T}\times 1(t)+e^{-t/T}\times \delta(t)] \\ =&\delta(t)- [-\frac{1}{T}e^{-t/T}\times 1(t)+\delta(t)] \\ =&\frac{1}{T}e^{-t/T}\times1(t) \end{aligned} $$结果即为$\frac{1}{T}e^{-t/T}, t\ge 0$。 一般化 已知线性定常系统的零初始条件下的阶跃响应为$h(t), t\ge 0$,求解系统传递函数. 拉式变换法 输入和输出的拉氏变换后的象函数分别为 $$ R(s)=\frac{1}{s},C(s)=H(s) $$于是传递函数可以写成: ...

August 28, 2021 · 1 min · Leo

t<0是哲学家思考的问题--控制系统分析时一般信号都需要乘上一个阶跃u(t)

线性定常系统的重要特性引发的思考 女朋友在阅读胡寿松第六版《自动控制原理》时有一个困惑。为什么书中 P71 页表 3-2 中的阶跃信号1,求导之后消失了,而不是作为单位脉冲信号$\delta(t)$处理。难道这里的1视为常数,这样就与零初始条件矛盾了。 书中的表 3-2 一阶系统对典型输入信号的输出响应如下: 输入信号 输出响应 $1(t)$ $1-e^{-t/T}, t \ge 0$ $\delta(t)$ $\frac{1}{T}e^{-t/T}, t\ge 0$ 书中由此得出线性定常系统的一个重要特性:系统对输入信号导数的响应,就等于系统对输入信号响应的导数。 也就是说第二行脉冲响应应该是第一行阶跃响应的导数,但是这里为什么1对应的导数$\delta(t)$没有了呢? 答:因为后面的指数项$e^{-t/T},t \ge 0$,在零初始条件下还需要乘以一个$u(t)$,根据求导的乘法公式求导之后会出现一个$\delta(t)$,从而相互抵消。 将阶跃响应写成如下形式: $$ 1-e^{-t/T}(t \ge 0)=1(t)-e^{-t/T}\times 1(t) $$对阶跃响应求导: $$ \begin{aligned} \frac{\mathrm{d}}{\mathrm{d}t} [&1(t)-e^{-t/T}\times 1(t)] \\ =&\delta(t)- \frac{\mathrm{d}}{\mathrm{d}t}[e^{-t/T}1(t)] \\ =&\delta(t)- [\frac{\mathrm{d}}{\mathrm{d}t}e^{-t/T}\times1(t)+e^{-t/T}\times \frac{\mathrm{d}}{\mathrm{d}t} 1(t)] \\ =&\delta(t) -[-\frac{1}{T}e^{-t/T}\times 1(t)+e^{-t/T}\times \delta(t)] \\ =&\delta(t)- [-\frac{1}{T}e^{-t/T}\times 1(t)+\delta(t)] \\ =&\frac{1}{T}e^{-t/T}\times1(t) \end{aligned} $$结果即为$\frac{1}{T}e^{-t/T}, t\ge 0$。 一般化 已知线性定常系统的零初始条件下的阶跃响应为$h(t), t\ge 0$,求解系统传递函数. 拉式变换法 输入和输出的拉氏变换后的象函数分别为 $$ R(s)=\frac{1}{s},C(s)=H(s) $$于是传递函数可以写成: ...

August 28, 2021 · 1 min · Leo

Git常用拓展知识

Some Tips for git links git commit 提交规范 Conventional Commits 约定式提交: 本文 gitmoji 使用表情来规范 commit 消息: one fork LGTM : code review 行话:本文 Tip1: Commit 规范中常用 commit 类型解释 feat: 新功能、新特性 fix: 修改 bug perf: 更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化) refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改) docs: 文档修改 style: 代码格式修改, 注意不是 css 修改(例如分号修改) test: 测试用例新增、修改 build: 影响项目构建或依赖项修改 revert: 恢复上一次提交 ci: 持续集成相关文件修改 chore: 其他修改(不在上述类型中的修改) release: 发布新版本 workflow: 工作流相关文件修改 typo:拼写错误等小错误 Tip2:code Review 行话 PR: Pull Request. 拉取请求,给其他项目提交代码 LGTM: Looks Good To Me. 朕知道了 代码已经过 review,可以合并 SGTM: Sounds Good To Me. 和上面那句意思差不多,也是已经通过了 review 的意思 WIP: Work In Progress. 传说中提 PR 的最佳实践是,如果你有个改动很大的 PR,可以在写了一部分的情况下先提交,但是在标题里写- `上 WIP,以告诉项目维护者这个功能还未完成,方便维护者提前 review 部分提交的代码。 PTAL: Please Take A Look. 你来瞅瞅?用来提示别人来看一下 TBR: To Be Reviewed. 提示维护者进行 review TL;DR: Too Long; Didn’t Read. 太长懒得看。也有很多文档在做简略描述之前会写这么一句 TBD: To Be Done(or Defined/Discussed/Decided/Determined).根据语境不同意义有所区别,但一般都是还没搞定的意思 Tips3: 一些个人感悟 变量名直观一点,不要害怕太长 人类创造编程语言,就是为了方便人类编写与理解,大部分语言编译器都会做相关的优化的 git 仓库也真的不在乎多那么几个字节,github 大小也没有限制,浅克隆问题也不大 主分支不用,其他分支少用git push -f,提交历史没有必要太好看 同上 2,多几个 commit 没什么大不了的 个人项目单分支模型就可以了,用太多分支往往徒增烦恼(这条不绝对,要看具体情况)

July 25, 2021 · 1 min · xsro

Git常用拓展知识

Git 常用的一些拓展知识,例如commit message提交消息的规范, Code Review 行话, 以及一些个人感悟。 Some Tips for git links git commit 提交规范 Conventional Commits 约定式提交 gitmoji 使用表情来规范 commit 消息: one fork LGTM : code review 行话 Tip1 = Commit 规范中常用 commit 类型解释 feat: 新功能、新特性 fix: 修改 bug perf: 更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化) refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改) docs: 文档修改 style: 代码格式修改, 注意不是 css 修改(例如分号修改) test: 测试用例新增、修改 build: 影响项目构建或依赖项修改 revert: 恢复上一次提交 ci: 持续集成相关文件修改 chore: 其他修改(不在上述类型中的修改) release: 发布新版本 workflow: 工作流相关文件修改 typo:拼写错误等小错误 Tip2:code Review 行话 PR: Pull Request. 拉取请求,给其他项目提交代码 LGTM: Looks Good To Me. 朕知道了 代码已经过 review,可以合并 SGTM: Sounds Good To Me. 和上面那句意思差不多,也是已经通过了 review 的意思 WIP: Work In Progress. 传说中提 PR 的最佳实践是,如果你有个改动很大的 PR,可以在写了一部分的情况下先提交,但是在标题里写- `上 WIP,以告诉项目维护者这个功能还未完成,方便维护者提前 review 部分提交的代码。 PTAL: Please Take A Look. 你来瞅瞅?用来提示别人来看一下 TBR: To Be Reviewed. 提示维护者进行 review TL;DR = Too Long; Didn’t Read. 太长懒得看。也有很多文档在做简略描述之前会写这么一句 TBD: To Be Done(or Defined/Discussed/Decided/Determined).根据语境不同意义有所区别,但一般都是还没搞定的意思 Tips3 = 一些个人感悟 变量名直观一点,不要害怕太长 人类创造编程语言,就是为了方便人类编写与理解,大部分语言编译器都会做相关的优化的 git 仓库也真的不在乎多那么几个字节,github 大小也没有限制,浅克隆问题也不大 主分支不用,其他分支少用git push -f,提交历史没有必要太好看 同上 2,多几个 commit 没什么大不了的 个人项目单分支模型就可以了,用太多分支往往徒增烦恼(这条不绝对,要看具体情况)

July 25, 2021 · 1 min · Leo