5G NR PUSCH物理层过程

物理层过程

在这里插入图片描述

加扰

假设要在单个码字q上传输的bit块为 b ( q ) ( 0 ) , . . . , b ( q ) ( M b i t ( q ) − 1 ) b^{(q)}(0),...,b^{(q)}(M_{bit}^{(q)} - 1) b(q)(0),...,b(q)(Mbit(q)1) ,其中 M b i t ( q ) M_{bit}^{(q)} Mbit(q)是总比特数,加扰之后的bit块长度不变,用 b ~ ( q ) ( 0 ) , . . . , b ~ ( q ) ( M b i t ( q ) − 1 ) \tilde{b}^{(q)}(0),...,\tilde{b}^{(q)}(M_{bit}^{(q)} - 1) b~(q)(0),...,b~(q)(Mbit(q)1) 表示。具体的加扰方式见38.211-6.3.1.1章节的伪代码。
在这里插入图片描述

对加扰序列产生影响的因素有下面几点:

  • 占位符’x’、‘y’:当对1或2比特的信息做信道编码时,为了最大化携带有效信息的bit位之间的[欧氏距离],会根据不同的调制阶数在其中填充占位符,编码1比特信息查看表格38.212-Table 5.3.3.1-1,编码2比特信息查看表格38.212-Table 5.3.3.2-1,其中 c 2 = ( c 0 + c 1 ) m o d 2 c_2 = (c_0 + c_1) mod 2 c2=(c0+c1)mod2
    在这里插入图片描述
    在这里插入图片描述

  • c ( q ) ( i ) c^{(q)}(i) c(q)(i),按照38.211-5.2.1章节生成, x 1 ( n ) x_1(n) x1(n)初始化为 x 1 ( 0 ) = 1 , x 1 ( n ) = 0 , n = 1 , 2 , . . . , 30 x_1(0) = 1, x_1(n) = 0,n=1,2,...,30 x1(0)=1,x1(n)=0,n=1,2,...,30 x 2 ( n ) x_2(n) x2(n)的初始化由 c i n i t c_{init} cinit决定,而 c i n i t = n R N T I ∗ 2 15 + n I D c_{init} = n_{RNTI} * 2^{15} + n_{ID} cinit=nRNTI215+nID

    在这里插入图片描述

    • n I D n_{ID} nID:用于加扰序列生成器的初始化,取值范围是 n I D ∈ { 0 , 1 , . . . , 1023 } n_{ID} \in{\{0,1,...,1023\}} nID{0,1,...,1023}

      • 如果RNTI等于C-RNTI、MCS-C-RNTI或CS-RNTI,而且没有在公共搜索空间中使用DCI format 0_0来调度传输,那么如果配置了高层参数dataScramblingIdentityPUSCH n I D n_{ID} nID就使用这个参数配置值。

      • 其他情况,使用物理小区ID,即 n I D = N I D c e l l n_{ID} = N_{ID}^{cell} nID=NIDcell

    • n R N T I n_{RNTI} nRNTI:对应PUSCH传输的RNTI。

调制

单码字q上加扰后的比特块为 b ~ ( q ) ( 0 ) , . . . , b ~ ( q ) ( M b i t ( q ) − 1 ) \tilde{b}^{(q)}(0),...,\tilde{b}^{(q)}(M_{bit}^{(q)} - 1) b~(q)(0),...,b~(q)(Mbit(q)1),要使用Table
6.3.1.2-1的调制方案进行调制,生成一个复数的调制符号块 d ( q ) ( 0 ) , . . . , d ( q ) ( M s y m b ( q ) − 1 ) d^{(q)}(0),...,d^{(q)}(M_{symb}^{(q)} - 1) d(q)(0),...,d(q)(Msymb(q)1)

在这里插入图片描述

  • 调制方式 π {\pi} π/2-BPSK

    在这里插入图片描述

  • 调制方式QPSK,b(2i)和b(2i+1)都映射到d(i)

    在这里插入图片描述

  • 调制方式16QAM,b(4i)、b(4i+1)、b(4i+2)、b(4i+3)都映射到d(i)

    在这里插入图片描述

  • 调制方式64QAM,b(6i)、b(6i+1)、b(6i+2)、b(6i+3)、b(6i+4)、b(6i+5)都映射到d(i)

    在这里插入图片描述

  • 调制方式256QAM,b(8i)、b(8i+1)、b(8i+2)、b(8i+3)、b(8i+4)、b(8i+5)、b(8i+6)、b(8i+7)都映射到d(i)

    在这里插入图片描述

