0%

Combined notes for part of EECS 501 & MECHENG 549.
Prerequisites: Knowledge of Elementary Calculus, Linear Algebra and Probability

Discrete-Time Stochastic System

Stochastic Sequences

  • Definition: Given $k\in\mathbb{K}\subseteq\mathbb{Z}$ a sequence of integers, $\mathcal{X}(k,\omega): (\Omega,\mathcal{F},\mathbb{P})\to(\mathbb{R}^n,\mathcal{F}_ \mathcal{X},\mathbb{P}_ \mathcal{X})$ is a random/stochastic sequence.
  • Uncertainties: Consider a casual system $F$ relates some scalar inputs $u(k)$ to output $x(k)$
    • Epistemic/Model uncertainty: $\mathcal{X}(k,\omega)=F(k,u(k),u(k-1),\ldots,\omega)$. (system is stochastic and input is deterministic).
    • Aleatoric/Input uncertainty: $\mathcal{X}(k,\omega)=f(k,U(k,\omega),u(k-1,\omega),\ldots)$ (system is deterministic and input is stochastic).
  • Realization: An outcome $\mathcal{X}(k,\omega)=x(k)$ given $\omega$ is called a realization of stochastic sequence $\mathcal{X}$
  • Terminology and Convention
    • $\mathcal{X}(k,\omega)$ is often written as $\mathcal{X}(k)$ when there’s no ambiguity.
    • $\mathbb{K}=\mathbb{Z}$ if not specified.
    • Sequence over a set $\mathcal{K}_1\subseteq\mathbb{K}$ are denoted $\mathcal{X}(\mathcal{K}_1)$.
    • $\mathcal{X}$ denotes $\mathcal{X}(\mathbb{K})$ if not specified.
    • Consecutive subsequence: $$\mathcal{X}(k:l)=\{\mathcal{X}(k),\mathcal{X}(k+1),\ldots,\mathcal{X}(l)\},\;x(k:l)=\{x(k),x(k+1),\ldots,x(l)\}$$
    • Abbreviations:
      • SS - stochastic sequence
      • IID - independent indentically distributed
Read more »

Notes for EECS 501.

Probability Space

  • Notation: $(\Omega,\mathcal{F},\mathbb{P})$
    • $\Omega$: Sample space
    • $\mathcal{F}$: Event space. Required to be σ-algebra. We often use Borel σ-algebra for continuous $\Omega$).
      • Axioms for σ-algebra
        1. $\mathcal{F}$ is non-empty
        2. $A\in\mathcal{F} \Rightarrow A^C\in\mathcal{F}$ (closed under complement)
        3. $A_i \in\mathcal{F} \Rightarrow \bigcup^\infty_{k=1} A_k \in \mathcal{F}$ (closed under countable union)
      • For continuous case considering interval $\Omega=[a,b]$, $\mathcal{F}_0$ is the set of all subintervals of $\Omega$. Then its Borel σ-algebra is the smallest σ-algebra that contains $\mathcal{F}_0$. Here the $\mathcal{F}_0$ is a semialgebra. We can find a containing σ-algebra for every semialgebra.
      • Axioms for semialgebra
        1. $\emptyset, \Omega \in \mathcal{F}$
        2. $A_i \in\mathcal{F} \Rightarrow \bigcap^n_{k=1} A_k \in \mathcal{F}$ (closed under finite intersections)
        3. $\forall B \in\mathcal{F}, B^C=\bigcup^n_{k=1} A_k$ where $A_i \in \mathcal{F}$
    • $\mathbb{P}$: Probability measure.
      • Axioms for probability measure
        1. $\mathbb{P}(\Omega) = 1$
        2. $\forall A\in\mathcal{F}, \mathbb{P}(A) \geqslant 0$
        3. $A_i, A_j \in\mathcal{F}$ are pairwise disjoint, then $\mathbb{P}(\bigcup^\infty_{k=1}A_k)=\sum^\infty_{k=1}\mathbb{P}(A_k)$
  • Product Space: Probability spaces can be combined using Cartesian product.
  • Independence: $\mathbb{P}(A_{k_1}\cap A_{k_2}\cap …\cap A_{k_l})=\prod_{i=1}^l \mathbb{P}(A_i),\;\forall \{k_i\}_1^l\subset\{ 1…n\}$
  • Conditional probability: $\mathbb{P}\left(A_i \middle| A_j\right)=\mathbb{P}(A_i\cap A_j)/\mathbb{P}(A_j)$
  • Total probability: $\mathbb{P}(B)=\sum_{i=1}^n \mathbb{P}(B\cap A_i)=\sum_{i=1}^n \mathbb{P}\left(B\middle| A_i\right)\mathbb{P}(A_i)$, where $\{A_1,\cdots,A_n\}$ are disjoint and partition of $\Omega$.
  • Bayes’ Rule: $$\mathbb{P}(A_j|B)=\frac{\mathbb{P}(B|A_j)\mathbb{P}(A_j)}{\sum^n_{i=1} \mathbb{P}(B|A_i)\mathbb{P}(A_i)}$$
    • Priori: $\mathbb{P}(B|A_j)$
    • Posteriori: $\mathbb{P}(A_j|B)$
