当前位置: 首页 > news >正文

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理

目录

一、引言

二、Viterbi译码的基本原理

2.1 卷积码与网格图

2.2 Viterbi算法的核心思想

2.3 路径度量与状态转移

三、Viterbi译码算法工作原理详解

3.1 算法流程

3.2 关键步骤

3.3 译码算法举例

3.4 性能特点

四、Viterbi译码的应用场景

4.1 移动通信系统

4.2 卫星通信系统

4.3 磁盘存储系统

五、Viterbi译码的优缺点分析

5.1 优点

5.2 缺点

六、Matlab算法示例

七、总结


一、引言

在数字通信领域,为了确保信息的可靠传输,我们常常需要对发送的数据进行编码,并在接收端进行译码。其中,Viterbi译码是一种广泛使用的最大似然序列估计算法,用于在存在噪声和干扰的通信信道中恢复原始数据。本文将详细介绍Viterbi译码的基本原理、应用场景、优缺点,并与其他译码技术进行比较。

二、Viterbi译码的基本原理

Viterbi译码算法是一种基于动态规划的最优路径搜索算法,它由Andrew Viterbi于1967年提出,最初用于卷积码的解码。Viterbi译码通过寻找最可能的发送序列来估计原始信息,即在所有可能的发送序列中,选择一条与接收序列差异最小的路径作为最优估计。

2.1 卷积码与网格图

在理解Viterbi译码之前,我们需要先了解卷积码。卷积码是一种纠错编码方式,它通过将输入数据与编码器的状态进行卷积运算来生成输出码字。卷积码的特点是可以利用历史信息,使得码字之间存在一定的相关性。这种相关性可以通过网格图来表示,网格图中的每一条路径都对应一个可能的发送序列。

2.2 Viterbi算法的核心思想

Viterbi算法的核心思想是在网格图中搜索最优路径。它按照时间顺序逐步计算每个状态的最优路径度量值,并保留到达每个状态的最优路径。在每一步中,算法都会根据当前接收到的符号和状态转移概率来更新路径度量值。最终,算法选择一条具有最小路径度量值的路径作为最优估计。

2.3 路径度量与状态转移

路径度量是衡量路径优劣的指标,通常定义为路径上所有分支的度量值之和。分支度量值可以根据接收符号与预期符号之间的差异来计算,差异越小,度量值越小。状态转移是指从一个状态转移到另一个状态的过程,每个状态转移都对应一个分支度量值。

三、Viterbi译码算法工作原理详解

Viterbi译码算法是一种最大似然序列估计(MLSE)算法,用于在存在噪声的情况下解码卷积码,它是由Andrew Viterbi在1967年提出的。该算法通过动态规划的方式,寻找最有可能通过卷积码编码器和噪声信道传输的原始信息序列。

3.1 算法流程

  1. 初始化:确定所有状态在时刻t=0的路径度量值。对于起始状态,路径度量通常设为0,而对于其他所有状态,路径度量则设为无穷大(表示不可能的状态)。

  2. 递推(路径度量计算与更新):对于每个时刻t和每个状态s,计算到达该状态的所有可能路径的度量值。路径度量通常基于接收序列和假设路径之间的差异,如汉明距离或欧氏距离。选择具有最小度量值的路径作为幸存路径,并更新路径度量和路径历史。

  3. 终止:在达到接收序列的末尾时,选择具有最小路径度量的状态作为最终状态。

  4. 回溯:从最终状态开始,沿着幸存路径回溯到初始状态,从而确定最可能的原始信息序列。

3.2 关键步骤

  • 分支度量计算:对于每个状态和每个可能的输入比特,计算从当前状态转移到下一状态的分支度量。这通常涉及计算接收序列与假设分支之间的差异。

  • 加-比较-选择(ACS)操作:对于每个状态,将所有进入该状态的路径的度量值相加,并与当前状态的幸存路径度量进行比较。选择具有最小度量值的路径作为新的幸存路径。

  • 路径历史存储:为了能够在最后进行回溯,需要存储每个状态和时刻的幸存路径历史信息。

3.3 译码算法举例