层映射

码字q上的复数调制符号 d ( q ) ( 0 ) , . . . , d ( q ) ( M s y m b ( q ) − 1 ) d^{(q)}(0),...,d^{(q)}(M_{symb}^{(q)} - 1) d(q)(0),...,d(q)(Msymb(q)1)按照38.211-Table7.3.1.3-1映射到最高4层上。用 x ( i ) = [ x ( 0 ) ( i ) . . . x ( v − 1 ) ( i ) ] T , i = 0 , 1 , . . . , M s y m b l a y e r − 1 x(i) = [x^{(0)}(i) ... x^{(v-1)}(i)]^T,i = 0,1,...,M_{symb}^{layer} - 1 x(i)=[x(0)(i)...x(v1)(i)]T,i=0,1,...,Msymblayer1表示,其中 v v v是层编号, M s y m b l a y e r M_{symb}^{layer} Msymblayer是映射到每一层的调制符号数。

在这里插入图片描述

举个例子,单码字上的复数调制符号 d ( 0 ) , d ( 1 ) . . . d ( 95 ) d(0),d(1)...d(95) d(0),d(1)...d(95)要映射到4层上,那么在每一层映射的符号分别为

  • 层0: d ( 0 ) , d ( 4 ) , d ( 8 ) , . . . , d ( 88 ) , d ( 92 ) d(0),d(4),d(8),...,d(88),d(92) d(0),d(4),d(8),...,d(88),d(92)

  • 层1: d ( 1 ) , d ( 5 ) , d ( 9 ) , . . . , d ( 89 ) , d ( 93 ) d(1),d(5),d(9),...,d(89),d(93) d(1),d(5),d(9),...,d(89),d(93)

  • 层2: d ( 2 ) , d ( 6 ) , d ( 10 ) , . . . , d ( 90 ) , d ( 94 ) d(2),d(6),d(10),...,d(90),d(94) d(2),d(6),d(10),...,d(90),d(94)

  • 层3: d ( 3 ) , d ( 7 ) , d ( 11 ) , . . . , d ( 91 ) , d ( 95 ) d(3),d(7),d(11),...,d(91),d(95) d(3),d(7),d(11),...,d(91),d(95)

    对应的 x ( 0 ) = [ d ( 0 ) , d ( 1 ) , d ( 2 ) , d ( 3 ) ] T x(0) = [d(0),d(1),d(2),d(3)]^T x(0)=[d(0),d(1),d(2),d(3)]T x ( 1 ) = [ d ( 4 ) , d ( 5 ) , d ( 6 ) , d ( 7 ) ] T x(1) = [d(4),d(5),d(6),d(7)]^T x(1)=[d(4),d(5),d(6),d(7)]T x ( 2 ) = [ d ( 8 ) , d ( 9 ) , d ( 10 ) , d ( 11 ) ] T x(2) = [d(8),d(9),d(10),d(11)]^T x(2)=[d(8),d(9),d(10),d(11)]T,…,

    x ( 22 ) = [ d ( 88 ) , d ( 89 ) , d ( 90 ) , d ( 91 ) ] T x(22) = [d(88),d(89),d(90),d(91)]^T x(22)=[d(88),d(89),d(90),d(91)]T x ( 23 ) = [ d ( 92 ) , d ( 93 ) , d ( 94 ) , d ( 95 ) ] T x(23) = [d(92),d(93),d(94),d(95)]^T x(23)=[d(92),d(93),d(94),d(95)]T

    也就是说映射的结果是: [ x ( 0 ) ( 0 )   x ( 0 ) ( 1 ) , . . . , x ( 0 ) ( 23 ) x ( 1 ) ( 0 )   x ( 1 ) ( 1 ) , . . . , x ( 1 ) ( 23 ) x ( 2 ) ( 0 )   x ( 2 ) ( 1 ) , . . . , x ( 2 ) ( 23 ) x ( 3 ) ( 0 )   x ( 3 ) ( 1 ) , . . . , x ( 3 ) ( 23 ) ] \begin{bmatrix} x^{(0)}(0)\ x^{(0)}(1),...,x^{(0)}(23) \\ x^{(1)}(0)\ x^{(1)}(1),...,x^{(1)}(23) \\ x^{(2)}(0)\ x^{(2)}(1),...,x^{(2)}(23) \\ x^{(3)}(0)\ x^{(3)}(1),...,x^{(3)}(23) \\ \end{bmatrix} x(0)(0) x(0)(1),...,x(0)(23)x(1)(0) x(1)(1),...,x(1)(23)x(2)(0) x(2)(1),...,x(2)(23)x(3)(0) x(3)(1),...,x(3)(23) = [ d ( 0 )      d ( 4 )    d ( 8 ) , . . . , d ( 88 ) , d ( 92 )   d ( 1 )     d ( 5 )    d ( 9 ) , . . . , d ( 89 ) , d ( 93 ) d ( 2 )    d ( 6 )    d ( 10 ) , . . . , d ( 90 ) , d ( 94 ) d ( 3 )    d ( 7 )    d ( 11 ) , . . . , d ( 91 ) , d ( 95 ) ] \begin{bmatrix} d(0)\text{\ \ \ \ }d(4)\text{\ \ }d(8),...,d(88),d(92)\ \\ d(1)\text{\ \ \ }d(5)\text{\ \ }d(9),...,d(89),d(93) \\ d(2)\text{\ \ }d(6)\text{\ \ }d(10),...,d(90),d(94) \\ d(3)\text{\ \ }d(7)\text{\ \ }d(11),...,d(91),d(95) \\ \end{bmatrix} d(0)    d(4)  d(8),...,d(88),d(92) d(1)   d(5)  d(9),...,d(89),d(93)d(2)  d(6)  d(10),...,d(90),d(94)d(3)  d(7)  d(11),...,d(91),d(95) M s y m b l a y e r M_{symb}^{layer} Msymblayer为24