Read more »

搭了一台主机之后由于随身带的Surface性能不够,自然产生了远程桌面的需求。这也是便携办公的一种不错的解决方法:随身带着一个上网本,需要办公时远程连接到主机即可~Windows平台的远程桌面软件除了Windows自带的以外还有Chrome远程桌面TeamViewer等软件。不过Windows远程体验最好的还是系统内置的客户端~本文介绍一下Windows自带远程桌面的配置与使用。

远程桌面的使用

先介绍一下远程桌面的使用,现在假设你已经有一台设置好的远程主机。Windows很早开始就有系统内置的远程桌面客户端,在开始菜单中搜索“Remote Desktop Connection”或者“远程桌面连接”即可。在弹出的窗口中,“计算机”一栏填写远程主机的IP地址或者域名。如果出现连接不上的情况可以先Ping一下远程主机检查网络问题。

Windows远程桌面不仅支持Windows平台,还支持其他主流平台(MacOS)以及移动平台(iOS、Android)等等,在相应的引用商店搜索“Microsoft Remote Desktop”引用即可,连接方式也很简单,输入地址或域名,在必要的情况下输入用户名密码即可。连接上远程桌面后,系统分辨率和DPI会自动调整,你还可以在设置中将声卡、USB等设备投射到远程桌面上。

Read more »

由于最近的几个项目都有接触到Cython的使用,也积累了一些Cython的经验,于是决定把上次的介绍续上(蜜汁发现刚好过了一年。。),将Cython的一些用法记录下来。这一些文章可以作为一些学习的参考,不过kick-start的话还是去看看之前的博文以及官方的例子吧~

Cython对C/C++内置类型的支持

Cython在类型设置上和C/C++是十分相似的,不仅默认支持基本C类型intfloatunsigned long等等以及他们的指针类型,还支持C的structunionenum以及C++的cppclass(即C++中的类)。需要注意的是在Cython中,定义C/C++对象都需要使用cdef关键字,或者使用cpdef关键字定义一个Python封装过的对象。另外Cython还通过ctypedef支持C/C++形式的typedef。下面是一些定义变量的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cdef int i, j, k # i,j,k是C中的int类型
cdef float f, g[42], *h

cdef struct Grail: # C形式的结构体
int age
float volume
cdef Grail *gp # 结构体指针,注意不是cdef struct Grail

cdef enum CheeseState: # C++形式的枚举类
hard = 1
soft = 2
runny = 3

cdef enum: # C形式的匿名枚举
tons_of_spam = 3
  • size_tPy_ssize_t也是受Cython语言支持的类型。如果想使用uint32_t形式的类型,则需要添加from libc.stdint cimport uint32_t形式的语句。
  • 这些变量的作用域定义与Python是相同的,但是cdef定义的对象是不能import到Python代码中的,而cpdef定义的对象则可以。
Read more »

自从小时候我爸往家里买了一台式机,我就一直梦想着哪天自己能按照自己的喜好组一个狂拽炫酷掉渣天的PC,这次这个梦想终于实现了一半(毕竟还是budget)。激动地赶紧写下这篇博客记录一下整个组装的过程,组装好的桌面效果就如下图啦~

选件

选件三十天,装机一小时。其实装电脑搭系统本身很简单,但是之前挑选零件却是最耗时的。在考虑到性能、预算、兼容性、扩展性和外观等因素选择各种零件是个十分耗时的过程。在这里推荐PCPartPicker网站,可以通过筛选来选择各部件,而且还可以进行价格追踪,最关键的一点是可以帮你进行兼容性检查,这就省了很多事以及避免犯错导致的损失。另外,选择部件不要过于听信贴吧论坛上的言论,例如水冷就不一定是好于风冷,关于这些选择可以先看看知乎这篇帖子

Read more »

PowerShell是微软一个非常棒的产品,终于改变了人们对Windows下命令行的一片鄙视。一直以来都很想学学PowerShell,这样我就不用使用Python作为手边的脚本语言了,对进行一些文件操作、系统操作而言PowerShell还是要比Python来的方便。另外由于有不少C#的经验,因此PowerShell能够调用.NET库的特性也能够充分利用起来,并且实际发现C#的经验让我学习PowerShell快了不少(当然使用bash、CMake这些脚本的经验应该也帮上忙了吧)。本文就是一篇针对有C#经验的用户的PowerShell上手教程,当然如果你有F#、IronPython等基于.NET的脚本经验那就更好了。