维特比算法就是寻找一条路径,使得该路径的编码输出与接收序列的汉明距离最小,其关键就是路径的寻找过程。

  • 根据网格图(Trellis)(【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-卷积码原理),首先,我们从第一个状态出发,到下一个状态有两种路径,分别计算这两条路径的编码输出与接收序列的汉明距离(注意,此时不能进行任何舍弃,不能将距离大的舍弃)。

  • 第二步,从第一步到达的两个状态出发,继续寻找路径,由于2位移位寄存器共有四种状态,因此此时我们得到到达所有状态的路径(无论是否最优)

  • 第三步,从这四个状态出发,继续寻找路径,此时我们将得到8种路径。这一步是算法的关键,此时要保留到达各状态的最短路径,舍弃其他路径,即舍弃后仍保留四条路径,且四条路径分别对应四个状态(无论该状态以后的路径如何选择,当到达该状态时,该状态以前的路径一定是最优的)。对于(n,k,N)卷积码,进行维特比译码时,当到达第N步时,要对路径进行舍弃,只保留幸存路径的信息,储存幸存路径以及当前的累计距离。

  • 第四步:继续进行路径寻找,同样只保留每个状态下的幸村路径,直至步数达到输入序列的个数。

维特比算法复杂度:每步要比较2×2^(N-1)条路径(每个状态两条),计算量与步数(输入码的个数)成正比。

3.4 性能特点

  • 最优性能:在给定足够长的接收序列时,Viterbi译码器能够提供最大似然序列估计,即它能够找到最有可能的原始信息序列。

  • 复杂度:Viterbi译码的复杂度随约束长度的增加而指数增长。然而,通过有效的实现技术(如量化和剪枝),可以降低实际应用的复杂度。

  • 延迟:由于Viterbi译码是一种块处理算法,它通常会在接收到整个块或一段足够长的序列后才开始解码,这可能会导致一定的解码延迟。

  • 适用于多种信道:Viterbi译码不仅适用于加性白高斯噪声(AWGN)信道,还适用于其他类型的信道,如瑞利衰落信道和多径信道。

四、Viterbi译码的应用场景

Viterbi译码广泛应用于各种数字通信系统,特别是那些对误码率要求较高的场景。以下是一些典型的应用场景:

4.1 移动通信系统

在移动通信系统中,由于信道条件复杂多变,信号在传输过程中容易受到干扰和衰落。Viterbi译码可以有效地纠正由于信道干扰引起的误码,提高通信系统的可靠性。

4.2 卫星通信系统

卫星通信系统面临着长距离传输和大气层干扰等挑战。Viterbi译码结合其他纠错编码技术,可以在恶劣的信道条件下实现数据的可靠传输。

4.3 磁盘存储系统

在磁盘存储系统中,由于磁盘表面的缺陷、磁头的不稳定性以及外部干扰等因素,读取数据时可能会发生错误。Viterbi译码可以提高磁盘存储系统的数据恢复能力,减少读取错误的发生。

五、Viterbi译码的优缺点分析

5.1 优点

(1)性能优越:Viterbi译码是一种最大似然序列估计算法,它能够在存在噪声和干扰的信道中实现较低的误码率。

(2)适用于多种信道条件:Viterbi译码算法对信道条件的变化具有较强的适应性,可以应用于不同类型的信道。

(3)可与其他技术结合使用:Viterbi译码可以与其他纠错编码技术、调制技术等结合使用,进一步提高通信系统的性能。

5.2 缺点

(1)计算复杂度较高:Viterbi译码算法的计算复杂度随约束长度的增加而呈指数增长,这限制了其在一些实时性要求较高的场景中的应用。

(2)存储需求较大:为了实现Viterbi译码,需要存储大量的路径度量值和状态信息,这对硬件的存储能力提出了更高的要求。

(3)对初始状态敏感:Viterbi译码的性能受到初始状态选择的影响,如果初始状态选择不当,可能会导致译码性能下降。

六、Matlab算法示例

下面是一个简单的Viterbi译码算法的Matlab实现示例。请注意,这个例子假设你已经有了卷积码的生成多项式、输入信号(接收序列)以及其他必要的参数。

