OFDM多径传输时域和频域模型,以及循环前缀的作用

2023-05-16

1、 多径信道传输模型

从信号传输的基本模型入手。考虑如下式所示的线性时不变系统,
y ( t ) = h ( t ) ∗ x ( t ) = ∫ h ( τ ) x ( t − τ ) d τ = ∫ h ( t − τ ) x ( τ ) d τ ( 1 ) y(t) = h(t) * x(t) = \int h(\tau) x(t- \tau) d\tau = \int h(t-\tau) x(\tau) d\tau \quad \quad (1) y(t)=h(t)x(t)=h(τ)x(tτ)dτ=h(tτ)x(τ)dτ(1)

其中, x ( t ) x(t) x(t) 表示输入信号, h ( t ) h(t) h(t)表示信道冲激响应, y ( t ) y(t) y(t)表示接收信号。则离散形式为
y ( n ) = ∑ l = 0 L − 1 h ( l ) x ( n − l ) ( 2 ) y(n) = \sum_{l=0}^{L-1} h(l) x(n-l) \quad \quad (2) y(n)=l=0L1h(l)x(nl)(2)

式(2)是多径信道下的信号传输模型。 L L L表示多径信道的阶数。

2、OFDM循环前缀的作用

对于OFDM来说,发射信号 x ( n ) x(n) x(n)由IFFT运算(有效信号)和添加循环前缀(CP)得到,其中有效信号可以表示为
x ( n ) = 1 N ∑ k = 1 N X ( k ) e j 2 π n k N , n = 1 , … , N , k = 1 , … , N ( 3 ) x(n) = \frac{1}{\sqrt{N}} \sum_{k=1}^{N} X(k) e^{j 2\pi \frac{nk}{N}}, n=1, \ldots, N, k = 1, \ldots, N \quad \quad (3) x(n)=N 1k=1NX(k)ej2πNnk,n=1,,N,k=1,,N(3)

式中, X ( k ) X(k) X(k)为第 k k k个子载波上的发射信号, N N N为IFFT的点数(也是一个OFDM符号时域有效信号 x ( n ) x(n) x(n)的样点数目)。

对于单个OFDM符号,接收信号(2)的矩阵形式如下:
[ y ( − N C P ) ⋮ y ( − 1 ) y ( 0 ) y ( 1 ) y ( 2 ) ⋮ y ( N − 2 ) y ( N − 1 ) ] = [ h ( 0 ) 0 0 0 0 0 0 0 0 ⋮ ⋱ 0 0 0 0 0 0 0 h ( L − 1 ) ⋯ h ( 0 ) 0 0 0 0 0 0 0 h ( L − 1 ) ⋯ h ( 0 ) 0 0 0 0 0 0 0 ⋱ ⋮ h ( 0 ) 0 0 0 0 0 0 0 h ( L − 1 ) h ( 0 ) 0 0 0 0 0 0 0 ⋱ ⋱ 0 0 0 0 0 0 0 ⋱ h ( 0 ) 0 0 0 0 0 0 0 h ( L − 1 ) ⋯ h ( 0 ) ] [ x ( − N C P ) ⋮ x ( − 1 ) x ( 0 ) x ( 1 ) x ( 2 ) ⋮ x ( N − 2 ) x ( N − 1 ) ] ( 4 ) \begin{bmatrix} y(-N_{CP}) \\ \vdots \\ y(-1) \\ y(0) \\ y(1) \\ y(2) \\ \vdots \\ y(N-2) \\ y(N-1) \end{bmatrix} = \begin{bmatrix} h(0)& 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \vdots & \ddots & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ h(L-1) & \cdots & h(0) & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & h(L-1) & \cdots & h(0) & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & \ddots & \vdots & h(0) & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & h(L-1) & & h(0) & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & \ddots & & \ddots & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & \ddots & & h(0) & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & h(L-1) & \cdots & h(0) \end{bmatrix} \begin{bmatrix} x(-N_{CP}) \\ \vdots \\ x(-1) \\ x(0) \\ x(1) \\ x(2) \\ \vdots \\ x(N-2) \\ x(N-1) \end{bmatrix} \quad \quad (4) y(NCP)y(1)y(0)y(1)y(2)y(N2)y(N1) = h(0)h(L1)0000000h(L1)0000000h(0)0000000h(0)h(L1)0000000h(0)0000000h(0)0000000h(L1)0000000h(0)00000000h(0) x(NCP)x(1)x(0)x(1)x(2)x(N2)x(N1) (4)

