逆采样(Inverse Sampling)和拒绝采样(Reject Sampling)原理详解

2023-05-16

在蒙特卡罗方法中,有一个关键的问题需要解决,即如何基于概率密度函数去采的 n n n x x x的样本集。

逆采样(Inverse Sampling)和拒绝采样(Reject Sampling)就是用于解决这个问题的。

其中,对于常见的分布,如均匀分布,高斯分布,指数分布,t分布,F分布,Beta分布,Gamma分布等,可以采用逆采样的方法进行采样;不过很多时候,我们的 x x x的概率分布不是常见的分布,这些分布的概率分布函数CDF 不可逆,因此没有办法用逆采样来采样,这意味着我们没法方便的得到这些非常见的概率分布的样本集。拒绝采样就是用来解决这个问题。

一、逆采样(Inverse Sampling)

我们知道,对于常见的均匀分布 u n i f o r m ( 0 , 1 ) uniform(0,1) uniform(0,1)是非常容易采样样本的,一般通过线性同余发生器可以很方便的生成(0,1)之间的伪随机数样本。而其他常见的概率分布,无论是离散的分布还是连续的分布,它们的样本都可以通过 u n i f o r m ( 0 , 1 ) uniform(0,1) uniform(0,1)的样本转换而得。那么应该如何得到呢?这就是逆采样。