function decoded_bits = viterbi_decoder(received_signal, constraint_length, generator_polynomials)  % received_signal: 接收到的信号序列(1 x N 向量)  % constraint_length: 约束长度(标量)  % generator_polynomials: 生成多项式的矩阵形式(K-1 x R 矩阵,K是约束长度,R是输出数量)  % decoded_bits: 译码后的比特序列(1 x (N/R) 向量,R是输出数量)  % 参数检查  if nargin < 3  error('Not enough input arguments.');  end  % 初始化变量  N = length(received_signal); % 接收信号长度  R = size(generator_polynomials, 2); % 输出数量(速率为1/R)  num_states = 2^(constraint_length - 1); % 状态数  trellis = poly2trellis(constraint_length - 1, generator_polynomials); % 创建网格结构  % 初始化路径度量和路径历史  path_metrics = zeros(num_states, N/R); % 路径度量矩阵  path_metrics(:, 1) = inf; % 初始化为无穷大  path_history = cell(num_states, N/R); % 路径历史单元数组  % 开始状态(全零状态)的路径度量和历史  start_state = 0;  path_metrics(start_state + 1, 1) = 0; % Matlab索引从1开始  path_history{start_state + 1, 1} = start_state;  % Viterbi算法主循环  for t = 2:N/R  for s = 0:num_states-1  % 计算到达当前状态的所有可能的前一状态  prev_states = viterbistate(trellis, s);  % 对于每个可能的前一状态,计算分支度量  for ps = prev_states  branch_metrics = hammingdist(received_signal((t-1)*R + 1:t*R), ...  encode(trellis, [path_history{ps + 1, t-1}, 0], 0, 'truncation', 'conventional')*2 - 1);  % 计算路径度量并更新如果找到更好的路径  metrics = path_metrics(ps + 1, t-1) + branch_metrics;  if metrics < path_metrics(s + 1, t)  path_metrics(s + 1, t) = metrics;  path_history{s + 1, t} = ps;  end  end  end  end  % 回溯找到最佳路径  [~, end_state] = min(path_metrics(:, end));  decoded_bits = zeros(1, N/R);  for t = N/R:-1:1  decoded_bits(t) = mod(end_state, 2); % 提取最后一位作为译码比特  end_state = floor(end_state / 2); % 移除最后一位以回溯  if t > 1  [~, end_state] = ismember(path_history{end_state + 1, t}, 0:num_states-1); % 找到前一状态  end  end  % 翻转译码比特序列,因为我们是从后向前回溯的  decoded_bits = fliplr(decoded_bits);  
end  % 注意:此代码片段是一个概念示例,可能需要针对您的特定应用场景进行调整。  
% 实际使用中,请确保所有输入参数都是正确和有效的,并考虑代码的边界情况和错误处理。  
% 此外,'encode' 函数用于模拟卷积编码过程,可能需要根据您的具体编码方案进行修改。  
% 代码中用到的 'hammingdist' 函数计算汉明距离,用于计算分支度量。如果您的信号不是二进制或者有不同的度量标准,请相应修改。

七、总结

Viterbi译码作为一种高效的纠错编码技术,在数字通信领域具有广泛的应用前景。它通过动态规划的方法在网格图中搜索最优路径,实现了在低信噪比和复杂信道条件下的可靠数据传输。卷积码和Viterbi算法在非常低的信噪比下性能不佳,复杂度随约束长度增加而增加;Turbo码是一种高级的前向纠错码,由两个或多个卷积编码器和一个随机交织器组成,使用迭代解码来逼近最大似然解码的性能,在较低信噪比下接近香农极限的性能。后续我们会介绍Turbo码原理和解码算法。

相关文章:

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理

目录 一、引言 二、Viterbi译码的基本原理 2.1 卷积码与网格图 2.2 Viterbi算法的核心思想 2.3 路径度量与状态转移 三、Viterbi译码算法工作原理详解 3.1 算法流程 3.2 关键步骤 3.3 译码算法举例 3.4 性能特点 四、Viterbi译码的应用场景 4.1 移动通信系统 4.2 卫…...

矩阵在计算机图像处理中的应用

矩阵在计算机图像处理中是非常核心的概念&#xff0c;因为它们为表示和操作图像数据提供了一种非常方便和强大的方式。以下是矩阵在计算机图像处理中的一些关键作用&#xff1a; 图像表示&#xff1a;在计算机中&#xff0c;图像通常被表示为像素矩阵&#xff0c;也就是二维数组…...

Java实现教学资源共享平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…...

Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件

ant用处,主要用在编译java文件,打包,部署。打包:jar,war,ear包等。ant在项目中有很重要的作用。今天我们讲解它的另一个作用:执行 SQL 脚本文件。 1 引入依赖 <dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId&g…...