式中, N C P N_{CP} NCP表示CP的长度。

CP的第一个作用:避免符号间干扰。 由于多径的作用,前一时刻的信号会对当前时刻的信号造成影响。因此,为了保证上一个OFDM不会对当前OFDM符号造成影响,CP的长度必须满足 N C P ≥ L − 1 N_{CP} \geq L-1 NCPL1。在式(4)中, N C P = L N_{CP} = L NCP=L

CP的第二个作用:消除子载波间干扰。 这一部分不容易直观理解,需要经过一部分推导。

3、CP如何消除子载波间干扰

为了说明这个问题,继续观察式(4)。从CP的定义出发,循环前缀指的是将发射信号的后面一部分信号复制,并添加到前面,即 x ( − 1 ) = x ( N − 1 ) , … , x ( − N C P ) = x ( N − N C P ) x(-1) = x(N-1) , \ldots, x(-N_{CP}) = x(N-N_{CP}) x(1)=x(N1),,x(NCP)=x(NNCP) 。在接收端去除CP,并利用这个性质,可以将式(4)表示为
[ y ( 0 ) y ( 1 ) y ( 2 ) ⋮ y ( N − 2 ) y ( N − 1 ) ] = [ 0 h ( L − 1 ) ⋯ h ( 0 ) 0 0 0 0 0 0 0 ⋱ ⋮ h ( 0 ) 0 0 0 0 0 0 0 h ( L − 1 ) h ( 0 ) 0 0 0 0 0 0 0 ⋱ ⋱ 0 0 0 0 0 0 0 ⋱ h ( 0 ) 0 0 0 0 0 0 0 h ( L − 1 ) ⋯ h ( 0 ) ] [ x ( − N C P ) ⋮ x ( − 1 ) x ( 0 ) x ( 1 ) x ( 2 ) ⋮ x ( N − 2 ) x ( N − 1 ) ] ( 5 ) \begin{bmatrix} y(0) \\ y(1) \\ y(2) \\ \vdots \\ y(N-2) \\ y(N-1) \end{bmatrix} = \begin{bmatrix} 0 & h(L-1) & \cdots & h(0) & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & \ddots & \vdots & h(0) & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & h(L-1) & & h(0) & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & \ddots & & \ddots & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & \ddots & & h(0) & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & h(L-1) & \cdots & h(0) \end{bmatrix} \begin{bmatrix} x(-N_{CP}) \\ \vdots \\ x(-1) \\ x(0) \\ x(1) \\ x(2) \\ \vdots \\ x(N-2) \\ x(N-1) \end{bmatrix} \quad \quad (5) y(0)y(1)y(2)y(N2)y(N1) = 000000h(L1)000000000h(0)h(L1)0000h(0)0000h(0)0000h(L1)0000h(0)00000h(0) x(NCP)x(1)x(0)x(1)x(2)x(N2)x(N1) (5)
[ y ( 0 ) y ( 1 ) y ( 2 ) ⋮ y ( N − 2 ) y ( N − 1 ) ] = [ h ( 0 ) 0 0 0 h ( L − 1 ) h ( 1 ) ⋮ h ( 0 ) 0 0 0 h ( L − 1 ) h ( L − 1 ) h ( 0 ) 0 0 0 0 ⋱ ⋱ 0 0 0 0 ⋱ h ( 0 ) 0 0 0 0 h ( L − 1 ) ⋯ h ( 0 ) ] [ x ( 0 ) x ( 1 ) x ( 2 ) ⋮ x ( N − 2 ) x ( N − 1 ) ] ( 6 ) \begin{bmatrix} y(0) \\ y(1) \\ y(2) \\ \vdots \\ y(N-2) \\ y(N-1) \end{bmatrix} = \begin{bmatrix} h(0) & 0 & 0 & 0 & h(L-1) & h(1) \\ \vdots & h(0) & 0 & 0 & 0 & h(L-1) \\ h(L-1) & & h(0) & 0 & 0 & 0 \\ 0 & \ddots & & \ddots & 0 & 0 \\ 0 & 0 & \ddots & & h(0) & 0 \\ 0 & 0 & 0 & h(L-1) & \cdots & h(0) \end{bmatrix} \begin{bmatrix} x(0) \\ x(1) \\ x(2) \\ \vdots \\ x(N-2) \\ x(N-1) \end{bmatrix} \quad \quad (6) y(0)y(1)y(2)y(N2)y(N1) = h(0)h(L1)0000h(0)0000h(0)0000h(L1)h(L1)000h(0)h(1)h(L1)000h(0) x(0)x(1)x(2)x(N2)x(N1) (6)

