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

【2024 Optimal Control 16-745】Julia语法

Lecture 2

θ和它的导数符号是通过 Julia 中的变量命名方式实现的

  1. 变量 θ 的输入

    • 在 Julia 中,θ 是一个合法的变量名,就像普通的字母 xy 一样。
    • 要输入 θ,可以使用以下方法:
      • 在 Jupyter Notebook 或 Julia REPL 中直接键入 \theta,然后按 Tab 键,Julia 会自动将其转化为 θ
      • 这是 Julia 支持的 Unicode 字符的一部分,可以直接作为变量名。
  2. 变量 θ̇ 的输入

    • θ̇ 是带点的变量(表示导数),它也是 Julia 的一个合法变量名。
    • 键入 \theta,后按 Tab 键,键入 \dot,后按 Tab
  3. 变量 θ̈ 的输入

    • θ̈ 是加速度(带两个点的变量名)。
    • 键入 \theta,后按 Tab 键,键入 \ddot,后按 Tab
  • θθ̇ 是 Julia 中的 Unicode 变量名,可以通过快捷输入实现。
  • 在代码中,这些符号只是普通变量名,它们的含义通过上下文和赋值来表达:
    • θ 是角度。
    • θ̇ 是角速度。
    • θ̈ 是角加速度,计算公式是 − ( g / l ) sin ⁡ ( θ ) -(g/l) \sin(θ) (g/l)sin(θ)
      在这里插入图片描述

. 使得操作符能够逐个元素地应用于整个数组或集合,而不需要显式地使用循环

在 Julia 中,等号前面的 . 是一个 广播(broadcasting) 操作符,它的作用是让一个操作应用于整个数组或容器,而不仅仅是单一的元素。这是 Julia 中非常常见和强大的特性。

x_hist[:,1] .= x0
  • x_hist[:,1]:这是对 x_hist 数组的访问,表示提取 x_hist 的第一列(所有行,第一列)。
  • .=:这是广播赋值操作符。它表示对 x_hist[:,1] 的每个元素执行赋值操作,等价于逐元素地把 x0 的每个值赋给 x_hist[:,1] 的每个元素。
  • x0:这是一个向量,通常是初始状态向量,比如 [0.1; 0],表示摆的初始角度和角速度。

示例

假设 x0[0.1, 0],而 x_hist[:,1] 是一个长度为 2 的列向量(例如 [0, 0]),那么:

  • 无广播(普通赋值)
    如果直接使用 =(没有点操作符),会发生维度不匹配的错误,因为你不能将一个列向量直接赋值给数组的某一列。

    x_hist[:,1] = x0  # 这会报错
    
  • 使用广播赋值
    使用 .= 后,x0 的每个元素都会依次赋值给 x_hist[:,1] 的每个元素:

    x_hist[:,1] .= x0  # 正确:x0 的每个元素逐个赋值给 x_hist[:,1]
    

总结

  • . 操作符使得赋值操作可以应用到整个数组或容器的每个元素,而不仅仅是简单的元素赋值。
  • .= 用于广播赋值,使得多个值可以逐元素地赋给目标数组或集合。

这种广播机制使得在 Julia 中处理数组和矩阵时更加简洁高效。


解释匿名函数 x -> fd_pendulum_rk4(x, 0.1)

在 Julia 中,匿名函数是一种无需命名的函数,通常用于临时计算。形式为:

x -> expression

其中,x 是输入参数,expression 是处理该参数的表达式。

代码部分

x -> fd_pendulum_rk4(x, 0.1)

这是一个匿名函数,具体含义如下:

  1. 输入参数:

    • x 是匿名函数的输入参数,代表当前状态变量,通常为一个向量。例如,对于摆动系统,x 可能是 x = [ angle ; angular velocity ] x = [\text{angle}; \text{angular velocity}] x=[angle;angular velocity](角度和角速度)。
  2. 调用 fd_pendulum_rk4:

    • 匿名函数内部调用了 fd_pendulum_rk4 函数,这是一个实现四阶龙格-库塔(RK4)积分方法的函数。
    • fd_pendulum_rk4(x, 0.1) 的两个参数:
      • x: 当前状态(例如 x = [ 角度 ; 角速度 ] x = [\text{角度}; \text{角速度}] x=[角度;角速度])。
      • 0.1: 时间步长 h h h,表示模拟的离散时间间隔。
  3. 输出结果:

    • 函数返回 RK4 方法计算的状态更新结果,即从状态 x x x 经一步积分后的新状态 x n + 1 x_{n+1} xn+1
    • 该结果是一个新的状态向量,表示在给定时间步长下,系统从状态 x x x 演化到的下一个状态。