下面我们以指数分布为例,说明如何通过均匀分布来采样服从指数分布的样本集。指数分布的概率密度函数PDF为:
p e x p ( x ) = { λ e x p ( − λ x ) , x ≥ 0 0 , x &lt; 0 (1) p_{exp}(x) = \begin{cases} \lambda exp(-\lambda x) &amp;,x\ge0\\ 0&amp;, x\lt0 \end{cases}\qquad \text{(1)} pexp(x)={λexp(λx)0,x0,x<0(1)

那么它的概率分布函数CDF为:
F ( x ) = ∫ − ∞ x p ( x ) d x (2) F(x) = \int_{-\infty}^xp(x)dx\qquad \text{(2)} F(x)=xp(x)dx(2)

下图为指数分布和均匀分布的CDF图。从左图上看,在 x ≥ 0 x\ge0 x0的部分是一个单调递增的函数(在定义域上单调非减),定义域和值域是 [ 0 , + ∞ ) → [ 0 , 1 ) [0,+\infty) \to [0,1) [0,+)[0,1),在 p ( x ) p(x) p(x)大的地方它增长快,反之亦然。

因为它是唯一映射的(在>0的部分,接下来我们只考虑这一部分),所以它的反函数可以表示为 F − 1 ( a ) , a ∈ [ 0 , 1 ) , 值 域 为 [ 0 , + ∞ ) F^{-1}(a),a\in [0,1), 值域为[0,+\infty) F1(a)a[0,1),[0,+)。(上图的左图就是 F ( x ) F(x) F(x)的图)

因为 F F F单调递增,所以 F − 1 F^{-1} F1也是单调递增的:
x ≤ y ⇒ F ( x ) ≤ F ( y ) a ≤ b ⇒ F − 1 ( a ) ≤ F − 1 ( b ) (3) \begin{aligned} x\le y &amp;\Rightarrow F(x) \le F(y)\\ a\le b &amp;\Rightarrow F^{-1}(a) \le F^{-1}(b)\qquad \text{(3)} \end{aligned} xyabF(x)F(y)F1(a)F1(b)(3)

利用反函数的定义,我们有:
F − 1 ( a ) &lt; x , i f f    a &lt; F ( x ) (4) F^{-1}(a)&lt;x,iff\ \ a&lt;F(x)\qquad \text{(4)} F1(a)<x,iff  a<F(x)(4)

接下来,我们定义一下 [ 0 , 1 ] [0,1] [0,1]均匀分布的CDF,这个很好理解:
P ( a ≤ x ) = H ( x ) = { 1 , x ≥ 1 x , 0 ≤ x ≤ 1 0 , x &lt; 0 (5) P(a\le x) = H(x) = \begin{cases} 1 &amp;,x \ge 1\\ x &amp;,0\le x\le1\\ 0&amp;, x\lt0 \end{cases}\qquad \text{(5)} P(ax)=H(x)=1x0,x1,0x1,x<0(5)

根据公式(4)和公式(5),有:
P ( F − 1 ( a ) ≤ x ) = P ( a ≤ F ( x ) ) = H ( F ( x ) ) (6) P(F^{-1}(a) \le x) = P(a \le F(x)) = H(F(x))\qquad \text{(6)} P(F1(a)x)=P(aF(x))=H(F(x))(6)

因为 F ( x ) F(x) F(x)的值域 [ 0 , 1 ) [0,1) [0,1),根据公式(5),公式(6)可以改写为:
P ( F − 1 ( a ) ≤ x ) = H ( F ( x ) ) = F ( x ) (7) P(F^{-1}(a) \le x) = H(F(x)) = F(x)\qquad \text{(7)} P(F1(a)x)=H(F(x))=F(x)(7)

F ( x ) F(x) F(x)的定义,它是exp分布的CDF,所以公式(7)的意思是 F − 1 ( a ) F^{-1}(a) F1(a)符合exp分布,我们通过 F F F的反函数将一个0到1均匀分布的随机数转换成了符合exp分布的随机数,注意,以上推导对于CDF可逆的分布都是一样的。对于exp来说,它的反函数的形式是:
F e x p − 1 ( a ) = − 1 λ ∗ l o g ( 1 − a ) (8) F^{-1}_{exp}(a) = -\frac{1}{\lambda}*log(1-a)\qquad \text{(8)} Fexp1(a)=λ1log(1a)(8)

具体的映射关系可以看下图(a),我们从 y 轴 0-1 的均匀分布样本(绿色)映射得到了服从指数分布的样本(红色)。

我们写一点代码来看看效果:

def sampleExp(Lambda = 2,maxCnt = 50000):
    ys = []
    standardXaxis = []
    standardExp = []
    for i in range(maxCnt):
        u = np.random.random()
        y = -1/Lambda*np.log(1-u) #F-1(X)
        ys.append(y)
    for i in range(1000):
        t = Lambda * np.exp(-Lambda*i/100)
        standardXaxis.append(i/100)
        standardExp.append(t)
    plt.plot(standardXaxis,standardExp,'r')
    plt.hist(ys,1000,normed=True)
    plt.show()

sampleExp()

最后绘制出来的直方图可以看出来就是 exp 分布图,见上图(b)。可以看到随着采样数量的变多,概率直方图和真实的 CDF 就越接近。

以上就是逆采样的过程。我们的结论是:因为CDF是单调函数(累积的概率只能越来越大,直到为1),因此,只要某分布的CDF可逆,那么就可以通过均匀分布来采样服从该分布的样本集。

二、拒绝采样(Reject Sampling)

2.1 原理

对于那些复杂的不可求逆的分布,拒绝采样就是针对此类复杂问题的一种随机采样方法。

我们以求圆周率 π \pi π的例子入手,讲解拒绝采样的思想。通过采样的方法来计算 π \pi π值,也就是在一个 1 × 1 1×1 1×1的范围内随机采样一个点,如果它到原点的距离小于1,则说明它在1/4圆内,则接受它,最后通过接受的占比来计算1/4圆形的面积,从而根据公式反算出预估 π ^ \hat{\pi} π^的值,随着采样点的增多,最后的结果 π ^ \hat{\pi} π^会越精准。

上面这个例子里说明一个问题,我们想求一个空间里均匀分布的集合面积,可以尝试在更大范围内按照均匀分布随机采样,如果采样点在集合中,则接受,否则拒绝。最后的接受概率就是集合在”更大范围“的面积占比。

接下来,我们来形式化地说明拒绝采样。

给定一个概率分布 p ( z ) = 1 Z p p ~ ( z ) p(z)=\frac{1}{Z_p} \tilde{p}(z) p(z)=Zp1p~(z),其中, p ~ ( z ) \tilde{p}(z) p~(z)已知, Z p Z_p Zp为归一化常数,未知。要对该分布 p ( z ) p(z) p(z)进行拒绝采样,首先需要借用一个简单的参考分布(proposal distribution),记为 q ( x ) q(x) q(x),该分布的采样易于实现,如均匀分布、高斯分布。然后引入常数 k k k,使得对所有的的 z z z,满足 k q ( z ) ≥ p ~ ( z ) kq(z)\geq\tilde{p}(z) kq(z)p~(z),如下图所示,红色的曲线为 p ~ ( z ) \tilde{p}(z) p~(z),蓝色的曲线为 k q ( z ) kq(z) kq(z)

在每次采样中,首先从 q ( z ) q(z) q(z)采样一个数值 z 0 z_0 z0,然后在区间 [ 0 , k q ( z 0 ) ] [0,kq(z_0)] [0,kq(z0)]进行均匀采样,得到 u 0 u_0 u0。如果 u 0 &lt; p ~ ( z 0 ) u_0&lt;\tilde{p}(z_0) u0<p~(z0),则保留该采样值,否则舍弃该采样值。最后得到的数据就是对 p ( z ) {p}(z) p(z)分布的一个近似采样。 结合图,直观来理解上述的过程: x = z 0 x=z_0 x=z0这条线上,从 [ 0 , k q ( z 0 ) ] [0,kq(z_0)] [0,kq(z0)]均匀采样中一个值,如果这个值小于 p ~ ( z 0 ) \tilde{p}(z_0) p~(z0),即这个均匀采样的这个值落在了 p ~ ( z 0 ) \tilde{p}(z_0) p~(z0)的下方,我们就接受 z 0 z_0 z0这个采样值。

我们知道,每次采样的接受概率计算如下:
p ( a c c e p t ) = ∫ p ~ ( z ) k q ( z ) q ( z ) d z = 1 k ∫ p ~ ( z ) d z p(accept)=\displaystyle\int{\dfrac{\tilde{p}(z)}{kq(z)}}q(z)dz = \dfrac{1}{k} \int{\tilde{p}(z)}dz p(accept)=kq(z)p~(z)q(z)dz=k1p~(z)dz

所以,为了提高接受概率,防止舍弃过多的采样值而导致采样效率低下, k k k的选取应该在满足 k q ( z ) ≥ p ~ ( z ) kq(z)\geq\tilde{p}(z) kq(z)p~(z)的基础上尽可能小

拒绝采样问题可以这样理解, p ~ ( z ) \tilde{p}(z) p~(z) x x x轴之间的区域为要估计的问题,类似于上面提到的圆形区域, k q ( z ) kq(z) kq(z) x x x轴之间的区域为参考区域,类似于上面提到的正方形。由于 k q ( z ) kq(z) kq(z) x x x轴之间的区域面积为 k k k(原来的概率密度函数的面积为1,现在扩大了 k k k倍,故 k × 1 k\times1 k×1),所以, p ~ ( z ) \tilde{p}(z) p~(z) x x x轴之间的区域面积除以 k k k即为对 p ( z ) p(z) p(z)的估计。在每一个采样点,以 [ 0 , k q ( z 0 ) ] [0,kq(z_0)] [0,kq(z0)]为界限,落在 p ~ ( z ) \tilde{p}(z) p~(z)曲线以下的点就是服从 p ( z ) p(z) p(z)分布的点。

2.2 实验

我们写一段代码来看看拒绝采样是如何对复杂分布进行采样的。假设,我们要采样的分布是:
p ~ ( z ) = 0.3 e x p ( − ( z − 0.3 ) 2 ) + 0.7 e x p ( − ( z − 2 ) 2 / 0.3 ) \tilde{p}(z)=0.3exp(-(z-0.3)^2)+0.7exp(-(z-2)^2/0.3) p~(z)=0.3exp((z0.3)2)+0.7exp((z2)2/0.3)

其归一化常数 Z p ≈ 1.2113 Z_p \approx 1.2113 Zp1.2113,参考分布为高斯分布 q ( z ) = G a s s i a n ( 1.4 , 1.2 ) q(z)=Gassian(1.4,1.2) q(z)=Gassian(1.4,1.2),其中均值和方差是经过计算和尝试得到的,以满足 k q ( z ) ≥ p ~ ( z ) kq(z)\geq\tilde{p}(z) kq(z)p~(z)。python代码如下:

import numpy as np
import matplotlib.pyplot as plt

def f1(x):
    return (0.3*np.exp(-(x-0.3)**2) + 0.7* np.exp(-(x-2.)**2/0.3))/1.2113
x = np.arange(-4.,6.,0.01)
plt.plot(x,f1(x),color = "red")

size = int(1e+07)
sigma = 1.2
z = np.random.normal(loc = 1.4,scale = sigma, size = size)
qz = 1/(np.sqrt(2*np.pi)*sigma)*np.exp(-0.5*(z-1.4)**2/sigma**2)
k = 2.5
#z = np.random.uniform(low = -4, high = 6, size = size)
#qz = 0.1
#k = 10
u = np.random.uniform(low = 0, high = k*qz, size = size)

pz =  0.3*np.exp(-(z-0.3)**2) + 0.7* np.exp(-(z-2.)**2/0.3)
sample = z[pz >= u]
plt.hist(sample,bins=150, normed=True, edgecolor='black')
plt.show()

得到的采样分布如下图:
在这里插入图片描述

可以看到,采样结果完全符合原分布。另外如果我们把参考分布换为均匀分布(代码中z,q,k换为注释部分),仍然得到较好的采样结果,如下图:
在这里插入图片描述
可以看到,采样结果也是完全符合原分布。

以上的实验说明了拒绝采样的有效性。

2.3 注意事项

通过在2.1节的分析,我们知道:必须知道复杂分布的概率密度函数PDF,才可以进行拒绝采样。然而,在现实情况中:

1)对于一些二维分布 p ( x , y ) p(x,y) p(x,y),有时候我们只能得到条件分布 p ( x ∣ y ) p(x|y) p(xy) p ( y ∣ x ) p(y|x) p(yx),却很难得到二维分布的概率密度函数 p ( x , y ) p(x,y) p(x,y)的一般形式,这时我们无法用拒绝采样得到其样本集。

2)对于一些高维的复杂非常见分布 p ( x 1 , x 2 , . . . , x n ) p(x_1,x_2,...,x_n) p(x1,x2,...,xn),我们要找到一个合适的 q ( x ) q(x) q(x) k k k非常困难。

因此,实际上,我们仍然要找到一种方法可以解决如何方便得到各种复杂概率分布的对应的采样样本集的问题。马尔科夫链有能力帮助找到这些复杂概率分布的对应的采样样本集。而这也是MCMC采样的基础,我们回头会讲解。

参考文献

【1】拒绝采样(reject sampling)原理详解

【2】采样方法(一)

【3】蒙特卡洛采样之拒绝采样(Reject Sampling)

【4】一文了解采样方法

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

逆采样(Inverse Sampling)和拒绝采样(Reject Sampling)原理详解 的相关文章

  • 树莓派一些传感器的使用

    树莓派一些传感器的使用 Part 1 树莓派GPIO编号方式和引脚说明 参考 xff1a 树莓派开发系列教程9 树莓派GPIO控制 1 功能物理引脚 从左到右 xff0c 从上到下 xff0c 左边基数 xff0c 右边偶数 xff0c 1
  • centos 安装Git-cola

    首先安装Git sudo yum y install git 找到 git all noarch 安装这个 sudo yum install git all noarch 61 61 61 61 61 61 61 61 61 61 61 6
  • C++继承总结

    继承的概念 继承机制是面向对象程序设计使代码可以复用的重要手段 xff0c 它允许程序员在保持原有类特性的基础之上进行其他扩展 xff0c 增加功能 xff0c 这样产生的新类 xff0c 称之为派生类 继承呈现了面向对象程序设计的层次结构
  • 读完《大数据时代》的一点儿心得

    工作一段时间之后 xff0c 总喜欢读读书 xff0c 这是多年养成下来的一个习惯 读书使人避恶 xff0c 读书使人向善 xff0c 读书使人聪慧 xff0c 读书使人高尚 xff0c 我们都是聪明人 xff0c 对吧 xff1f 哈哈哈
  • 产品管理精华:第十一,数据的思维方式

    xfeff xfeff 数量庞大 增长迅猛 种类多样的数据已经成为企业在大数据时代发展不得不面临的现实境况 这是挑战 xff0c 也是机遇 基于客户需求 xff0c 提供领先 全面 有效的解决方案 xff0c 帮助企业获取商业洞察力 xff
  • 产品管理精华:第十四,产品炼成?

    xfeff 最近一段时间在准备信息系统项目管理师 的考试 xff0c 在备考复习过程中 xff0c 通过系统学习和理解项目管理相关知识 xff0c 发现项目和产品管理联系很密切 项目过程是伴随着产品过程而生 我们先来了解一下项目的定义 xf
  • glib简单记录包括字符串,主循环,回调函数和xml解析

    一 将最近用到的glib字符串功能整理了下直接用程序记录比较好看懂 define MAX LEN 100 gchar demo char msg gchar pcfgfile 61 NULL para 61 NULL va list arg
  • 产品管理精华:第十六,品味

    美感是第一道关卡 xff0c 丑陋的数学在世界上无法生存 G H 哈代 xff0c 一个数学家的道歉 品味 xff0c 如今很少听到这个词了 xff0c 可能被一些新的 xff0c 流行的叫法替代了 很长一段时间 xff0c 谈论品味这玩意
  • 《产品管理精华》目录

    产品管理精华 目录 本文是这个目录 xff0c 可以快速找到你需要的内容 xff1a 产品管理精华 xff1a 第一 xff0c 谁是优秀的产品经理 xff1f 产品管理精华 xff1a 第二 xff0c 工具 xff0c 适合自己的最好
  • 电商分销的社交化运营实践

    最近一段时间专注于研究社交化的电商分销运营体系 xff0c 如何最大化利用碎片化社会资源来整合营销渠道 目前最有代表性的电商分销就是全民分销概念 xff0c 它的最大特点在于通过社交网络 xff08 大部分是通过微信商城开店 43 三级返佣
  • 《产品管理精华》序

    今日事 xff0c 今日毕 xff01 xff0c 说起来容易 xff0c 做起来难 知道为什么要去做一件事 xff0c 这样做了哪些人都受到实惠 xff0c 领悟生活的趣味 xff0c 自己是否也得到了快乐和满足 xff0c 每一份付出都
  • 个人简介

    经验丰富的产品设计师 xff0c 专门从事与产品设计相关的研究 趋势分析 理念探索和产品研发 专注于政策脉搏和市场趋势的研究 xff0c 成功研发多个互联网相关领域产品 xff0c 对移动互联网产品架构 运营管理有较为深入的管控能力 欢迎大
  • 产品管理精华:第一,谁是优秀的产品经理?

    34 人因为梦想而伟大 34 英格丽 褒曼 每个人的心中都有一个梦想 xff0c 梦想是美好的 xff0c 但是实现梦想的道路是曲折的 xff0c 无数人在实现梦想的道路上遭遇了无数曲折 xff0c 尽管如此 xff0c 他们依旧大步向前
  • 产品管理精华:第三,需求调研,从用户出发

    因为需要 xff0c 让我更加完美 佚名 产品经理都会遇到 客户 用户 这两个概念念 xff0c 它们谁更重要也一直争论不休 用户 近乎苛刻的需求可以不断产品体验和质量 xff0c 同时产品投入市场之后都会遇到变现这个问题 xff0c 总需
  • 第1章 概述--PADS的历史版本

    1986年 xff1a PADS PCB xff0c DOS操作系统 1989年 xff1a PADS Logic xff0c DOS操作系统 1990年 xff1a PADS 2000 xff0c DOS操作系统 1993年 xff1a
  • docker安装图形化界面

    分享第一份Java基础 中级 高级面试集合 Java基础 xff08 对象 43 线程 43 字符 43 接口 43 变量 43 异常 43 方法 xff09 Java中级开发 xff08 底层 43 Spring相关 43 Redis 4
  • 嵌入式软件开发岗面试题

    1 单片机IO口开漏输出和推挽输出有什么区别 xff1f 答 xff1a 开漏输出 xff1a 开漏输出只能输出低电平 xff0c 如果要输出高电平必须通过上拉电阻才能实现 就类似于三极管的集电极输出 推挽输出 xff1a 推挽输出既可以输
  • pytorch 查看模型结构 网络参数

    用法比较简单 xff0c 不过容易忘 xff0c 记录一下 假设已定义好模型 xff0c 名为model 查看模型结构 xff1a gt gt gt print model 查看网络参数 xff1a for name parameters
  • 【Linux网络编程】select函数实现TCP并发服务器

    I O多路复用 应用程序中同时处理 多路 输入输出流 xff0c 若采用 阻塞模式 xff0c 将得不到预期的目的 xff1b 若采用 非阻塞模式 xff0c 对多个输入进行轮询 xff0c 但又太浪费 CPU 时间 xff1b 若设置 多
  • 【校招】面试_华为_通用软件工程师_二面

    1 面试信息 面试形式 xff1a 视频面试 面试时间 xff1a 2020 03 25 11 30 00 AM 面试时长 xff1a 40分钟 面试职位 xff1a 软件技术开发部 通用软件工程师 xff08 无线网络产品线 通用软件开发

随机推荐

  • 你必须会的启发式搜索算法--A*算法

    一 算法原理 A 算法 xff0c 就是解决在一个平面 grid地图中寻找起点到终点的最短路径问题的算法 xff0c 类似于Dijkstra算法和BFS算法一样 xff0c 属于广度优先搜索 实际上它还是一个启发式搜索算法 xff0c 什么
  • C/C++/LINUX 资源网站

    C C 43 43 LINUX 资源网站 本博客记录学习 开发中常用的网站 http www cplusplus com c 43 43 官网 xff0c 包含c 43 43 介绍以及一些简单的使用样例 目前主要用来查询 STL 的使用 h
  • 焊接单片机最小系统板,驱动lcd1602

    今天分享一些我制作单片机最小系统板的过程以及遇到的问题和解决办法 本人萌新一枚 xff0c 写文章就是我们大家互相学习交流 之前学习的是郭天祥的tx 1c单片机 xff0c 书中的例程都写的差不多了 xff0c 就想着自己焊接一个最小系统板
  • [ROS]极简开发环境建立流程(新手适用)

    ROS开发环境的建立 一 前言二 操作系统环境1 Ubuntu2 VMWare 可选 三 ROS运行环境1 ROS2 ROS周边设置3 ROS开发包及帮助获取方式 四 ROS开发环境1 建立工作空间 workspace2 Original开
  • 伽马函数与贝塔函数的定义

    伽马函数 称以下函数 61 0
  • Linux kernel development

    这几天一直在读经典的linux入门书 Linux kernel development 第三版即LKD xff0c 这是我第一次读英文版的技术书 xff0c 颇有些高兴 之所以读 xff0c 一是因为学过操作系统的理论知识 xff0c 想看
  • Windows + Ubuntu20.04双系统详细安装教程

    Windows 43 Ubuntu20 04双系统安装 1 制作启动盘1 1 从ubuntu官网下载ubuntu ISO文件1 2 下载启动Rufus1 3 将ISO文件写入启动盘1 3 1 设备 xff08 Device xff09 1
  • 程序员的成长之路

    1 初识编程 清楚的记得2008年上大学 xff0c 当时学的第一门编程语言是汇编语言 xff0c 第一堂课上 xff0c 老师就说这个学科的挂科率是最高的 xff0c 大家做好心理准备 xff0c 后来证明 xff0c 这并不是下马威 x
  • 关于协方差矩阵的理解

    转载自 关于协方差矩阵的理解
  • ubuntu下vscode配置C++环境-clang

    之前一直采用gcc xff0c 说不上多好用 xff0c 一直在凑活 xff0c 一次偶然的机会听说了clangd xff0c 就尝试了clang作为前端 xff0c 还挺好用 xff0c 这里分享给大家 xff08 踩了很多坑bushi
  • PID控制系统阶跃响应图-参数整定过程,matlab代码真实可用

    PID控制系统阶跃响应图 参数整定过程 xff0c matlab代码真实可用 点个赞呗 clear all clc close all PID span class token operator 61 span span class tok
  • c语言 查找指定字符

    本题要求编写程序 xff0c 从给定字符串中查找某指定的字符 输入格式 xff1a 输入的第一行是一个待查找的字符 第二行是一个以回车结束的非空字符串 xff08 不超过80个字符 xff09 输出格式 xff1a 如果找到 xff0c 在
  • 解决 UP Squared* Grove 物联网开发套件和 Arduino Create* 的连接问题

    如果您发现采用默认方法无法连接 UP Squared 主板和 Arduino Create xff0c 可以尝试另外一种方法 xff1a 使用串行终端连接主板 请执行以下步骤 开始前须知 确保主板已连接至电源和以太网 xff0c 如下所示
  • 解决 UP Squared* Grove 物联网开发套件和 Arduino Create* 的连接问题

    如果您发现采用默认方法无法连接 UP Squared 主板和 Arduino Create xff0c 可以尝试另外一种方法 xff1a 使用串行终端连接主板 请执行以下步骤 开始前须知 确保主板已连接至电源和以太网 xff0c 如下所示
  • PX4无人机offboard开发之旅

    目录 xff08 随进度更ing xff09 无人机OFFBOARD开发仿真步骤思路 真机PX4固件刷新连接pre arm策略修改 相机 图片慢慢补 xff0c 进度慢慢更 无人机OFFBOARD开发 使用无人机进行风力发电机叶片自动巡检任
  • 尚硅谷-尚医通实战经验总结

    整个系统采用b2c的管理模式 xff0c 分为管理员系统和用户系统 xff08 直接商对客 xff09 1 后端整合Swagger进行技术测试 2 后端框架使用ssmp框架 3 logback和 log4j 作为日志实现框架 4 idea开
  • 什么是web3 | 区块链web3.0人才

    文章目录 一 Web31 什么是web3 xff1f 2 web3的dapp架构 二 区块链web3 0人才1 区块链开发技术栈2 欧易对人才的要求3 如何成为一名合格的智能合约高级工程师4 web3各个赛道5 链上数据分析师6 一些案例
  • Noise协议和Disco协议选型

    文章目录 Noise协议和Disco协议选型noise协议和disco协议有什么区别 xff1f noise协议和disco协议分别适用什么场景 Noise协议和Disco协议选型 noise协议和disco协议有什么区别 xff1f No
  • SQL注入语义分析库libinjection

    文章目录 SQL注入语义分析库libinjection什么是libinjectionlibinjection和正则表达式modsecurity 如何使用libinjectionModSecurity只用了libinjection防御sql注
  • 逆采样(Inverse Sampling)和拒绝采样(Reject Sampling)原理详解

    在蒙特卡罗方法中 xff0c 有一个关键的问题需要解决 xff0c 即如何基于概率密度函数去采的 n n n 个 x x x 的样本集 逆采样 Inverse Sampling 和拒绝采