也就是说,由于CP性质,可以将式(5)中信道矩阵的左上角元素,搬移到式(6)中信道矩阵的右上角,且完全不会改变等号的成立。即,CP-OFDM将线性卷积运算转换为了循环卷积运算。

将(6)写为矩阵形式,即
y = G x ( 7 ) \mathbf{y} = \mathbf{G} \mathbf{x} \quad \quad (7) y=Gx(7)

其中, G ∈ C N × N \mathbf{G} \in \mathbb{C}^{N \times N} GCN×N为时域信道矩阵。根据OFDM接收端的操作,需要对接收信号进行FFT运算,可以得到频域信号形式,即
r = F y = F G F H s ( 8 ) \mathbf{r} = \mathbf{F} \mathbf{y} = \mathbf{F} \mathbf{G} \mathbf{F}^{H} \mathbf{s} \quad \quad (8) r=Fy=FGFHs(8)

式中, F ∈ C N × N \mathbf{F} \in \mathbb{C}^{N \times N} FCN×N表示傅里叶矩阵, s = [ X ( 1 ) , … , X ( k ) , … , X ( N ) ] T ∈ C N × 1 \mathbf{s} = [X(1), \ldots, X(k), \ldots, X(N)]^{T} \in \mathbb{C}^{N \times 1} s=[X(1),,X(k),,X(N)]TCN×1表示频域发射信号(见式(3))。

注意: 式(7)中 G \mathbf{G} G是一个Toeplitz矩阵,具有循环移位特性,如下图所示。
图1:信道的循环移位示意图
定义 H = F G F H \mathbf{H} = \mathbf{F} \mathbf{G} \mathbf{F}^{H} H=FGFH,利用 托普利兹矩阵_百度百科的性质,则 H \mathbf{H} H是一个对角矩阵,式(8)可以表示为
[ r ( 0 ) r ( 1 ) r ( 2 ) ⋮ r ( N − 1 ) ] = [ H ( 0 ) ⋱ H ( k ) ⋱ H ( N − 1 ) ] [ X ( 0 ) ⋮ X ( k ) ⋮ X ( N − 1 ) ] ( 9 ) \begin{bmatrix} r(0) \\ r(1) \\ r(2) \\ \vdots \\ r(N-1) \end{bmatrix} = \begin{bmatrix} H(0) & & & & \\ & \ddots & & & \\ & & H(k) & & \\ & & & \ddots & \\ & & & & H(N-1) \end{bmatrix}\begin{bmatrix} X(0) \\ \vdots \\ X(k) \\ \vdots \\ X(N-1) \end{bmatrix} \quad \quad (9) r(0)r(1)r(2)r(N1) = H(0)H(k)H(N1) X(0)X(k)X(N1) (9)

式中, H ( k ) H(k) H(k)表示 H \mathbf{H} H的第 k k k个对角线元素。从式(9)可以看到,每一个子载波的接收信号与发射信号一一对应,且其他子载波的信号对当前子载波完全没有影响。也就是说,子载波之间不会产生任何干扰,即消除了子载波间干扰。OFDM结合循环前缀,可以使信道均衡、信号解调等在频域并行处理,大大降低了系统复杂度。