用途

匿名函数 x -> fd_pendulum_rk4(x, 0.1) 的核心作用是:

  • 将输入状态 x x x(如摆的当前角度和角速度)映射为通过 RK4 方法计算得到的下一个状态。
  • 在调用 ForwardDiff.jacobian 时,匿名函数为 ForwardDiff 提供了所需的输入-输出关系。

示例

假设:

  • 初始状态为 x = [ π / 4 ; 0 ] x = [\pi/4; 0] x=[π/4;0](角度 π / 4 \pi/4 π/4,角速度 0)。
  • 时间步长 h = 0.1 h = 0.1 h=0.1

匿名函数的计算流程如下:

# 定义匿名函数
f = x -> fd_pendulum_rk4(x, 0.1)# 调用匿名函数
new_state = f([pi/4; 0])

结果 new_state 是通过 RK4 积分计算出的下一步状态(新的角度和角速度)。

为什么使用匿名函数?

  1. 简洁性:

    • 不需要显式定义一个新函数,而是直接将 fd_pendulum_rk4 封装成满足特定需求的函数(固定步长为 0.1)。
  2. 灵活性:

    • 匿名函数可以动态封装不同的参数和逻辑。例如,步长可以通过匿名函数灵活指定。
  3. ForwardDiff.jacobian 配合:

    • ForwardDiff.jacobian 需要输入一个函数,该函数的输入是状态 x x x,输出是对应的更新结果。匿名函数很好地满足这一要求。

总结

  • 匿名函数 x -> fd_pendulum_rk4(x, 0.1) 将状态变量 x x x 映射为通过 RK4 方法计算得到的下一个状态。
  • 它的主要作用是为 ForwardDiff.jacobian 提供输入-输出映射关系,以计算状态更新过程的雅可比矩阵。

Lecture 3

∂r \ r 表示 矩阵左除

在 Julia 中,表达式 ∂r \ r 表示 矩阵左除,也就是 求解线性方程组 的一种简洁方式。

线性方程组的求解

线性方程组的一般形式是:

A ⋅ x = b A \cdot x = b Ax=b

其中:

  • A A A 是系数矩阵(这里对应 ∂r)。
  • x x x 是未知量向量(这里对应 Δ x \Delta x Δx)。
  • b b b 是右侧的已知向量(这里对应 r)。

A \ x 的含义是 求解 x x x 的值,即:

x = A − 1 ⋅ b x = A^{-1} \cdot b x=A1b

  • 相当于将 A A A 的逆矩阵 A − 1 A^{-1} A1 左乘到 b b b,求解 x x x 的值。

但是,显式求逆(即 A − 1 A^{-1} A1)的计算代价很高,且可能会引入数值不稳定性。因此,∂r \ r 使用了一种数值高效的方式解决这个问题。

Julia 的 \ 运算符

  • 在 Julia 中,A \ b 是求解线性方程组 A ⋅ x = b A \cdot x = b Ax=b 的符号,表示“将矩阵 A A A 左除向量 b b b”。
  • 实现时,Julia 使用优化的数值线性代数方法(如 LU 分解、QR 分解或 Cholesky 分解)来高效求解,而不是直接计算矩阵的逆。

数值计算的优势

  • 高效性: 求解 A ⋅ x = b A \cdot x = b Ax=b 的方法通常比显式逆矩阵的计算更高效。
  • 数值稳定性: 显式计算逆矩阵可能会导致数值不稳定性(尤其当矩阵接近奇异时),而直接求解方程组能够减少误差。
  • 灵活性: Julia 的 \ 运算符会自动选择最适合的分解算法(如 LU、QR 或其他方法)来解决问题,适用于稠密矩阵或稀疏矩阵。

梯度和雅可比矩阵在 Julia 中的使用规则

  • 梯度 (gradient): 用于标量值函数,返回一个列向量。
  • 雅可比矩阵 (jacobian): 用于矢量值函数,返回一个矩阵。
  • 在实际使用中,必须明确函数的输入和输出维度,误用可能导致报错。