Note: 后文中PowerShell简称PS。

PowerShell脚本的运行方法

PowerShell本质是一个脚本环境/脚本语言。在PS中,语句从第一行开始依次执行,而不像普通程序一样会有一个显式的程序入口(Entry),并且PS的每一行命令(语句)都不用使用结尾标志(如C家族的;)。因此PS脚本的编写将会非常直观,想要输出Hello World只需一行语句即可:

1
echo "Hello World"

运行一段PS脚本有两种方式,一种是在PS交互命令行中直接将命令输入,例如你可以直接在PS命令行中输入35+2,或者$env:Path.GetType()等复杂语句;另一种则是将脚本写在.ps1文件中,然后运行.ps1文件即可。这与大部分脚本语言运行的方法是一致的。

需要指出的是Windows下PS脚本运行是受到系统的限制的,默认系统配置下,如果再PowerShell窗口中直接运行.ps1脚本,PS会提示File cannot be loaded because running scripts is disabled on this system.。解决这个问题有两种方式

  1. 将系统中Windows PowerShell执行策略改为“Bypass”,这个可以通过在PS中运行以下命令完成

    1
    2
    Set-ExecutionPolicy Bypass -Scope CurrentUser
    Set-ExecutionPolicy Bypass -Scope Process # 仅在当前PS进程中生效。
  2. 使用powershell -noprofile -executionpolicy bypass -file <文件路径> [参数]来运行脚本,这是用户友好的方法。由于该命令可以通过cmd或者PS执行,因此可以通过.bat文件封装这个命令,以达到双击运行的效果。

Read more »

在学校提供免费的Google Drive之后,我安装了Google Drive客户端的File Stream版本。Google Drive有两种客户端,一种是Backup and Sync(自动同步的文件夹),另一种是File Stream(虚拟硬盘)。前者与Onedrive的使用体验非常相似,安装之后在文件浏览器左侧直接会有同步文件夹的入口。而后者则是以虚拟硬盘的形式提供Google Drive的文件访问,让我想起了之前的meepo,可惜现在清华已经不提供meepo服务了。File Stream会在文件管理器中添加新的盘符,用来访问文件,但是却没有像Backup and Sync或者Dropbox那样把快捷入口添加到文件浏览器左侧。本文将分享一个将Google Drive添加到文件管理器根空间的方法,效果图如下~

Reg文件导入注册表键值

这个方法来源于一篇博客,只需要将一个注册表文件Google Drive.reg导进注册表即可。不过这个文件是针对Google Drive Sync而不是Google Drive File Stream的,因此需要将里面的exe位置改到你的Drive FS安装的位置,并且还要修改它导向的文件夹路径(默认是G:\My Drive)。与文件浏览器左侧快捷入口有关的注册表键值是HKCU\Software\Classes\CLSID\...\底下的System.IsPinnedToNamespaceTree选项,将这个设置为1即可将COM组件固定在文件浏览器左侧。如果需要将快捷入口去掉,双击运行上文Repo里面的Remove Google Drive.reg删除注册表即可。

Powershell自动脚本

为了省去Google Drive每次更新后手动更改路径的麻烦,我写了一个Powershell脚本,一键添加和删除快捷入口~在Gist上可以下到。使用十分简单,下载后打开命令行输入powershell.exe -noprofile -executionpolicy bypass -file <下载文件的位置>即可将Google Drive添加到左侧快捷入口,运行powershell.exe -noprofile -executionpolicy bypass -file <下载文件的位置> remove即可将快捷入口删除。

提示: 如果下载下来的脚本运行失败的话可能是文件编码问题导致的,请用Notepad++等软件转换为UTF8(BOM)格式

由于没有足够的动力,之前一直没有学LaTeX。苍天饶过谁,这回有一门课强制使用LaTeX交作业,没办法只能装上LaTeX了。如果是在几年前大一大二的时候,我可能还忍不了MiKTeX难用的命令行和WinEdit丑陋的界面,但是现在有了VSCode,一切都变得easy and works like a charm。 本文就讲述如何利用VSCode搭建LaTeX的编辑环境。如果你还没有装VSCode的话就赶紧去官网下载吧~

MiKTeX + LyX