此外,上面的过程解释了OFDM时域传输模型以及频域传输模型的等价关系。

4、OFDM频域与时域信道系数的关系

现在还有一个问题,如何确定频域信道系数 H ( k ) H(k) H(k)与时域信道系数 h ( l ) h(l) h(l)之间的关系呢?

为了解决这个问题,考察特征值和特征向量。

根据 H = F G F H \mathbf{H} = \mathbf{F} \mathbf{G} \mathbf{F}^{H} H=FGFH,可知 H ( k ) H(k) H(k)是Toeplitz矩阵 G \mathbf{G} G的特征值,相应的特征向量为 F H \mathbf{F}^{H} FH的第 k k k列。为什么呢?因为 F H H = G F H \mathbf{F}^{H} \mathbf{H} = \mathbf{G} \mathbf{F}^{H} FHH=GFH
考虑矩阵两边的第 k k k个列向量,可得 G f k = H ( k ) f k \mathbf{G} \mathbf{f}_{k} = H(k) \mathbf{f}_{k} Gfk=H(k)fk,其中 f k \mathbf{f}_{k} fk F H \mathbf{F}^{H} FH的第 k k k列,也就是 F \mathbf{F} F的第 k k k行。这与特征值和特征向量的表达式完全相同。基于以上讨论,我们下面来说明如何计算 H ( k ) H(k) H(k)

定义: W N = e − j 2 π N W_{N} = e^{-\frac{j 2\pi}{N}} WN=eNj2π,以及 G f k = H ( k ) f k \mathbf{G} \mathbf{f}_{k} = H(k) \mathbf{f}_{k} Gfk=H(k)fk的等价形式,即
1 N [ p 0 p 1 p 2 ⋯ p N − 1 p N − 1 p 0 p 1 ⋯ p N − 2 p N − 2 p N − 1 p 0 ⋯ p N − 3 ⋯ ⋯ ⋯ ⋯ ⋯ p 1 p 2 p 3 ⋯ p 0 ] [ W N 0 W N − k W N − 2 k ⋮ W N − ( N − 1 ) k ] = 1 N H ( k ) [ W N 0 W N − k W N − 2 k ⋮ W N − ( N − 1 ) k ] ( 10 ) \frac{1}{\sqrt{N}} \begin{bmatrix} p_{0} & p_{1} & p_{2} & \cdots & p_{N-1} \\ p_{N-1} & p_{0} & p_{1} & \cdots & p_{N-2} \\ p_{N-2} & p_{N-1} & p_{0} & \cdots & p_{N-3} \\ \cdots & \cdots & \cdots & \cdots & \cdots \\ p_{1} & p_{2} & p_{3} & \cdots & p_{0} \end{bmatrix} \begin{bmatrix} W_{N}^{0} \\ W_{N}^{-k} \\ W_{N}^{-2k} \\ \vdots \\ W_{N}^{-(N-1)k} \end{bmatrix} = \frac{1}{\sqrt{N}} H(k) \begin{bmatrix} W_{N}^{0} \\ W_{N}^{-k} \\ W_{N}^{-2k} \\ \vdots \\ W_{N}^{-(N-1)k} \end{bmatrix} \quad \quad \quad (10) N 1 p0pN1pN2p1p1p0pN1p2p2p1p0p3pN1pN2pN3p0 WN0WNkWN2kWN(N1)k =N 1H(k) WN0WNkWN2kWN(N1)k (10)