1. 梯度(gradient)

梯度是用于标量值函数的,它返回的是一个列向量。

例子
using ForwardDiff# 定义一个标量函数
f(x) = x[1]^2 + x[2]^2 + x[3]^2# 对 f 求梯度
x = [1.0, 2.0, 3.0]
grad = ForwardDiff.gradient(f, x)
println("梯度: ", grad)
输出

在这里插入图片描述

  • 解析:
    • 函数 f ( x ) = x 1 2 + x 2 2 + x 3 2 f(x) = x_1^2 + x_2^2 + x_3^2 f(x)=x12+x22+x32
    • 梯度为 ∇ f = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ∂ f ∂ x 3 ] T = [ 2 x 1 , 2 x 2 , 2 x 3 ] T \nabla f = [\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \frac{\partial f}{\partial x_3}]^T = [2x_1, 2x_2, 2x_3]^T f=[x1f,x2f,x3f]T=[2x1,2x2,2x3]T
    • 结果为 [2.0, 4.0, 6.0]

2. 雅可比矩阵(Jacobian)

雅可比矩阵用于矢量值函数,返回的是一个矩阵。

例子
using ForwardDiff# 定义一个矢量值函数
g(x) = [x[1]^2, x[1]*x[2], x[2]^2]# 对 g 求雅可比矩阵
x = [1.0, 2.0]
jacobian = ForwardDiff.jacobian(g, x)
println("雅可比矩阵: ")
println(jacobian)
输出

在这里插入图片描述

  • 解析:
    • 函数 g ( x ) = [ x 1 2 , x 1 x 2 , x 2 2 ] g(x) = [x_1^2, x_1 x_2, x_2^2] g(x)=[x12,x1x2,x22]

    • 雅可比矩阵为:

      J = [ ∂ g 1 ∂ x 1 ∂ g 1 ∂ x 2 ∂ g 2 ∂ x 1 ∂ g 2 ∂ x 2 ∂ g 3 ∂ x 1 ∂ g 3 ∂ x 2 ] J = \begin{bmatrix} \frac{\partial g_1}{\partial x_1} & \frac{\partial g_1}{\partial x_2} \\ \frac{\partial g_2}{\partial x_1} & \frac{\partial g_2}{\partial x_2} \\ \frac{\partial g_3}{\partial x_1} & \frac{\partial g_3}{\partial x_2} \end{bmatrix} J= x1g1x1g2x1g3x2g1x2g2x2g3 = [ 2 x 1 0 x 2 x 1 0 2 x 2 ] \begin{bmatrix} 2x_1 & 0 \\ x_2 & x_1 \\ 0 & 2x_2 \end{bmatrix} 2x1x200x12x2

    • x = [ 1.0 , 2.0 ] x = [1.0, 2.0] x=[1.0,2.0] 时,结果为:
      [ 2.0 0.0 2.0 1.0 0.0 4.0 ] \begin{bmatrix} 2.0 & 0.0 \\ 2.0 & 1.0 \\ 0.0 & 4.0 \end{bmatrix} 2.02.00.00.01.04.0

3. 错误调用的情况

错误调用 gradient 对矢量值函数

如果尝试对矢量值函数调用 gradient 会导致报错,因为梯度只适用于标量值函数。

例子
g(x) = [x[1]^2, x[1]*x[2], x[2]^2]
x = [1.0, 2.0]
grad = ForwardDiff.gradient(g, x)  # 错误
报错信息

在这里插入图片描述

  • 原因:
    • gradient 只能对标量值函数使用,而这里的 g ( x ) g(x) g(x) 是矢量值函数。
错误调用 jacobian 对标量值函数

如果尝试对标量值函数调用 jacobian理论上应返回梯度的转置,但通常会导致报错。

例子
f(x) = x[1]^2 + x[2]^2
x = [1.0, 2.0]
jacobian = ForwardDiff.jacobian(f, x)  # 错误
报错信息

在这里插入图片描述

  • 原因:
    • jacobian 期望输入是矢量值函数,而这里的 f ( x ) f(x) f(x) 是标量值函数。

Lecture 4

Kronecker 积(Kronecker Product)