161基于matlab的快速谱峭度方法

基于matlab的快速谱峭度方法&#xff0c;选择信号峭度最大的频段进行滤波&#xff0c;对滤波好信号进行包络谱分析。输出快速谱峭度及包络谱结果。程序已调通&#xff0c;可直接运行。 161 信号处理 快速谱峭度 包络谱分析 (xiaohongshu.com)...

CTFshow-WEB入门-信息搜集

web1&#xff08;查看注释1&#xff09; wp 右键查看源代码即可找到flag web2&#xff08;查看注释2&#xff09; wp 【CtrlU】快捷键查看源代码即可找到flag web3&#xff08;抓包与重发包&#xff09; wp 抓包后重新发包&#xff0c;在响应包中找到flag web4&#xff08;robo…...

django密码管理器(创建项目)

目录 创建项目 安装django 创建项目(django-admin) 创建管理员用户 创建数据库 创建项目 新建一个项目文件夹&#xff0c;如"密码管理器" 安装django 要先安装pip,pip安装地址:pypi.org、pypi.python.org、cheeseshop.python.org pip install django 创建项…...

Centos7之Oracle12c安装与远程连接配置

Centos7之Oracle12c安装与远程连接配置 文章目录 Centos7之Oracle12c安装与远程连接配置1.Oracle官网2. Centos7中安装Oracle12c(12.2.0.1.0)2.1 Introduction (介绍)2.2 Prerequisites(先决条件)2.3 Installation Steps(安装步骤)2.4 Oracle Installer Screens(Oracle安装程序…...

CVE-2022-25578 漏洞复现

CVE-2022-25578 路由/admin/admin.php是后台&#xff0c;登录账号和密码默认是admin、tao&#xff0c;选择文件管理。 是否还记得文件上传中的.htaccess配置文件绕过发&#xff0c;在这个文件中加入一句AddType application/x-httpd-php .jpg&#xff0c;将所有jpg文件当作php…...

Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)

一&#xff1a;进入U盘安转引导时黑屏 问题描述&#xff1a;选择’try or install ubuntu’&#xff0c;开始安装&#xff0c;出现黑屏。 解决方法&#xff1a;&#xff08;可行&#xff09; 安装时&#xff0c;先选择" try or install ubuntu", 此时不要按enter&a…...

一、DataX简介

DataX简介 一、什么是DataX二、DataX设计三、支持的数据源四、框架设计五、运行原理六、DataX和Sqoop对比 一、什么是DataX DataX是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库&#xff08;MySQL、Oracle等&#xff09;、HDFS、Hive、OD…...

直播app开发,技术驱动的实时互动新纪元

随着互联网技术的快速发展&#xff0c;直播已成为我们日常生活的重要组成部分。从娱乐、教育到商业活动&#xff0c;直播的广泛应用正在改变着我们的生活和工作方式。在这一变革中&#xff0c;直播开发扮演着至关重要的角色。本文将探讨直播开发的核心理念、技术挑战以及未来的…...

Apache POI的介绍以及使用示例

Apache POI 是一套开源的 Java 库&#xff0c;用于读取和写入 Microsoft Office 文档格式&#xff0c;如 Excel、Word 和 PowerPoint。Spring Boot 是一个流行的 Java 应用程序框架&#xff0c;用于简化 Spring 应用的开发和部署。将 Apache POI 与 Spring Boot 结合使用&#…...

npm config set registry https://registry.npm.taobao.org 这个设置了默认的镜像源之后如何恢复默认的镜像源

要恢复npm默认的镜像源&#xff0c;你可以使用以下命令将registry设置回npm的官方源&#xff1a; npm config set registry https://registry.npmjs.org/这个命令会修改你的全局npm配置&#xff0c;将包的下载源改回npm官方的源。这样做之后&#xff0c;任何后续的npm install…...

算法沉淀——位运算(leetcode真题剖析)

算法沉淀——位运算 常用位运算总结1.基础位运算2.确定一个数中第x位是0还是13.将一个数的第x位改成14.将一个数的第x位改成05.位图6.提取一个数最右边的17.删掉一个数最右边的18.异或运算9.基础例题 力扣题目讲解01.面试题 01.01. 判定字符是否唯一02.丢失的数字03.两整数之和…...