为了计算 H ( k ) H(k) H(k)的表达式,我们观察式(6)和(10)中的Toeplitz矩阵 G \mathbf{G} G P \mathbf{P} P
P m , n = p ( n − m ) mod N \mathbf{P}_{m,n} = p_{(n-m) \text{mod} N} Pm,n=p(nm)modN p l = h ( N − l ) mod N p_{l} = h_{(N-l) \text{mod} N} pl=h(Nl)modN,其中 m , n , l = 0 , 1 , 2 , … , N − 1. m,n,l = 0, 1, 2, \ldots, N-1. m,n,l=0,1,2,,N1.
因此,式(10)等号左边:矩阵 P \mathbf{P} P的第 ( m + 1 ) (m+1) (m+1)行与IDFT矩阵第 k k k列的内积有
1 N ∑ n = 0 N − 1 p ( n − m ) N W N − n k = 1 N W N − m k ∑ n = 0 N − 1 p ( n − m ) N W N − ( n − m ) N k = 1 N W N − m k ∑ l = 0 N − 1 p l W N − l k ( 11 ) \frac{1}{\sqrt{N}} \sum_{n=0}^{N-1} p_{(n-m)_N} W_{N}^{-nk} = \frac{1}{\sqrt{N}} W_{N}^{-mk} \sum_{n=0}^{N-1} p_{(n-m)_N} W_{N}^{-(n-m)_{N}k} = \frac{1}{\sqrt{N}} W_{N}^{-mk} \sum_{l=0}^{N-1} p_{l} W_{N}^{- l k} \quad \quad (11) N 1n=0N1p(nm)NWNnk=N 1WNmkn=0N1p(nm)NWN(nm)Nk=N 1WNmkl=0N1plWNlk(11)