Kronecker 积的定义

给定两个矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n B ∈ R p × q B \in \mathbb{R}^{p \times q} BRp×q,它们的 Kronecker 积 A ⊗ B A \otimes B AB 是一个大小为 ( m p ) × ( n q ) (mp) \times (nq) (mp)×(nq) 的矩阵。具体构造规则如下:

  • A ⊗ B A \otimes B AB矩阵 A A A 的每个元素 a i j a_{ij} aij 替换为该元素与矩阵 B B B 的乘积 a i j B a_{ij}B aijB

数学表达为:
A ⊗ B = [ a 11 B a 12 B … a 1 n B a 21 B a 22 B … a 2 n B ⋮ ⋮ ⋮ a m 1 B a m 2 B … a m n B ] A \otimes B = \begin{bmatrix} a_{11} B & a_{12} B & \dots & a_{1n} B \\ a_{21} B & a_{22} B & \dots & a_{2n} B \\ \vdots & \vdots & & \vdots \\ a_{m1} B & a_{m2} B & \dots & a_{mn} B \\ \end{bmatrix} AB= a11Ba21Bam1Ba12Ba22Bam2Ba1nBa2nBamnB

Kronecker 积的计算方法

假设:
A = [ 1 2 3 4 ] , B = [ 0 5 6 7 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix}, \quad B = \begin{bmatrix} 0 & 5 \\ 6 & 7 \\ \end{bmatrix} A=[1324],B=[0657]

计算 A ⊗ B A \otimes B AB
A ⊗ B = [ 1 ⋅ B 2 ⋅ B 3 ⋅ B 4 ⋅ B ] = [ [ 0 5 6 7 ] [ 0 10 12 14 ] [ 0 15 18 21 ] [ 0 20 24 28 ] ] A \otimes B = \begin{bmatrix} 1 \cdot B & 2 \cdot B \\ 3 \cdot B & 4 \cdot B \\ \end{bmatrix}= \begin{bmatrix} \begin{bmatrix} 0 & 5 \\ 6 & 7 \\ \end{bmatrix} & \begin{bmatrix} 0 & 10 \\ 12 & 14 \\ \end{bmatrix} \\ \begin{bmatrix} 0 & 15 \\ 18 & 21 \\ \end{bmatrix} & \begin{bmatrix} 0 & 20 \\ 24 & 28 \\ \end{bmatrix} \\ \end{bmatrix} AB=[1B3B2B4B]= [0657][0181521][0121014][0242028]

最终结果为:
A ⊗ B = [ 0 5 0 10 6 7 12 14 0 15 0 20 18 21 24 28 ] A \otimes B = \begin{bmatrix} 0 & 5 & 0 & 10 \\ 6 & 7 & 12 & 14 \\ 0 & 15 & 0 & 20 \\ 18 & 21 & 24 & 28 \\ \end{bmatrix} AB= 0601857152101202410142028

Kronecker 积的性质

  1. 尺寸
    如果 A A A m × n m \times n m×n B B B p × q p \times q p×q,那么 A ⊗ B A \otimes B AB 的大小为 ( m p ) × ( n q ) (mp) \times (nq) (mp)×(nq)
  2. 分布律
    ( A + C ) ⊗ B = A ⊗ B + C ⊗ B (A + C) \otimes B = A \otimes B + C \otimes B (A+C)B=AB+CB
  3. 结合律
    ( A ⊗ B ) ⊗ C = A ⊗ ( B ⊗ C ) (A \otimes B) \otimes C = A \otimes (B \otimes C) (AB)C=A(BC)
  4. 与标量的关系
    ( α A ) ⊗ B = A ⊗ ( α B ) (\alpha A) \otimes B = A \otimes (\alpha B) (αA)B=A(αB)

