离散傅立叶变换和线性变换的关系:什么是线性空间?

离散傅立叶变换和线性变换的关系:什么是线性空间?

本篇博客是在学习线性空间知识的时候联想到的,通过分析DFT背后的数学原理,以便更好地理解什么是线性空间、什么是线性变换。

1、离散傅立叶变换(DFT)和Fourier矩阵

离散傅立叶变换是六种傅立叶变换的一种。特点是时域离散、频域离散、有限长度。公式如下:
X [ k ] = ∑ n = 0 N − 1 x [ n ] e − j k 2 π N n (1) X[k] = \sum_{n=0}^{N-1} x[n]e^{-j k \frac{2\pi}{N} n} \tag{1} X[k]=n=0N1x[n]ejkN2πn(1)

x [ n ] = 1 N ∑ n = 0 N − 1 X [ k ] e j k 2 π N n (2) x[n] = \frac{1}{N}\sum_{n=0}^{N-1} X[k]e^{j k \frac{2\pi}{N} n} \tag{2} x[n]=N1n=0N1X[k]ejkN2πn(2)

将(1)写成矩阵乘法的形式:X = Fx。下面用一段python代码来描述该过程。

import numpy as np
def F(N):F = []for k in range(N):row_k =[]for n in range(N):row_k.append(np.exp(-1j*2*np.pi/N*k*n)F.append(row_k)return np.array(F)
t = np.arange(0,2*np.pi,0.1)
N = len(t)
x = np.sin(2*np.pi*t)
X_dft = F(N)@x
X_fft = np.fft.fft(x)
np.linalg.norm(X_dft-X_fft)

2、线性空间、基、标准正交基

线性空间:对加法和数乘封闭的数的集合。

基:极大线性无关向量组。

标准正交基:两两正交、每个基和自身的内积为1。

由基张成的线性空间:基的所有线性组合。

关注F矩阵。第k行:
e k = [ e j 2 π N k ∗ 0 , e j 2 π N k ∗ 1 , e j 2 π N k ∗ 2 , ⋯ , e j 2 π N k ∗ ( N − 1 ) ] \Large{e_k = [e^{j\frac{2\pi}{N}k*0},e^{j\frac{2\pi}{N}k*1},e^{j\frac{2\pi}{N}k*2},\cdots,e^{j\frac{2\pi}{N}k*(N-1)}]} ek=[ejN2πk0,ejN2πk1,ejN2πk2,,ejN2πk(N1)]

( e i , e j ) = { N , i = j 0 , i ≠ j (e_i,e_j)=\begin{cases} N, i=j\\ 0, i\ne j \end{cases} (ei,ej)={N,i=j0,i=j

F矩阵的行向量组,构成一组正交基。但不是标准正交基。

X[k]是对应基向量的系数。

离散傅立叶逆变换,是用这组基向量和每个基向量的归一化分量,相乘再相加,来表示原始信号x[n]。

现在来关注原始信号x,它相当于一个N维复向量。它位于CN空间,这个N维复空间的基,类似于三维欧氏空间的i、j、k。x[n]相当于第n个分量。

从数学上,频率空间和时域空间是线性同构关系。两者可以通过矩阵F联系起来。

下面通过将F矩阵的行向量组修正为单位向量,从而构造出标准正交基。

X = Fx
X ′ [ k ] = 1 N ∑ n = 0 N − 1 x [ n ] e − j k 2 π N n (3) X'[k] = \frac{1}{\sqrt N}\sum_{n=0}^{N-1} x[n]e^{-j k \frac{2\pi}{N} n} \tag{3} X[k]=N 1n=0N1x[n]ejkN2πn(3)
x = F-1X
x ′ [ n ] = 1 N ∑ n = 0 N − 1 X [ k ] e j k 2 π N n (4) x'[n] = \frac{1}{\sqrt N}\sum_{n=0}^{N-1} X[k]e^{j k \frac{2\pi}{N} n} \tag{4} x[n]=N 1n=0N1X[k]ejkN2πn(4)

import numpy as np
def F(N):F = []for k in range(N):row_k =[]for n in range(N):row_k.append(np.exp(-1j*2*np.pi/N*k*n)/np.sqrt(N)) #标准正交基F.append(row_k)return np.array(F)
t = np.arange(0,2*np.pi,0.1)
N = len(t)
x = np.sin(2*np.pi*t)
X = F(N)@x
x_inv = np.linalg.inv(F(N))@X
np.linalg.norm(x_inv-x)

3、V(Cn)和Vn©

在数学专著上,经常能看到这两个符号V(Cn)和Vn©,有了之前的基础,就很好解释了这两个概念了。

  1. 相同点:它们都是指n维线性空间,二者是同构关系,可通过一个过渡矩阵P联系起来。
  2. 不同点:二者的标准正交基不同。

具体而言:

V(Cn)的基:
e 1 = [ 1 , 0 , 0 , ⋯ , 0 ] T e i = [ 0 , ⋯ , 0 , 1 i , 0 , ⋯ , 0 ] T e_1 = [1,0,0,\cdots,0]^T\\ e_i = [0,\cdots,0,1_{i},0,\cdots,0]^T e1=[1,0,0,,0]Tei=[0,,0,1i,0,,0]T
Vn©的基:
{ ε 1 , ⋯ , ε i , ⋯ , ε n } \{\varepsilon_1,\cdots,\varepsilon_i,\cdots,\varepsilon_n\} {ε1,,εi,,εn}
对于3维复空间(有的地方叫酉空间)中的一个向量x = [1,2,3]T

在V(C3),x = i+2j+3k。

在V3©,比如在基为{ek}的V3©,
e k = 1 N ∗ [ e j 2 π N k ∗ 0 , e j 2 π N k ∗ 1 , e j 2 π N k ∗ 2 , ⋯ , e j 2 π N k ∗ ( N − 1 ) ] T \Large{e_k = \frac{1}{\sqrt N}*[e^{j\frac{2\pi}{N}k*0},e^{j\frac{2\pi}{N}k*1},e^{j\frac{2\pi}{N}k*2},\cdots,e^{j\frac{2\pi}{N}k*(N-1)}]^T} ek=N 1[ejN2πk0,ejN2πk1,ejN2πk2,,ejN2πk(N1)]T

In [37]: F(3)
Out[37]: 
array([[ 0.577+0.j ,  0.577+0.j ,  0.577+0.j ],[ 0.577+0.j , -0.289-0.5j, -0.289+0.5j],[ 0.577+0.j , -0.289+0.5j, -0.289-0.5j]])In [38]: F(3)@[1,2,3]
Out[38]: array([ 3.464+0.j , -0.866+0.5j, -0.866-0.5j])In [51]: e1 = F(3)[0,:].conj()In [52]: e2 = F(3)[1,:].conj()In [53]: e3 = F(3)[2,:].conj()In [54]: (3.464+0.j)*e1 + (-0.866+0.5j)*e2 + (-0.866-0.5j)*e3
Out[54]: array([1.+0.000e+00j, 2.+0.000e+00j, 3.-7.772e-16j])

x = [ 1 , 2 , 3 ] T = ( 3.464 + 0. j ) ∗ e 1 + ( − 0.866 + 0.5 j ) ∗ e 2 + ( − 0.866 − 0.5 j ) ∗ e 3 x = [1,2,3]^T = (3.464+0.j)*e_1 + (-0.866+0.5j)*e_2 + (-0.866-0.5j)*e_3 x=[1,2,3]T=(3.464+0.j)e1+(0.866+0.5j)e2+(0.8660.5j)e3

通过以上的分析,我们发现,在不同的基下,同一个向量的有不同的表示方式(基、基的分量不同)。

需要注意,基=极大线性无关向量组,因此同一个向量在一组基下的表示是唯一的,也就是分量是唯一确定的。

4、酉变换和酉矩阵

酉变换:标准正交基。

酉变换就是指用一组标准正交基去重新表示一个向量x。
α i = ( u i , x ) = u i H x (5) \alpha_i = (u_i,x) = u_i^H x \tag{5} αi=(ui,x)=uiHx(5)
因此:
x = α 1 u 1 + α 2 u 2 + ⋯ + α n u n (6) x = \alpha_1u_1 + \alpha_2u_2+\cdots+ \alpha_n u_n \tag{6} x=α1u1+α2u2++αnun(6)
酉变换:保内积不变、保p-范数不变、保2-范数不变。

所谓保内积不变、保p-范数不变,可以导出帕赛瓦尔定理:
∑ − ∞ + ∞ ∣ x [ n ] ∣ 2 = 1 2 π ∫ 2 π ∣ X ( e j w ) ∣ 2 d w (7) \sum_{-\infty}^{+\infty}|x[n]|^2 = \frac{1}{2\pi}\int_{2\pi} |X(e^{jw})|^2dw \tag{7} +x[n]2=2π12πX(ejw)2dw(7)

∑ n = 0 N − 1 ∣ x [ n ] ∣ 2 = 1 N ∑ k = 0 N − 1 ∣ X [ k ] ∣ 2 (8) \sum_{n=0}^{N-1}|x[n]|^2 = \frac{1}{N}\sum_{k=0}^{N-1} |X[k]|^2 \tag{8} n=0N1x[n]2=N1k=0N1X[k]2(8)

式8是容易推导的:X=Fx
X H X = x H F H F x = x H d i a g [ N , ⋯ , N ] x = N x H x X^HX=x^HF^HFx = x^H diag[N,\cdots,N]x = Nx^Hx XHX=xHFHFx=xHdiag[N,,N]x=NxHx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Maven Archetype插件制作项目脚手架(一)

Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。比如我们在ide里面创建项目时,可以选择很多maven内置的Archetype,我们最常用的可能是maven-archetype-quickstart 当然maven提供了能力,让我们自定义项目结构&…

Mac[M1]安装mongodb

要在Mac(M1芯片)上安装MongoDB,可以按照以下步骤进行操作: 打开终端:你可以在“应用程序”文件夹中找到“终端”应用程序,或者使用Spotlight搜索并打开它。安装Homebrew:在终端中运行以下命令安…

帮我超越技术壁垒的“泰斗”服务--Amazon ElastiCache

前言 作为开发者,外加上云服务的使用者,对于借助云服务来提升日常开发中的效率是一个非常关键且重要的事情。在日常实际开发中,关于缓存服务领域想必作为开发者应该都不陌生,比如常用到的 Redis 就是缓存服务之一。对于互联网领域…

使用ffmpeg实现视频旋转并保持清晰度不变

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i source.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-…

2024年测量、信号处理与深度学习国际会议(ICMSPDL 2024)

2024年测量、信号处理与深度学习国际会议(ICMSPDL 2024) 2024 International Conference on Measurement, Signal Processing, and Deep Learning ICMSPDL 2024是一个汇集行业和学术界的顶级论坛。会议将邀请国内外知名专家就信号处理、测量、深度学习方…

Gin框架之使用 go-ini 加载.ini 配置文件

首先,联想一个问题,我们在部署服务时,通常为了方便,对于需要迭代更新的代码进行修改,但是比对shell,可以搞一个变量将需要修改的,以及修改起来变动处多的,写在变量内,到时候如果需要变更,可以直接变更变量即可; 那么,golang有没有什么方式可以将需要变的东西保存起…

数据库基础面试第二弹

1. 乐观锁和悲观锁的理解及使用 乐观锁和悲观锁是在并发编程中使用的两种并发控制机制,用于解决多线程或多进程环境下的数据一致性问题。 1. 悲观锁(Pessimistic Locking):   悲观锁的思想是假设并发访问会导致冲突&#xff0…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏,它和扫雷在经典小游戏这方面可以说是旗鼓相当,它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是:用游戏把子上下左右控…

工作记录----CountDownLatch(特别好用的一个工具类)

CountDownLatch 是 Java 并发包中的一个同步工具类,它可以让一个或多个线程等待其他线程完成操作。它的核心思想是,一个线程(或多个线程)在执行某个任务时,可以通过它等待其他线程的信号,直到其他线程的任务完成才继续执行。用于实现线程间的等待和通知机制。 主要特点:…

前端常用的工具网站

前端常用的工具网站🔖 文章目录 前端常用的工具网站🔖1. 图片在线压缩2. iconfont--矢量图标3. JSON在线格式化4. EMOJIALL--表情符号5. removebg--去除图片背景6. FREE API--免费API接口7. Lorem picsum --随机图片8.UU在线工具 -- 聚合工具 1. 图片在线…

生活服务网站搭建的作用是什么

如今生活服务商家面临获客、信息展示及多渠道传播信息的难题,传统线下形式如街道发传单、人口相传等形式非常低效,容易投入成本得不到回报,且数据难以统计。 互联网时代,线上渠道平台汇聚亿级流量,生活服务商家也需要一…

C++ std::string使用效率优化

字符串操作是任何一个C开发程序无法绕过的点,很多时候针对字符串的操作需要进行优化,从而达到更优的使用效率和内存利用率。一般会采用标准的std::string替代C字符串,一方面是std::string为一个成熟的类对象,其成员操作基本能满足…

什么是“私域流量”?

公域流量,字面意思就是人人都可以用的流量,但要付出一定成本,而且不一定可持续。 具体到实际对象,则是线下流量以及BAT等几个互联网流量大户,尤其是后者,比如微信、QQ、天猫、淘宝、百度、抖音、快手、微博…

vue-awesome-swiper轮播组件

安装版本&#xff1a;"swiper": "^6.0.0", 安装版本&#xff1a;"vue-awesome-swiper": "^4.1.1", <div class"swiper_conter"><swiper class"swiper" :options"swiperOption" ref"mySw…

二、C#基础语法( 变量与数据类型)

C# 是一种强类型的编程语言,这意味着在声明变量时必须指定其数据类型。数据类型是用于定义变量可以持有的数据类型的系统。C# 支持多种内置数据类型,同时也支持用户自定义的数据类型。 变量 变量是用来存储数据的容器。在 C# 中,每个变量都有一个特定的数据类型,这决定了…

算法leetcode|94. 二叉树的中序遍历(多语言实现)

文章目录 94. 二叉树的中序遍历&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 94. 二叉树的中序遍历&#xff1a; …

Spring高手之路-Spring AOP

目录 什么是AOP Spring AOP有如下概念 补充&#xff1a; AOP是如何实现的 Spring AOP 是通过代理模式实现的。 Spring AOP默认使用标准的JDK动态代理进行AOP代理。 什么是AOP AOP(Aspect-Oriented Programming)&#xff0c;即面向切面编程&#xff0c;用人话说就是把公共的…

开发人工智能 需要什么工具

人工智能&#xff08;Artificial Intelligence, AI&#xff09;是指利用计算机模拟、扩展和延伸人类智能的理论、方法、技术和应用系统的一门学科。人工智能研究的目标是使计算机能够像人类一样具有智能&#xff0c;能够感知和理解环境、学习和推理、决策和规划&#xff0c;具备…

jar 运行清单文件MANIFEST.MF生成定义Main-Class Premain-Class IDEA maven-assembly-plugin

可运行jar文件中的启动清单文件 META-INF/MANIFEST.MF 内容自定义生成 清单文件中的 Main-Class: Premain-Class: Can-Retransform-Classes: 在maven-assembly-plugin插件中的生成配置如下, 注意命名 <archive> <manifest> <mainClass>c…

MySQL中的like模糊查询

like与通配符搭配使用进行模糊查询 通配符 % 表示任意多个字符 _ 表示任意单个字符 #用户名中包含a的 select * from user where name like %a% #用户名中第二个字符为a的 select * from user where name like _a% #用户名中第二个字符为_的(需要使用转义字符) select * from u…