转换预编码

转换预编码是将数据依次做串并转换,变成并行 M s c P U S C H M_{sc}^{PUSCH} MscPUSCH个数据,然后对这些并行的数据做DFT(离散傅里叶变换),也就是说这一步的主要作用是将时域上的离散数据变换成频域上的离散数据。

是否要做这一步操作,要看高层配置参数PUSCH-onfig ->transformPrecoder是否配置为enabled。

如果这个功能打开,那么 x ~ ( 0 ) ( i ) \tilde{x}^{(0)}(i) x~(0)(i)的值取决于PT-RS(相位跟踪参考信号)的配置,以一层传输为例:

  • 没有用PT-RS,单独的层 λ = 0 \lambda = 0 λ=0上的复数符号块 x ( 0 ) , . . . , x 0 ( M s y m b l a y e r − 1 ) x^{(0)},...,x^{0}(M_{symb}^{layer}-1) x(0),...,x0(Msymblayer1)应该分成 M s y m b l a y e r / M s c P U S C H M_{symb}^{layer}/M_{sc}^{PUSCH} Msymblayer/MscPUSCH个集合,每个集合对应一个OFDM符号,且 x ~ ( 0 ) ( i ) = x ( 0 ) ( i ) \tilde{x}^{(0)}(i) = x^{(0)}(i) x~(0)(i)=x(0)(i)

    按照上面的例子,假设 M s c P U S C H M_{sc}^{PUSCH} MscPUSCH=12,层0上的符号 x ( 0 ) ( 0 )   x ( 0 ) ( 1 ) , . . . , x ( 0 ) ( 23 ) x^{(0)}(0)\ x^{(0)}(1),...,x^{(0)}(23) x(0)(0) x(0)(1),...,x(0)(23)分成两
    个集合: x ( 0 ) ( 0 ) , . . . ,   x ( 0 ) ( 11 ) x^{(0)}(0),...,\ x^{(0)}(11) x(0)(0),..., x(0)(11) x ( 0 ) ( 12 ) , . . . ,   x ( 0 ) ( 23 ) x^{(0)}(12),...,\ x^{(0)}(23) x(0)(12),..., x(0)(23),各对应一个OFDM符号。