React18原理: 再聊Fiber架构下的时间分片

时间分片 react的任务可以被打断&#xff0c;其实就是基于时间分片的人眼最高能识别的帧数不超过30帧&#xff0c;电影的帧数差不多是在24浏览器的帧率一般来说是60帧&#xff0c;也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…...

【玩转408数据结构】线性表——线性表的顺序表示(顺序表)

知识回顾 通过前文&#xff0c;我们了解到线性表是具有相同数据类型的有限个数据元素序列&#xff1b;并且&#xff0c;线性表只是一种逻辑结构&#xff0c;其不同存储形式所展现出的也略有不同&#xff0c;那么今天我们来了解一下线性表的顺序存储——顺序表。 顺序表的定义 …...

图像处理之《黑盒扰动的可逆噪声流鲁棒水印》论文阅读

一、文章摘要 近年来&#xff0c;基于深度学习的数字水印框架得到了广泛的研究。现有的方法大多采用基于“编码器-噪声层-解码器”的架构&#xff0c;其中嵌入和提取过程分别由编码器和解码器完成。然而&#xff0c;这种框架的一个潜在缺点是编码器和解码器可能不能很好地耦合…...

一个Vivado仿真问题的debug

我最近在看Synopsys的MPHY仿真代码&#xff0c;想以此为参考写个能实现PWM-G1功能的MPHY&#xff0c;并应用于ProFPGA原型验证平台。我从中抽取了一部分代码&#xff0c;用Vivado自带的仿真器进行仿真&#xff0c;然后就遇到了一个莫名其妙的问题&#xff0c;谨以此文作为debug…...

C#阿里云消息列队推送消息

推送消息到队列 IMNS nativeclient new Aliyun.MNS.MNSClient(accessKeyId, accessKeySecret, endpoint, _stsToken);var nativeSend nativeclient.GetNativeTopic("SMQ");nativeSend.PublishMessage("推送消息内容"); 需要引用Aliyun.MNS.dll 下载地址…...

Stable Diffusion 模型下载:majicMIX sombre 麦橘唯美

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十...

WindowsLinuxmeterepreter渗透命令回顾

最近小编发现在学红队的时候总会忘记一些命令&#xff08;基础的&#xff09;&#xff0c;导致整天红温&#xff0c;于是今天就来偷个懒记一下&#xff08;一起回顾一下&#xff09; 1.Linux 1.查看当前按目录 pwd2.查看文件内容 cat filename.txt3.cd 家族 cd ..|| cd ../…...

KingSCADA实现按钮点击效果

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 在做SCADA项目的时候&#xff0c;按钮是不可缺少的功能&#xff0c;但软件自带的按钮太丑&#xff0c;已经无法满足现如今客户对界面美观度的要求。 这时候就需要UI小姐姐设计美观大气的SCADA界面&#xff0c;但UI设计…...

Python编程-二万字浅谈装饰器原理与装饰器设计模式和函数式编程案例讲解

Python编程-浅析装饰器原理与装饰器设计模式和函数式编程案例讲解 本文制作时基于Python3.11.8与Python3.12.1&#xff0c;存在谬误&#xff0c;请联系修改&#xff0c;希望对你有所帮助 什么是函数式编程 函数式编程&#xff08;Functional Programming&#xff09;是一种编程…...

基于Zigbee的智能温室大棚系统(附详细使用教程+完整代码+原理图+完整课设报告)

🎊项目专栏:【Zigbee课程设计系列文章】(附详细使用教程+完整代码+原理图+完整课设报告) 前言 👑由于无线传感器网络(也即是Zigbee)作为🌐物联网工程的一门必修专业课,具有很强的实用性,因此很多院校都开设了zigbee的实训课程;👑同时最近很多使用了我的单片机课…...

【Web】Redis未授权访问漏洞学习笔记

目录 简介 靶机配置 Redis持久化 Redis动态修改配置 webshell 反弹shell Redis写入反弹shell任务 加固方案 简介 Redis&#xff08;Remote Dictionary Server 远程字典服务器&#xff09;是一个开源的内存数据库&#xff0c;也被称为数据结构服务器&#xff0c;它支持…...

【JAVA WEB】 css背景属性 圆角矩形的绘制

