傅里叶分析(Fourier analysis)基础(2)——Python实现


接着上一篇《傅里叶分析(Fourier analysis)基础(1)——理论》,我们选取scipy.fft)来进行傅里叶分析。 使用 scipy.fft 做傅里叶分析 为了统一符号,接下来我们在notebook中都使用小写变量 $x$ 表示时域信号(函数),大写变量 $X$ 表示频域表征。 首先定义一段时域长度为 $N$ 的时域信号($N=12$): >>> import numpy as np >>> N = 12 >>> x = np.arange(N) >>> x array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) 接下来,使用scipy.fft进行离散傅里叶转换: >>> from scipy.fft import fft >>> X = fft(x) >>> X array([66. -0.j , -6.+22.39230485j, -6.+10.39230485j, -6. +6.j , -6. +3.46410162j, -6. +1.60769515j, -6. -0.j , -6. -1.60769515j, -6.…
Read more ⟶

傅里叶分析(Fourier analysis)基础(1)——理论


傅里叶分析的主要功能是把时域(time domain)信号转换到频域(frequency domain)。翻开高等数学或信号处理的教科书,或者在维基百科搜索“Fourier transform”,很容易找到这样的公式: $$ {\hat {f}}(\xi )=\int _{-\infty }^{\infty }f(x)\ e^{-i2\pi \xi x}\ dx.\label{eq:1}\tag{1} $$ $f(x)$ 是时域信号,$\hat f(\xi)$描述对应的频域分量。$x$表示时间,$\xi$表示频率;若前者单位为秒 sec,则后者单位为赫兹 Hz。 但是这里 $f(x)$ 的定义域是无限的连续域,我们很难直接上手研究它。在全民 Jupyter Notebook 的时代,我们希望 $f(x)$是长成这样的: f = [1.2, 1.3, 2.0, ..., 0.8, 0.9] 这样我们就可以把段有限长度的数组作为时域信号,输入给某个实现了傅里叶转换的软件包,就能得到想要的频率分量了——简单而美好。但是为了实现这个美好的愿望,我们必须把问题定义得更明确:用有限领取代 $(-\infty,\infty)$;用加和$\Sigma$取代积分$\int$;… 所以最终我们要采用的方法,并非原本的傅里叶变换,而是其离散模式 Descrete Fourier Transform (DFT)。 关于为何选取DFT,斯坦福大学音乐与声学计算研究中心 Julius O. Smith III 教授编写的《频谱音频信号处理》(SPECTRAL AUDIO SIGNAL PROCESSING)在线教科书中,提供了非常清晰的指导(原文链接): 表中左上角象限是适用于我们的需求的——时域和频域均为离散且有限。其中,$x(n)$对应 Eq.(1) 中的时域信号$f(x)$,$X(k)$对应频域表征$\hat{f}(\xi)$。这个公式和维基百科“离散傅里叶变换”页面给出的公式 Eq.1 也是一致的: $$ X_{k}=\sum _{n=0}^{N-1}x_n\cdot e^{-\frac{i2\pi}{N}kn}\label{eq:2}\tag{2} $$ 所以,表中的 $\omega_k$ 即对应 Eq.(2) 中的 $\frac{i2\pi}{N}k$,亦即第 $k$ 个频率分量($k\in [0,1,\dots,N-1]$)。从算法的角度,DFT是将长度为 $N$ 的序列 $\{x_n\}:=x_0,x_1,\dots,x_{N-1}$ 转换为等长的序列 $\{X_k\}:=X_0,X_1,\dots,X_{N-1}$。…
Read more ⟶

AI与中小学教育讲座 - 2023年7月


题目:自然语言理解与认知科学发展 时间:2023年7月4日,7月9日。地点:南方科技大学会议中心一楼音乐厅。 讲座 slides 链接…
Read more ⟶

使用ssh钥匙远程登录Linux服务器


第1步:生成ssh公钥和私钥 在本地电脑(MacOS 或者 Linux)的命令行中使用: ssh-keygen 这样就生成了一对私钥和公钥,其默认存储位置为~/.ssh。该目录下的id_rsa为私钥,id_rsa.pub为公钥。此公钥就是用来远程登录的“钥匙”。 第2步:将公钥拷贝到远程服务器 参考此教程 Digital Ocean: How To Configure SSH Key-Based Authentication on a Linux Server。几种方法均可行: 自动拷贝:$ ssh-copy-id username@server_address 将直接把你的 id_rsa.pub 文件内容拷贝到服务器的 ~/.ssh/authorized_keys 文件中。 半自动拷贝:cat ~/.ssh/id_rsa.pub | ssh username@server_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" 手动拷贝:在本地打开 id_rsa.pub 拷贝其内容,用 ssh 远程登录后用文本编辑器新建或者编辑 ~/.ssh/auhtorized_keys,将拷贝内容添加进去。 第3步:登录 此时在本地打开命令行,远程登录服务器: ssh username@server_address 现在不需要手动输入密码就能直接登录了!…
Read more ⟶

配置Linux服务器开发环境 -- zsh


1. Install zsh …
Read more ⟶