在这里插入图片描述

  • 使用了PT-RS,复数符号块 x ( 0 ) , . . . , x 0 ( M s y m b l a y e r − 1 ) x^{(0)},...,x^{0}(M_{symb}^{layer}-1) x(0),...,x0(Msymblayer1)被分成多个集合,映射时要避开PT-RS占用的位置,所以集合 l l l包含的符号数为 M s c P U S C H − ε l N s a m p g r o u p N g r o u p P T R S M_{sc}^{PUSCH}-\varepsilon_lN_{samp}^{group}N_{group}^{PTRS} MscPUSCHεlNsampgroupNgroupPTRS,在做转换预编码之前映射到符号 x ~ ( 0 ) ( l M s c P U S C H + i ′ ) \tilde{x}^{(0)}(lM_{sc}^{PUSCH}+i') x~(0)(lMscPUSCH+i),其中 i ′ ∈ { 0 , 1 , . . . , M s c P U S C H − 1 } i'\in{\{0,1,...,M_{sc}^{PUSCH}-1\}} i{0,1,...,MscPUSCH1} i ′ ≠ m i'\neq m i=m m m m指在集合 l l l中的PT-RS样本索引,每个PT-RS组中的样本数量 N s a m p g r o u p N_{samp}^{group} Nsampgroup,PT-RS组的数量 N g r o u p P T − R S N_{group}^{PT-RS} NgroupPTRS都在6.4.1.2.2.2中定义。当OFDM符号 l l l包含>=1个PT-RS样本时 ε l = 1 \varepsilon_l=1 εl=1,否则 ε l = 0 \varepsilon_l=0 εl=0

    在这里插入图片描述

    基于上面的例子,假设 N s a m p g r o u p N_{samp}^{group} Nsampgroup取值2, N g r o u p P T − R S N_{group}^{PT-RS} NgroupPTRS取值2,通过上表可得m=2,3,8,9,那么 x ( 0 ) ( 0 )   x ( 0 ) ( 1 ) , . . . , x ( 0 ) ( 23 ) x^{(0)}(0)\ x^{(0)}(1),...,x^{(0)}(23) x(0)(0) x(0)(1),...,x(0)(23)就会按下图来映射
    在这里插入图片描述

最后做转换预编码,按照下面的公式生成一个复数符号块 y ( 0 ) ( 0 ) , . . . , y ( 0 ) ( M s y m b l a y e r − 1 ) y^{(0)}(0),...,y^{(0)}(M_{symb}^{layer}-1) y(0)(0),...,y(0)(Msymblayer1)

在这里插入图片描述

预编码

向量块 [ y ( 0 ) ( i ) . . . y ( v − 1 ) ( i ) ] T , i = 0 , 1 , . . . , M s y m b l a y e r − 1 [y^{(0)}(i) ... y^{(v-1)}(i)]^T,i=0,1,...,M_{symb}^{layer}-1 [y(0)(i)...y(v1)(i)]T,i=0,1,...,Msymblayer1按如下方式预编码并映射到天线端口 { p 0 , . . . , p ρ − 1 } \{p_0,...,p_{\rho-1}\} {p0,...,pρ1}上:

在这里插入图片描述
,其中 i = 0 , 1 , . . . , M s y m b a p − 1 , M s y m p a p = M s y m b l a y e r i=0,1,...,M_{symb}^{ap}-1,M_{symp}^{ap}=M_{symb}^{layer} i=0,1,...,Msymbap1,Msympap=Msymblayer

  • 如果是基于非码本的传输,则预编码矩阵W为单位矩阵。

  • 如果是基于码本的传输:在单天线端口进行单层传输时W =1;否则通过TPMI索引查表38.211 Table 6.3.1.5-1到Table 6.3.1.5-7得到W,TPMI索引从DCI或者高层参数中获取。DCI 1_0中用字段‘Precoding information and number of layers’来指示TPMI,通过如下方式确定TPMI索引:

    • 4天线端口,高层参数配置为txConfig = codebook,transformPrecoder = disabled,maxRank = 2/3/4,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-2获取TMPI
      在这里插入图片描述

    • 4天线端口,高层参数配置为txConfig = codebook,transformPrecoder = enabled或者transformPrecoder = disabled且maxRank = 1,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-3获取TMPI
      在这里插入图片描述

    • 2天线端口,高层参数配置为txConfig = codebook,transformPrecoder = disabled且maxRank = 2,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-4获取TMPI
      在这里插入图片描述

    • 2天线端口,高层参数配置为txConfig = codebook,transformPrecoder = enabled或者transformPrecoder = disabled且maxRank = 1,那么根据codebookSubset的不同配置值查表Table 7.3.1.1.2-5获取TMPI
      在这里插入图片描述

  • 如果没有配置高层参数txConfig,W=1。

例子:对于使用四个天线端口的四层传输,从DCI中得到TPMI索引为0,查表Table 6.3.1.5-7可以得到W,从而计算出 z ( p ) ( 0 ) , . . . , z ( p ) ( M s y m b a p − 1 ) z^{(p)}(0),...,z^{(p)}(M_{symb}^{ap}-1) z(p)(0),...,z(p)(Msymbap1)

在这里插入图片描述

1 2 [ 1   0   0   0 0   1   0   0 0   0   1   0 0   0   0   1 ] \frac{1}{2}\begin{bmatrix} 1\ 0\ 0\ 0 \\ 0\ 1\ 0\ 0 \\ 0\ 0\ 1\ 0 \\ 0\ 0\ 0\ 1 \\ \end{bmatrix} 21 1 0 0 00 1 0 00 0 1 00 0 0 1 * [ y ( 0 ) ( 0 )   y ( 0 ) ( 1 )   . . . y ( 0 ) ( 23 ) y ( 1 ) ( 0 )   y ( 1 ) ( 1 )   . . . y ( 1 ) ( 23 ) y ( 2 ) ( 0 )   y ( 2 ) ( 1 )   . . . y ( 2 ) ( 23 ) y ( 3 ) ( 0 )   y ( 3 ) ( 1 )   . . . y ( 3 ) ( 23 ) ] \begin{bmatrix} y^{(0)}(0)\ y^{(0)}(1)\ ...y^{(0)}(23) \\ y^{(1)}(0)\ y^{(1)}(1)\ ...y^{(1)}(23) \\ y^{(2)}(0)\ y^{(2)}(1)\ ...y^{(2)}(23) \\ y^{(3)}(0)\ y^{(3)}(1)\ ...y^{(3)}(23) \\ \end{bmatrix} y(0)(0) y(0)(1) ...y(0)(23)y(1)(0) y(1)(1) ...y(1)(23)y(2)(0) y(2)(1) ...y(2)(23)y(3)(0) y(3)(1) ...y(3)(23) = [ y ( 0 ) ( 0 ) 2    y ( 0 ) ( 1 ) 2   ...  y ( 0 ) ( 23 ) 2 y ( 1 ) ( 0 ) 2    y ( 1 ) ( 1 ) 2   ...  y ( 1 ) ( 23 ) 2 y ( 2 ) ( 0 ) 2    y ( 2 ) ( 1 ) 2   ...  y ( 2 ) ( 23 ) 2 y ( 3 ) ( 0 ) 2    y ( 3 ) ( 1 ) 2   ...  y ( 3 ) ( 23 ) 2 ] \begin{bmatrix} \frac{y^{(0)}(0)}{2}\text{\ \ }\frac{y^{(0)}(1)}{2}\text{\ \ ...\ }\frac{y^{(0)}(23)}{2} \\ \frac{y^{(1)}(0)}{2}\text{\ \ }\frac{y^{(1)}(1)}{2}\text{\ \ ...\ }\frac{y^{(1)}(23)}{2} \\ \frac{y^{(2)}(0)}{2}\text{\ \ }\frac{y^{(2)}(1)}{2}\text{\ \ ...\ }\frac{y^{(2)}(23)}{2} \\ \frac{y^{(3)}(0)}{2}\text{\ \ }\frac{y^{(3)}(1)}{2}\text{\ \ ...\ }\frac{y^{(3)}(23)}{2} \\ \end{bmatrix} 2y(0)(0)  2y(0)(1)  ... 2y(0)(23)2y(1)(0)  2y(1)(1)  ... 2y(1)(23)2y(2)(0)  2y(2)(1)  ... 2y(2)(23)2y(3)(0)  2y(3)(1)  ... 2y(3)(23) = [ p ( 0 ) ( i ) p ( 1 ) ( i ) p ( 2 ) ( i ) p ( 3 ) ( i ) ] \begin{bmatrix} p^{(0)}(i) \\ p^{(1)}(i) \\ p^{(2)}(i) \\ p^{(3)}(i) \\ \end{bmatrix} p(0)(i)p(1)(i)p(2)(i)p(3)(i)

映射到虚拟RB

对于每一个用于传输PUSCH的天线端口,复数符号块 z ( p ) ( 0 ) , . . . , z ( p ) ( M s y m b a p − 1 ) z^{(p)}(0),...,z^{(p)}(M_{symb}^{ap}-1) z(p)(0),...,z(p)(Msymbap1)应该从 z ( p ) ( 0 ) z^{(p)}(0) z(p)(0)开始按顺序映射到虚拟RB的RE ( k ′ , l ) p , μ (k',l)_{p,\mu} (k,l)p,μ,这些RE要满足下面的标准:

  • 都在分配给PUSCH传输的虚拟RB中

  • 没有用于传输DM-RS、PT-RS,也没有用作其他共同调度的UE的DM-RS

映射的规则是先频域升序,然后时域升序。

从虚拟RB映射到物理RB

VRB要按照非交织方式映射到PRB。有两种映射情况:

  • Msg3在激活的上行BWP i 上,该BWP起始于 N B W P , i s t a r t N_{BWP,i}^{start} NBWP,istart,而且包含了初始上行BWP(起始于 N B W P , 0 s t a r t N_{BWP,0}^{start} NBWP,0start)的所有RB,并且和初始上行BWP有一样的subcarrier spacing和循环前缀,这种情况下VRB n n n映射到PRB n + N B W P , 0 s t a r t − N B W P , i s t a r t n+N_{BWP,0}^{start}-N_{BWP,i}^{start} n+NBWP,0startNBWP,istart

  • 其他情况,VRB n n n映射到PRB n n n

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第16天 | 昇思MindSpore基于MobileNetv2的垃圾分类》

16天 本节学习了垃圾分类代码开发的方法。通过读取本地图像数据作为输入,对图像中的垃圾物体进行检测,并且将检测结果图片保存到文件中。 MobileNet网络是由Google团队于2017年提出的专注于移动端、嵌入式或IoT设备的轻量级CNN网络,相比于传…

2024.6.30周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、模型架构 四、文章解读 一、Introduction 二、创新点 三、RBM 四、贪心算法 五、实验 六、结论 二、代码复现 总结 摘要 本周我阅读了一篇题目为Generative Pre-Trained Physics-Informed Neural Netwo…

树莓派4B学习笔记16:Python引用自定义模块_简单模块化

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Python 版本3.7.3: 今日学习:Python引用自定义模块 文章提供测试…

【机器学习】机器学习的重要方法——强化学习:理论,方法与实践

目录 一、强化学习的核心概念 二、强化学习算法的分类与示例代码 三.强化学习的优势 四.强化学习的应用与挑战 五、总结与展望 强化学习:理论,方法和实践 在人工智能的广阔领域中,强化学习(Reinforcement Learning, RL&…

一文带你了解乐观锁和悲观锁的本质区别!

文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题&#xff0…

SCI二区|北极海鹦优化算法(APO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,W Wang受到北极海鹦的生存和捕食行为启发,提出了北极海鹦优化算法(Arctic Puffin Optimization, APO)。 2.算法原理 2.1算法思想 …

Unity Shader 极坐标

Unity Shader 极坐标 前言项目简单极坐标极坐标变体之方形极坐标变体之圆形拉花 鸣谢 前言 极坐标记录 项目 简单极坐标 极坐标变体之方形 极坐标变体之圆形 拉花 鸣谢 【菲兹杂货铺】【Unity Shader教程】极坐标实现以及极坐标的两种变体

【Android】在App里面安装Apk文件

项目需求 在一个App里面内置一个第三方的APK文件,然后通过这个App可以安装这个APK文件。 需求实现 1.内置APK文件 在App里面创建一个assets文件夹,然后把想要安装的APK文件放到这里面。 2.定义文件路径访问权限 创建一个文件,命名【file…

springcloud第4季 seata报could not find any implementation for class

一 问题说明 1.1 描述 在使用seata2.0alibaba-cloud 2022.0.0.0-RC2nacos 2.2.3 模拟下订单分布式事务场景,出现如下问题:java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 查看服务端:java.util.ServiceCo…

鸿蒙开发Ability Kit(程序框架服务):【向用户申请授权】

向用户申请授权 当应用需要访问用户的隐私信息或使用系统能力时,例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等,应该向用户请求授权,这部分权限是user_grant权限。 当应用申请user_grant权限时,需要完成以下步骤&a…

鸿蒙开发设备管理:【@ohos.multimodalInput.inputDevice (输入设备)】

输入设备 输入设备管理模块,用于监听输入设备连接、断开和变化,并查看输入设备相关信息。比如监听鼠标插拔,并获取鼠标的id、name和指针移动速度等信息。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口&…

11_电子设计教程基础篇(磁性元件)

文章目录 前言一、电感1、原理2、种类1、制作工艺2、用途 3、参数1、测试条件2、电感量L3、品质因素Q4、直流电阻(DCR)5、额定电流6、谐振频率SRF(Self Resonant Frequency)7、磁芯损耗 4、应用与选型 二、共模电感1、原理2、参数…

RocketMQ常用基本操作

文章中的rabbitmq使用的是rocketmq-all-5.1.3-bin-release版本,需要安装包的可自行下载 RockerMQ启动停止命令 启动命令 nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n localhost:9876 --enable-proxy & 查看日志 tail -f ~/logs/rocketmqlogs/…

对话贾扬清:我创业这一年所看到的 AI

引言 在这次对话中,前阿里巴巴人工智能专家、现LIBRINAI创始人贾扬清分享了他在AI领域创业一年的见解和经历。作为一位从科学家转型为CEO的创业者,他探讨了AI计算、异构计算和云原生软件的结合带来的革命性变化,并讨论了LIBRINAI如何在激烈的…

EasyExcel数据导入

前言: 我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。 看上了网页信息,怎么抓到&#x…

浅谈区块链

区块链是一种分布式数据库技术,也被称为分布式账本技术。它的本质是一个去中心化的数据库,使用密码学相关联产生的数据块串连而成,用于验证其信息的有效性(防伪)和生成下一个区块。区块链具有“不可伪造”“全程留痕”…

【ajax实战02】数据管理网站—验证码登录

一:数据提交(提交手机验证码) 核心思路整理 利用form-serialize插件,收集对象形式的表单数据后,一并提交给服务器。后得到返回值,进一步操作 基地址: axios.defaults.baseURL http://geek.…

【简易版tinySTL】 哈希表与移动语义

基本概念 哈希表(HashTable)是一个重要的底层数据结构, 无序关联容器包括unordered_set, unordered_map内部都是基于哈希表实现。 哈希表是一种通过哈希函数将键映射到索引的数据结构,存储在内存空间中。哈希函数负责将任意大小的输入映射到…

垃圾回收与算法

目录 一、判断对象已经 "死亡" 1、引用计数法 2、可达性分析 二、垃圾收集算法 1、标记清楚算法 2、复制算法 3、标记整理算法 4、分代收集算法 4.1、新生代与复制算法 4.2老年代与标记复制算法 一、判断对象已经 "死亡" 1、引用计数法 在 Java 中&#…

3.ROS串口实例

#include <iostream> #include <ros/ros.h> #include <serial/serial.h> #include<geometry_msgs/Twist.h> using namespace std;//运行打开速度控制插件&#xff1a; rosrun rqt_robot_steering rqt_robot_steering //若串口访问权限不够&#xff1a…