目录 背景属性设置 圆角矩形 背景属性设置 背景颜色,在style中 background-color:颜色&#xff1b; 背景图片 background-image:url(……) 背景图片的平铺方式 background-repeat: 平铺方式 repeat 平铺&#xff08;默认&#xff09;no-repeat 不平铺repeat-x 水平平铺repea…...

Docker-现代化应用部署的利器

一、容器部署的发展 今天我们来说说容器部署。我们知道容器部署的发展大致分三个阶段&#xff0c;下面来介绍一下不同阶段的部署方式的优缺点 物理机部署 优点是可以提供更高的性能、资源控制&#xff0c;也可以提供更好的数据隔离和安全性&#xff0c;因为不同的应用程序运行在…...

「优选算法」:山脉数组的峰顶索引

一、题目 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i1] > ... > arr[arr.length - 1] …...

网络安全红队基础建设与介绍

1.ATT&CK相关背景 ATT&CK在各种日常环境中都很有价值。开展任何防御活动时&#xff0c;可以应用ATT&CK防御法&#xff0c;参考攻击者及其行为。ATT&CK不仅对网络防御者提供通用技术库&#xff0c;还为渗透测试和红队提供了基础。提到对抗行为时&#xff0c;这为…...

Java语法学习反射

Java语法学习反射 大纲 基本介绍class的介绍 具体案例 1. 基本介绍 流程图&#xff08;程序在计算机的阶段&#xff09; 反射的主要的类 这个提高效率不大 2. class的介绍 对于第三点&#xff1a;首先类只会加载一次&#xff0c;得到的class的对象&#xff0c;也只有一…...

【MySQL】操作库 —— 库的操作 -- 详解

一、增删数据库 1、创建数据库 create database db_name; 本质就是在 /var/lib/mysql 创建一个目录。 说明&#xff1a; 大写的表示关键字。[ ] 是可选项。CHARACTER SET&#xff1a;指定数据库采用的字符集。COLLATE&#xff1a;指定数据库字符集的校验规则。 2、数据库删除…...

Rust安装——Win10

安装步骤 1、下载RUSTUP-INIT.EXE&#xff08;64-BIT&#xff09; 2、由于国外源下载依赖太慢&#xff0c;因此建议增加win10环境变量配置国内源&#xff0c;增加RUSTUP_DIST_SERVER、RUSTUP_UPDATE_ROOT环境变量即可 RUSTUP_DIST_SERVER随便选择其中的一个源就行&#xff0c;…...

【教学类-46-07】20240212立体春字1.0

背景需求&#xff1a; 在南浔古镇的非遗文化馆里看到一个新年活动折纸——立体春字&#xff0c; 我记得这个就是一个双三角结构折纸&#xff0c;完全可以用15*15的手工纸给孩子们做一套。 折纸教程 双三角折法 【“鼠”你有才】纸艺教学 剪纸——立体春字&#xff08;2月23日…...

Python语言例题集(003)

#!/usr/bin/python3 #猜数字 import random secretNumberrandom.randint(1,20) print(‘我想了一个1到20间的整数&#xff0c;你能猜出来吗&#xff1f;’) for guessesTaken in range(1,7): print(‘猜一下&#xff01;’) guessint(input()) if guess<secretNumber: pr…...

UE5 播放本地MP3、MP4

1.创建一个媒体播放器 2.如创建视频&#xff0c;勾选。 它会多一个媒体纹理给你 3.1 设置音频 在一个actor上添加“媒体音频组件” “音频媒体播放器”赋值给它 3.2播放音频 添加一个音频媒体播放器变量&#xff0c; 赋值 地址使用绝对地址 4.1设置视频 UI上创建一个imag…...

NLP_“预训练+微调大模型”模式和Prompt/Instruct模式的异同

文章目录 “预训练微调大模型”的模式以提示/指令模式直接使用大模型“预训练微调大模型”模式和Prompt/Instruct模式的异同小结 “预训练微调大模型”的模式 经过预训练的大模型所习得的语义信息和所蕴含的语言知识&#xff0c;很容易向下游任务迁移。NLP应用人员可以根据自己…...

普通人应该如何使用GPT

现在GPT4推出的GPTs&#xff0c;包含了各个行业方向&#xff0c;比如DALL&#xff08;绘图&#xff09;、Diagrams&#xff08;图标、流程图&#xff09;、KAYAK&#xff08;航旅助手&#xff09;、Murder Mystery Mayhem&#xff08;侦探扮演&#xff09;、Canva&#xff08;设…...