式中,第1个等号利用了性质 W N − ( n − m ) k = W N − ( n − m ) N k W_{N}^{-(n-m)k} = W_{N}^{-(n-m)_{N} k} WN(nm)k=WN(nm)Nk,(以 N N N为周期的周期性)。
为进一步计算式(11)的求和项,我们定义 H k = ∑ l = 0 N − 1 p l W N − l k H_{k} = \sum_{l=0}^{N-1} p_{l} W_{N}^{- l k} Hk=l=0N1plWNlk,即
H k = ∑ l = 0 N − 1 p l W N − l k = ∑ l = 0 N − 1 h ( N − l ) N W N − l k = ∑ l = 0 N − 1 h ( N − l ) N W N ( N − l ) N k = ∑ l ′ = 0 N − 1 h l ′ W N l ′ k ( 12 ) H_{k} = \sum_{l=0}^{N-1} p_{l} W_{N}^{- l k} = \sum_{l=0}^{N-1} h_{(N-l)_{N}} W_{N}^{- l k} = \sum_{l=0}^{N-1} h_{(N-l)_{N}} W_{N}^{(N - l)_{N} k} = \sum_{l'=0}^{N-1} h_{l'} W_{N}^{l' k} \quad \quad (12) Hk=l=0N1plWNlk=l=0N1h(Nl)NWNlk=l=0N1h(Nl)NWN(Nl)Nk=l=0N1hlWNlk(12)

式中,第3个等号利用了性质 W N N k = 1 W_{N}^{N k} = 1 WNNk=1 W N ( N − l ) k = W N ( N − l ) N k W_{N}^{(N - l) k} = W_{N}^{(N - l)_{N} k} WN(Nl)k=WN(Nl)Nk
可以看到,频域信道系数 H k H_{k} Hk恰巧是时域信道系数 h l ′ , l ′ = 0 , 1 , … , N − 1 h_{l'}, l' = 0,1,\ldots,N-1 hl,l=0,1,,N1的傅里叶变换!
(注意 l ′ = L , … , N − 1 l' = L,\ldots, N-1 l=L,,N1 h l ′ = 0 h_{l'} = 0 hl=0),上式可以进一步表示为 H k = ∑ l = 0 L − 1 h l e − j 2 π N l k H_{k} = \sum_{l=0}^{L-1} h_{l} e^{-\frac{j 2\pi }{N}l k} Hk=l=0L1hleNj2πlk

因此,我们可以得出公式(9)中,频域信道系数与时域信道系数之间的关系,以及验证了时域传输模型(6)和频域传输模型(9)之间的等价性。

参考资料:
CP是如何将多径信道的线性卷积变成循环卷积的?_张力_通信之美_新浪博客
https://blog.51cto.com/u_15127585/2669966
OFDM系统中的信道估计基础知识_逸凌Time的博客-CSDN博客_ofdm信道估计
给“小白”图示讲解OFDM的原理_码懂的博客-CSDN博客_ofdm小白
OFDM系统中的信道估计基础知识_逸凌Time的博客-CSDN博客_ofdm信道估计

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OFDM多径传输时域和频域模型,以及循环前缀的作用 的相关文章

  • c++中冒号(:)和双冒号(::)的用法和c/c++ 位域结构体

    1 冒号 xff08 xff09 用法 xff08 1 xff09 表示结构体内 位域的定义 xff08 即该变量占几个bit空间 xff09 typedef struct XXX unsigned char a 4 unsigned ch
  • CAN总线与RS485的比较

    最近一个项目总体方案设计为分布式系统 xff0c 于是在通讯上纠结于CAN总线还是RS485 因此在网上搜索一些了一些关于RS485和CAN总线的资料 xff0c 除进一步认识RS485通讯特点外 xff0c 认识了CAN总线的特点及其与R
  • Linux内核中常见内存分配函数

    1 原理说明 Linux 内核中采 用了一种同时适用于32 位和64 位系统的内 存分页模型 xff0c 对于32 位系统来说 xff0c 两级页表足够用了 xff0c 而在x86 64 系 统中 xff0c 用到了四级页表 xff0c 如
  • MII、RMII、GMII接口的详细介绍

    概述 xff1a MII Media Independent Interface 介质无关接口 或称为媒体独立接口 xff0c 它是IEEE 802 3定义的以太网行业标准 它包括一个数据接口和一个MAC和PHY之间的管理接口 数据接口包括
  • Visual Studio .NET 2003中出现“无法启动调试 没有正确安装调试器”错误的解决方法

    最近 xff0c 装了Visual Studio NET 2010后 xff0c 在Visual Studio NET 2003中进行运行调试 xff0c 突然出现 无法启动调试 没有正确安装调试器 提示 xff0c 不能向往常一样进入控制
  • ftime()函数

    ftime 函数取得目前的时间和日期 相关函数 xff1a time ctime gettimeofday 表头文件 xff1a include lt sys timeb h gt 函数定义 xff1a int ftime struct t
  • 几道经典的嵌入式C语言笔试题

    C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法 这些年 xff0c 我既参加也组织了许多这种测试 xff0c 在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息 xff0c 此外 xff0c 撇开面试的压力不谈 xf
  • 解决eclipse中出现Resource is out of sync with the file system问题

    作者 xff1a reille 本博客网址 xff1a http blog csdn net reille xff0c 转载本博客原创文章请注明出处 本文内容概要 xff1a 解决eclipse中出现Resource is out of s
  • 代码中特殊的注释技术——TODO、FIXME和XXX的用处

    作者 xff1a reille 本博客网址 xff1a http blog csdn net reille xff0c 转载本博客原创文章请注明出处 本文内容概要 xff1a 代码中特殊的注释技术 TODO FIXME和XXX的用处 更多请
  • 个人网站梦想终实现即reille blog | velep.com成长之路

    最近用wordpress开放平台软件建立了一个属于自己的个人博客网站velep com即reille blog xff0c 中文名 xff1a reille博客 xff0c 圆了自己多年来的梦想 xff0c 感觉像是在这大千互联网里找到了属
  • PaddleX树莓派部署--神经计算棒2代

    PaddleX树莓派部署 神经计算棒2代 PaddleX支持在树莓派上插入NCS2 神经计算棒2代 通过OpenVINO部署PadlleX训练出来的分类模型 注意 xff1a 目前仅支持分类模型 仅支持Armv7hf的树莓派 前置条件 OS
  • Hbase数据结构和体系架构

    1 HBase与关系数据库比较 1 xff09 行式数据库 优点 1 数据存储在一起 2 INSERT UPDATE数据较容易 缺点 1 选择操作 xff08 select xff09 时 xff0c 即使是几行所有数据也要被读取 2 xf
  • Ubuntu安装remmina

    官方教程 xff1a https github com FreeRDP Remmina wiki sudo apt span class hljs attribute add span span class hljs attribute r
  • ros运行rviz时出现QXcbConnection: XCB error: 148错误

    原因 xff1a 由于使用了vnc远程控制下位机 xff0c rviz是一个基于opengl开发的图形插件 xff0c 需要使用理论的屏幕参数 xff08 thetis screen xff09 xff0c 使用vnc会导致屏幕参数值不对
  • FreeRTOS内核源码解读之-------系统启动(三)

    前面文章两篇文章介绍了FreeRTOS的启动过程 xff0c 但是有些问题还没有解决 xff0c 在本篇文章中将会逐一解决 首先 xff0c 在 FreeRTOS内核源码解读之 系统启动 xff08 一 xff09 中提到Cortex M4
  • C++ MathGL 二维数据绘图

    C 43 43 MathGL环境搭建参考 https blog csdn net vaincury article details 105438971 MathGL官网 http mathgl sourceforge net doc en
  • 面经——小马智行2022秋招嵌入式

    笔试 单选 xff1a 双向链表 实时操作系统特征 死锁的必要条件 小端对齐时 xff0c 不用sizeof判断int长度 const typedef 结构体字节对齐 堆和栈 n阶阶乘的时间复杂度 tcpudp static 常见通信协议
  • silicon labs平台通过串口升级固件方案

    开发环境 windowssimplicity studio 5geck sdk 4 1 一 bootloader 新建BGAPI UART DFU工程 工程新建完成以后看一下linkerfile ld文件的flash和ram的配置跟自己的a
  • Postman前置脚本

    位置 xff1a 作用 xff1a 调用脚本之前需要执行的代码片段 一 产生随机数字 生成0 1之间的随机数 xff0c 包括0 xff0c 不包括1 xff1b var random 61 Math random console log
  • Ubuntu下启动后网卡没有服务没有启动的问题

    参照了很多帖子 xff0c 两个典型的帖子分别是 https blog csdn net ErErFei article details 98205463 Ubuntu 18 04设置开机自动启动 https blog csdn net w

随机推荐

  • 错误:datatype/md5sum

    学习中科院ros入门时 xff0c 在用roscpp实现主题的发布和订阅 xff0c 遇到以下错误 xff1a ERROR Client listener wants topic gps info to have datatype md5s
  • C++的门道(一些C++的关键坑)

    C 43 43 的门门道道 导语 C 43 43 是一门被广泛使用的系统级编程语言 xff0c 更是高性能后端标准开发语言 xff1b C 43 43 虽功能强大 xff0c 灵活巧妙 xff0c 但却属于易学难精的专家型语言 xff0c
  • EGO-PLANNER安装问题记录以及如何在Ubuntu22.04LTS上安装ROS noetic

    一 Ubuntu系统版本及ROS版本 笔者误操作升级系统版本到了Ubuntu22 04LTS xff0c 在这个版本中系统不支持ROS1的安装 xff0c 笔者尝试用ROS2运行ego planner xff0c 并未运行成功 xff0c
  • 算法竞赛中常用的STL

    C 43 43 标准模板库 xff08 STL xff09 封装了大量十分有用的数据结构和算法 xff0c 熟练使用STL将会使我们的程序编写如虎添翼 接下来会介绍几种在程序竞赛中常用到的STL类 如果想了解更多 xff0c 推荐直接访问官
  • Lwip从入门到放弃之(一)---基础网络知识扫盲

    Lwip从入门到放弃之 基础网络知识扫盲 一 由于工作中用到了有关Lwip的有关知识 xff0c 本人作为一个网络通信协议的门外汉 xff0c 打算系统的学习一下以太网通讯的有关知识 而Lwip作为一款开源的轻量级TCP IP协议栈 xff
  • nginx电信合规100分配置

    在日常线上部署中 xff0c 总会遇到nginx配置基线漏洞 xff0c 整理了一份nginx100分配置分享下 可以通过基线扫描 nginx conf user nobody worker processes 1 error log lo
  • gitee码云webhook,代码提交后同步到服务器。

    1 创建脚本 xff0c 写入以下内容 脚本放入www根目录下 span class token delimiter important lt php span span class token variable json span spa
  • Socket接口编程

    简介 1 Socket 英文原意是 孔 或者 插座 的意思 在网络编程中 通常将其称之为 套接字 当前网络中的主流程序设计都是使用 Socket 进行编程的 因为它简单易用 更是一个标准 能在不同平台很方便移植 2 socket是统一的编程
  • Linux基础命令-chattr更改文件隐藏属性

    目录 前言 一 chattr命令介绍 二 语法及常用参数和模式 2 1 一样用help或man查看语法 2 2 常用参数 2 3 命令的模式 三 参考实例 3 1 给文件添加无法修改的权限 3 2 从指定文件移除隐藏属性 3 3 给目录添加
  • 四轴飞行器的串级PID参数整定经验

    串级PID即将两个PID控制器按照串联的方式连接起来 xff0c 前一个的输出作为后一个的输入两者共同控制控制对象 对于四旋翼来讲最普通的就是外环角度环 xff0c 内环角速度环 xff0c 两者怎么联系呢 xff0c 有的说法是 xff1
  • 嵌入式C语言复习——Day4

    嵌入式C语言复习 Day4 C语言函数的使用 1 函数概述 xff1a 一堆代码的集合 xff0c 用一个标签去描述它 xff0c 复用化 xff1b 函数三要素 xff1a 1 函数名 xff08 地址 xff09 2 输入参数 3 返回
  • C++基础复习——Day2

    类和对象 封装对象的初始化和清理构造函数和析构函数构造函数的分类及调用拷贝构造函数调用时机深拷贝与浅拷贝 C 43 43 对象模型和this指针友元运算符重载加号运算符重载左移运算符重载递增运算符重载赋值运算符重载 继承继承的基本用法继承方
  • 【模电基础复习】

    模拟电子技术 概念向 1 二极管杂质半导体的形成载流子是什么线性元件与非线性元件PN结形成原理及特性PN结的击穿二极管特性和主要参数二极管应用其他二极管类型 1 思考题为什么称空穴是载流子 xff1f 如何从PN结的电压电流特性方程来理解其
  • 【数电基础复习】

    数字电子技术 概念向 数制和码制数字量与模拟量位权十 二进制运算反码 补码奇偶校验 逻辑函数逻辑代数运算最小项和最大项逻辑函数化简方法 门电路CMOS门电路CMOS反相器CMOS电压传输特性和电流传输特性CMOS反相器静态输入特性和输出特性
  • 数据结构与算法——队列

    数据结构与算法 队列队列的链式存储结构创建一个队列入队列操作 出队列操作销毁一个队列 队列 队列 xff08 queue xff09 是只允许在一端进行插入操作 xff0c 而在另一端进行删除操作的线性表 与栈相反 xff0c 队列是一种先
  • 数据结构与算法——递归和分治

    数据结构与算法 递归斐波那契数列的递归实现 分治 递归 在现实当中 xff0c 我们只有在迫不得已的情况下才使用递归 xff0c 因为递归本身的效率并不理想 xff0c 但他的思想却值得我们留存在记忆之中 斐波那契数列的递归实现 使用递归实
  • 数据结构与算法——字符串

    数据结构与算法 字符串字符串的比较字符串的存储结构BF算法KMP算法 字符串 定义 xff1a 串 String 是由零个或多个字符组成的有限序列 xff0c 又名叫字符串 一般记为 s 61 a1a2a3 an n gt 61 0 串可以
  • 数据结构对齐规则(C语言)

    概念 xff1a 一些概念是为了容易理解 xff0c 自己定义的 1 基本对齐系数 xff1a 默认情况 xff1a 由编译器和操作系统决定 xff0c 一般来说32位系统对齐系数为4 xff08 字节 xff09 xff1b 64位系统对
  • ubuntu grace/xmgrace安装和使用

    grace是什么 xff1f Grace是 GRaphing Advanced Computation and Exploration of data 的缩写 它是在X Window系统和Motif下的所见即所得 xff08 所见及所得 x
  • OFDM多径传输时域和频域模型,以及循环前缀的作用

    1 多径信道传输模型 从信号传输的基本模型入手 考虑如下式所示的线性时不变系统 xff0c y t 61 h