Kronecker 积的应用

  1. 生成重复矩阵

    • 在 Julia 中,kron(ones(m), A) 会生成一个矩阵,其中矩阵 A A A 的每一行重复 m m m 次。
    • 类似地,kron(ones(m)', A) 会生成一个矩阵,其中矩阵 A A A 的每一列重复 m m m 次。
  2. 向量化操作

    • Kronecker 积常用于将向量化表达与矩阵展开结合。比如,将矩阵 A A A 的每一项与另一个矩阵 B B B 关联。
  3. 量子计算

    • Kronecker 积在量子力学中用于描述复合量子系统的状态和操作,比如计算张量积态。
  4. 系统理论和信号处理

    • Kronecker 积用于构造大规模系统矩阵,特别是在多维信号处理中的应用。

在 Julia 中的实现

在 Julia 中,kron 函数用于计算 Kronecker 积,语法为:

C = kron(A, B)

在这里插入图片描述

在equality-constraints.ipynb代码中的作用

plot_landscape 函数中,Kronecker 积被用来生成网格点:

  1. kron(ones(Nsamp), LinRange(-4, 4, Nsamp)')
    • 生成一个矩阵,其中每一行是从 − 4 -4 4 4 4 4 的序列,表示 x x x 坐标。
  2. kron(ones(Nsamp)', LinRange(-4, 4, Nsamp))
    • 生成一个矩阵,其中每一列是从 − 4 -4 4 4 4 4 的序列,表示 y y y 坐标。

这样,通过 Kronecker 积可以快速构造二维网格,用于绘制等高线图。

相关文章:

【2024 Optimal Control 16-745】Julia语法

Lecture 2 θ和它的导数符号是通过 Julia 中的变量命名方式实现的 变量 θ 的输入: 在 Julia 中,θ 是一个合法的变量名,就像普通的字母 x 或 y 一样。要输入 θ,可以使用以下方法: 在 Jupyter Notebook 或 Julia REP…...

Opencv+ROS实现摄像头读取处理画面信息

一、工具 ubuntu18.04 ROSopencv2 编译器:Visual Studio Code 二、原理 图像信息 ROS数据形式:sensor_msgs::Image OpenCV数据形式:cv:Mat 通过cv_bridge()函数进行ROS向opencv转换 cv_bridge是在ROS图像消息和OpenCV图像之间进行转…...

网络安全,文明上网(2)加强网络安全意识

前言 在当今这个数据驱动的时代,对网络安全保持高度警觉已经成为每个人的基本要求。 网络安全意识:信息时代的必备防御 网络已经成为我们生活中不可或缺的一部分,信息技术的快速进步使得我们对网络的依赖性日益增强。然而,网络安全…...

深度学习实战图像缺陷修复

这里写目录标题 概述1. 图像缺陷修复的研究背景2. 传统图像缺陷修复方法的局限性(1) 基于纹理合成的方法(2) 基于偏微分方程(PDE)的方法 3. 深度学习在图像缺陷修复中的兴起(1) 深度学习的基本思路(2) 深度学习方法的优势(3) 关键技术的引入 4. 深度学习…...

jenkins 2.346.1最后一个支持java8的版本搭建

1.jenkins下载 下载地址:Index of /war-stable/2.346.1 2.部署 创建目标文件夹,移动到指定位置 创建一个启动脚本,deploy.sh #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/opt/projects/jenkins # 服务名称。同时约定部…...

【数据库原理】创建与维护表,DDL数据定义语言

数据描述语言(数据定义语言) 就是管理数据库整个库,整个表,表的属性列的语句。 常用词儿就是数据库或表的增删改查:CREATE创建、DROP删除、ALTER修改、SHOW查看、USE进入表。 表的字段控制:PRIMARY KEY主键…...

驾驭Go语言中的不确定性:深入错误处理机制

驾驭Go语言中的不确定性:深入错误处理机制 在Go语言的编程世界中,错误处理是确保程序健壮性的关键。Go语言通过显式的错误返回值和panic/recover机制,提供了一套独特的错误处理策略。本文将深入探讨Go语言中的错误处理,包括原理、技术细节和实际案例,帮助读者在实际编程中…...

3D Gaussian Splatting在鱼眼相机中的应用与投影变换

paper:Fisheye-GS 1.概述 3D 高斯泼溅 (3DGS) 因其高保真度和实时渲染而备受关注。然而,由于独特的 3D 到 2D 投影计算,将 3DGS 适配到不同的相机型号(尤其是鱼眼镜头)带来了挑战。此外,基于图块的泼溅效率低下,尤其是对于鱼眼镜头的极端曲率和宽视野,这对于其更广泛…...

【Unity踩坑】在Mac上安装Cocoapods失败

在集成Unity Ad时,如果是第一次在iOS上集成,会在Mac上安装Cocoapods。 安装时提示下面的错误: Error installing cocoapods:The last version of drb (> 0) to support your Ruby & RubyGems was 2.0.5. Try installing it with gem…...

uni-app 认识条件编译,了解多端部署

一. 前言 在使用 uni-app 进行跨平台开发的过程中,经常会遇到需要针对不同平台或不同环境进行条件编译的情况。条件编译是一种在编译过程中根据指定条件选择不同代码路径的技术,可以帮助我们在不同平台或环境下编写不同的代码,以适应不同的平…...

SPA 首屏加载慢的原因及解决方案:结合实际项目的详细讲解

在现代前端开发中,单页面应用程序 (SPA) 的首屏加载速度是用户体验的关键因素之一。首屏加载慢会直接影响用户对网站的第一印象,甚至导致用户流失。因此,优化首屏加载速度是每个前端开发者需要重点关注的内容。 1. 什么是首屏加载? 首屏加载指的是用户访问一个网站或应用…...

vue3+ts el-tabel 搜索组件

爷爷页面 <template> <searchstyle"z-index: 9999":options"options"placeholder"请选择时间&#xff0c;或输入名称、单选、多个勾选、模糊查询"search"onSearch"></search> </template> <script lan…...

leetcode 排序算法汇总

快速排序 def quicksort(arr): if len(arr) < 1: return arr else: pivot arr[len(arr) // 2] # 选择中间值作为基准 left [x for x in arr if x < pivot] # 小于基准的放左边 middle [x for x in arr if x pivot] # 等…...

【C】错误的变量定义导致sprintf()‌输出错误

问题描述 刚刚写一个用AT指令透传相关的函数&#xff0c;需要用到sprintf()‌拼接字符串。 结果发现sprintf()‌拼接出来的内容是错误的&#xff0c;简化后的代码如下&#xff1a; const char AT_CIPSEND_FIX_LENGTH_HEADER[11] "ATCIPSEND"; // 错误的&#xff0…...

python基础导包

Python项目代码结构与导包详解 目录 引言 Python项目的基本结构 2.1 单文件项目2.2 多模块项目2.3 包结构项目2.4 示例项目结构 模块与包 3.1 模块&#xff08;Module&#xff09;3.2 包&#xff08;Package&#xff09;3.3 子包&#xff08;Subpackage&#xff09; 导包&a…...

【含开题报告+文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现

开题报告 随着互联网的普及和数字娱乐产业的蓬勃发展&#xff0c;电影作为一种重要的娱乐方式&#xff0c;已经深入人们的日常生活。然而&#xff0c;面对海量的电影资源&#xff0c;用户在选择观影内容时常常感到困惑和无所适从。传统的电影推荐方式&#xff0c;如人工筛选、…...

strlwr(arr);的模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strlwr(arr)&#xff1b;函数是把arr数组变为小写字母,并返回arr 链接介绍一下strlwr(arr)&#xff1b;(c基础)-CSDN博客 下面进行My__strlwr(arr);模拟实现 #include<stdio.h> //返回值为arr(地址),于是用指针变量,原数组为字符型…...

LCR 002. 二进制求和

一.题目&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 二.原始解法-利用二进制逢二进一&#xff1a; 自己实现的时候忽略了一点&#xff0c;就是进位是会滚动的&#xff0c;不是进位一次就结束&#xff0c;很复杂跳过 三.正确解法及好的讲解、力扣解法参考&#xf…...

MySQL-C3P0连数据库报错问题

MySQL-C3P0连数据库报错问题 No suitable driver found for 首先检查MySQL数据库版本与依赖版本是否一致&#xff0c;如8.0.40数据库&#xff0c;需要使用8.0以上的依赖。检查c3p0的依赖版本&#xff0c;需要符合系统应用特性检查c3p0.xml配置文件的地址&#xff0c;需要在reso…...

云计算期中作业:Spark机器学习问题解决

在原有pdf教程教程上&#xff0c;做一个补充 idea内搭建环境 导入依赖 就直接利用之前的作业工程项目里直接写&#xff0c;所以依赖基本上不用再导入了&#xff0c;如果要导入&#xff0c;看自己依赖的版本号&#xff0c;不要直接复制教程&#xff0c;比如我的&#xff1a; …...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...