pycharm像jupyter一样在控制台查看后台变量

更新下&#xff1a;这个一劳永逸不用一个一个改 https://blog.csdn.net/Onlyone_1314/article/details/109347481 右上角运行...

Ansible command命令模块 这个模块可以直接在远程主机上执行命令,并将结果返回本主机。

目录 参数介绍练习环境配置主机清单配置无密码链接ping模块 command 命令模块也可以用来安装点东西看个路径 command 指定目录来 指定命令 参数介绍 chdir    # 在执行命令之前&#xff0c;先切换到该目录 executable # 切换shell来执行命令&#xff0c;需要使用命令的绝对…...

C语言-3

定义指针 /*指针的概念:1.为了方便访问内存中的内容&#xff0c;给每一个内存单元&#xff0c;进行编号&#xff0c;那么我们称这个编号为地址&#xff0c;也就是指针。2.指针也是一种数据类型&#xff0c;指针变量有自己的内存&#xff0c;里面存储的是地址&#xff0c;也就是…...

Quartus工程的qsf配置约束文件介绍

一、qsf文件概述 qsf&#xff1a;Quartus Setting File&#xff0c;是Quartus工程的配置文件&#xff1b; 包含一个Quartus工程的所有约束&#xff0c;包括工程的软件版本信息、FPGA器件信息、引脚约分配、引脚电平分配&#xff0c;编译约束和用于Classic TimingAnalyzer的时…...

【网工】华为设备命令学习(Telnet)

本次实验AR3为我们实际中远程的路由&#xff0c;AR4模拟我们的设备&#xff0c;最终实现Telnet的远程控制路由&#xff01; 本次笔记主要记录Telnet技术实现原理&#xff0c;后续再补充具体配置代码。 Telnet协议是TCP/IP协议族中的一员&#xff0c;是Internet远程登录服务的…...

搜索专项---最短路模型

文章目录 迷宫问题武士风度的牛抓住那头牛 一、迷宫问题OJ链接 本题思路:只需要记录各个点是有哪个点走过来的&#xff0c;就能递推得出路径。记录前驱假设从 1,1 这个点向下走到了2, 1&#xff0c;则将2,1这个点的前驱记为1,1。这样&#xff0c;将整张地图 bfs 后&#xff0c…...

安装PostgreSQL和PostGIS

安装环境 Windows 2019 Standard Server 安装PostgreSQL 安装PostgreSQL 16 安装PostGIS 用PostgreSQL 16对应的PostGIS https://download.osgeo.org/postgis/windows/pg16/ https://download.osgeo.org/postgis/windows/pg16/postgis-bundle-pg16x64-setup-3.4.1-1.exe 创建…...

MySQL-----DCL基础操作

▶ DCL简介 DCL英文全称是Data ControlLanguage(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 DCL--管理用户 ▶ 查询用户 use mysql; select * from user; ▶ 创建用户 ▶ 语法 create user 用户名主机名 identified by 密码 设置为在任意主机上访问…...

Unity报错Currently selected scripting backend (IL2CPP) is not installed

目录 什么是il2cpp il2cpp换mono Unity打包报错Currently selected scripting backend (IL2CPP) is not installed 什么是il2cpp Unity 编辑器模式下是采用.net 虚拟机解释执行.net 代码,发布的时候有两种模式,一种是mono虚拟机模式,一种是il2cpp模式。由于iOS AppStore…...

LeetCode79. Word Search——回溯

文章目录 一、题目二、题解 一、题目 Given an m x n grid of characters board and a string word, return true if word exists in the grid. The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertic…...

Linux命令-blkid命令(查看块设备的文件系统类型、LABEL、UUID等信息)

说明 在Linux下可以使用 blkid命令 对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备&#xff08;包括交换分区&#xff09;所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。 语法 blkid -L | -U blkid [-c…...

服务治理中间件-Eureka

目录 简介 搭建Eureka服务 注册服务到Eureka 简介 Eureka是Spring团队开发的服务治理中间件&#xff0c;可以轻松在项目中&#xff0c;实现服务的注册与发现&#xff0c;相比于阿里巴巴的Nacos、Apache基金会的Zookeeper&#xff0c;更加契合Spring项目&#xff0c;缺点就是…...