想要使用LaTeX,首先需要安装一个LaTeX发行版,也就是实现LaTeX功能的软件包。著名的发行版有TeX LiveMiKTeXCTeX等。我选择的是MiKTeX,原因有

  1. MiKTeX是老师推荐的发行版
  2. MiKTeX是LyX的默认后端
  3. MiKTeX体积不大而且安装简单

安装有多简单呢:直接从官网下载界面下载对应安装包,双击安装即可。安装过程中的选项可以保持默认。MiKTeX里面有一些包含有Perl脚本,因此建议再给系统装上Perl的运行时。Perl的运行时也有不同的发行版,我选择的是Strawberry Perl。两者都安装完毕后打开命令行,运行latexmk测试MiKTeX是否安装正常。

另外你还可以选择安装LyX,这是一个让你像使用Word一样编写tex的软件,由于我也还没怎么用过,就不详细介绍了。LyX安装包有两种,一种是包含了MiKTeX的安装包的,建议先单独安装MiKTeX,再使用独立安装包安装LyX,便于MikTeX的调试。

Visual Studio Code 插件

VSCode原生只支持.tex文件的高亮,如果想要利用VSCode完成TeX的整个编写流程(编写、预览、编译、发布)就需要安装额外的插件。我使用的是目前做多star的LaTeX Workshop。安装上这个插件后,只要你的系统路径中装有MiKTeX,那么就直接使用了~

常用的操作可以通过左侧的TeX选项卡、左下角的TeX状态按钮或在编辑窗口右键来完成。并且LaTeX Workshop提供的预览功能支持实时更新,在你每次保存.tex文件时它会自动刷新。另外,如果你安装了vscode-pdf插件的话,LaTeX Workshop会提示它已经包含了vscode-pdf的功能重复了,但我感觉如果纯看PDF的话还是用vscode-pdf比较稳定。

一些LaTeX技巧

虽然我也是LaTeX新手,但是从Word转换过来时还是有不少操作比较不直观,因此在这里提一些我用到的技巧:

  • 利用.pgf格式的图片可以使得Matplotlib出的图与LaTeX无缝集成

    在LaTeX中使用pgf格式图片需要引用pgfplots库:\usepackage{pgfplots}

  • 在LaTeX中打单边的括号可以使用\left$\right$,其中"$“代表括号,如果只有单边的话另一边的”$“使用”."替代

    LaTeX中\left{ \right.的效果等价于word中{ \close


我的其他博文: 关于Visual Studio Code的其他插件可以参考VSCode插件推荐,关于Word中公式的输入技巧则可以参见快速输入数学公式

自己的笔记本已经用了快4年了,硬盘除了不小的问题,存资料不放心、玩游戏不给力,因此准备把这台机子变成一个工作专用的机器。另外由于刚来美帝,实验室没有配电脑,我需要一个Linux系统来干活,因此就琢磨着给自己电脑装个Ubuntu双系统。

Ubuntu双系统的安装

先说一下自己电脑的情况。联想Y430P,系统是从OEM版Win8一路升上来的,去年为了Hyper-V重装了Window 10教育版。也就是说这台电脑从到我手上以来未装过Windows以外的系统,因此装双系统需要有一定的调整。Ubuntu双系统的安装主要参照了另一篇博客

给Ubuntu系统腾空间

由于之前系统所有硬盘位置都被分配好了,因此需要先给另一个系统足够的安装空间。重新分配空间在Windows下能够非常方便地通过磁盘管理进行解决。磁盘管理可在任务栏Windows图标右键菜单中打开。腾空间有几种方式:

  1. 插入新的硬盘:如果你舍得花钱或者有闲置盘的话
  2. 删除某一磁盘分区:删除分区不代表数据丢失,只是将磁盘一块区域变成未使用的状态
  3. 压缩已有磁盘分区:在不想移动数据的情况下的选择
Read more »

VST 插件

VST的全称是Virtual Studio Technology,指的是将音色合成器和效果器整合进音频编辑和录制软件的一种软件接口,而VST插件就指的是一些符合这个接口格式的合成器和效果器。很多软件都支持VST插件,如我用过的FL StudioAdobe AuditionOverture等,这些插件可以扩展音色、丰富音乐效果。

Synth (音色合成器)

  • MusicLab Real系列:MusicLab家的RealGuitarRealLPCRealStrat三剑客是著名的吉他音色合成器,不仅音色醇正,而且支持和弦操作
  • HQ Orchestral:罗兰三剑客Hyper CanvasSuper QuartetHQ Orchestra之一,体积很小但却能模拟出很精致的管弦乐音色
  • Massive:电子乐制作中很多大牌音乐人都有用到的合成器,同样是基于三波形合成,但是界面很友好
  • Sylenth1:体积精简的合成器,能仿真出很多音色
Read more »