Python地震波逆问题解构算法复杂信号分析
🎯要点
🎯时域、时频域以及时间和频率相关联偏振特性分析三种算法 | 🎯时域波参数估计算法 | 🎯机器学习模型波形指纹分析算法 | 🎯色散曲线和频率相关波分析算法 | 🎯动态倾斜校正算法 | 🎯声学地震波像分析
📜Python,MATLAB和C/C++物理信号滤波合成检测模拟用例
📜Python和MATLAB数字信号波形和模型模拟
📜Python量化噪声卷积信号和傅里叶时频分析
📜C++数字化声音信号处理和数控振荡合成
📜Python嵌入式动态用户调制解调响应式射频信号
📜Python嵌入式片上系统逻辑电路物理信号处理
📜Arduino生物波反馈和环境检测外套
📜Python线性代数傅里叶分析和动态系统模拟分析之一
📜Python线性代数数字图像和小波分析之二
📜Python数值和符号算法计算及3D视图物理数学波形方程
📜MATLAB_ESP32有限脉冲响应FIR无限脉冲响应IIR滤波器
🍪语言内容分比
🍇Python波场逆问题
在许多应用中,声波或电磁波被用来观察事物:水下声学、雷达、声纳、医学超声波、探地雷达、地震成像、全球地震学。在其中一些应用中,测量是被动的,我们记录调查对象发出的波,并试图推断其位置、大小等。在主动测量中,会产生波并记录对象的响应。
为了处理逆问题,我们必须首先了解正问题。在最基本的形式中,波动方程由下式给出
L [ c ] v ( t , x ) = q ( t , x ) ( 1 ) L[c] v(t, x)=q(t, x)\qquad(1) L[c]v(t,x)=q(t,x)(1)
且
L [ c ] = [ 1 c ( x ) 2 ∂ 2 ∂ t 2 − ∇ 2 ] L[c]=\left[\frac{1}{c(x)^2} \frac{\partial^2}{\partial t^2}-\nabla^2\right] L[c]=[c(x)21∂t2∂2−∇2]
其中 v : R × R n → R v: R \times R ^n \rightarrow R v:R×Rn→R 表示波场, c : R n → R c: R ^n \rightarrow R c:Rn→R 是传播速度, q : R × R n → R q: R \times R ^n \rightarrow R q:R×Rn→R 是源术语。我们假设源在空间和时间上都有紧支持并且是平方可积的。
为了定义(1)的唯一解,我们需要提供边界和初始条件。在上面讨论的应用中,通常考虑无界域 ( x ∈ R n ) \left(x \in R ^n\right) (x∈Rn) 和柯西初始条件 v ( 0 , x ) = 0 , ∂ v ∂ t ( 0 , x ) = 0 v(0, x)=0, \frac{\partial v}{\partial t }(0, x)=0 v(0,x)=0,∂t∂v(0,x)=0。
在散射实验中,通常根据入射波场和散射波场重写波动方程 v = v i + v s v=v_i+v_s v=vi+vs 和散射势 u ( x ) = c ( x ) − 2 − c 0 − 2 u(x)=c(x)^{-2}- c_0^{-2} u(x)=c(x)−2−c0−2 :
L [ c 0 ] v i ( t , x ) = q ( t , x ) , L [ c 0 ] v s ( t , x ) = − u ( x ) ∂ 2 v ∂ t 2 ( t , x ) ( 2 ) L\left[c_0\right] v_i(t, x)=q(t, x), \quad L\left[c_0\right] v_s(t, x)=-u(x) \frac{\partial^2 v}{\partial t^2}(t, x)\qquad(2) L[c0]vi(t,x)=q(t,x),L[c0]vs(t,x)=−u(x)∂t2∂2v(t,x)(2)
在弱散射假设下,我们可以忽略 u u u和 v s v_s vs的相互作用,并将(2)中的 v v v替换为 v i v_i vi。
测量结果通常被视为限制为 [ 0 , T ] × Δ [0, T] \times \Delta [0,T]×Δ 的(分散)波场,其中 Δ ⊂ R n \Delta \subset R ^n Δ⊂Rn 可以是流形或一组点。然后数据可以用 f ( t , r ) f(t,r) f(t,r)表示。在主动实验中,通常的做法是考虑对源项集合的测量。源可以是点源,在这种情况下 q ( t , x ) = w ( t ) δ ( x − s ) q(t, x)=w(t) \delta(x-s) q(t,x)=w(t)δ(x−s) 且 s ∈ Σ s \in \Sigma s∈Σ。或者,事件场 v i v_i vi 可以由 s ∈ Σ s \in \Sigma s∈Σ 给出和参数化。然后我们可以用 f ( t , s , r ) f(t, s, r) f(t,s,r) 表示数据,其中 s ∈ Σ 、 r ∈ Δ s \in \Sigma、r \in \Delta s∈Σ、r∈Δ 和 t ∈ [ 0 , T ] t \in[0, T] t∈[0,T]。
基于这个基本设置,我们将讨论三个可能的逆问题:
- 逆源问题:从已知(且恒定) c ( x ) ≡ c 0 c(x) \equiv c_0 c(x)≡c0 的测量中恢复源 q q q。
- 逆散射:假设 c 0 c_0 c0 已知,从多个(已知)源的散射场测量中恢复散射势 u ( x ) u(x) u(x)。
- 波形断层扫描:从多个(已知)源的总波场测量中恢复 c ( x ) c(x) c(x)。
下面您将找到一些实践中出现的逆问题的典型示例。
- 地震定位:由源项 w ( t ) q ( x ) w(t) q(x) w(t)q(x) 描述的地震由多个地震仪在位置 Δ = { r k } k = 1 n 处记录 \Delta=\left\{r_k\right\}_{k=1}^n 处记录 Δ={rk}k=1n处记录。目标是恢复 q q q 以确定地震位置。
- 被动声纳:使用数组 Δ = { x 0 + r p ∣ r ∈ [ − h , h ] } \Delta=\left\{x_0+r p \mid r \in[-h, h]\right\} Δ={x0+rp∣r∈[−h,h]} 记录从不明目标发出的声波,其中 $p \in S ^2 $ 表示数组的方向, h h h 表示其宽度。目标是恢复源项 w ( t ) q ( x ) w(t) q(x) w(t)q(x) 以确定源的起源和性质。
- 雷达成像:入射平面波,由方向 s ∈ Σ ⊂ S 2 s \in \Sigma \subset S ^2 s∈Σ⊂S2 参数化,被发送到介质中,并由阵列记录其反射响应。目标是恢复散射势。
- 全波形反演:在勘探地震学中,目标是从表面总波场的测量中恢复 c c c: Σ = Δ = { x ∣ n ⋅ x = 0 } \Sigma=\Delta=\{x \mid n \cdot x=0\} Σ=Δ={x∣n⋅x=0}。
- 超声断层扫描:目标是康复 𝑐 来自物体周围的源和接收器的总波场。
我们研究逆源问题的一个变体,其中 q ( t , x ) = δ ( t ) u ( x ) q(t, x)=\delta(t) u(x) q(t,x)=δ(t)u(x) 和 u u u 在 Ω ⊂ R n \Omega \subset R ^n Ω⊂Rn 上得到紧凑支持。常量 c c c 的前向运算符由下式给出
K u ( t , x ) = ∫ Ω u ( x ′ ) g ( t , x − x ′ ) d x ′ K u(t, x)=\int_{\Omega} u\left(x^{\prime}\right) g\left(t, x-x^{\prime}\right) d x^{\prime} Ku(t,x)=∫Ωu(x′)g(t,x−x′)dx′
在半径为 ρ \rho ρ 的球体上进行测量。解决逆问题的一种流行技术是反向传播,它基于将前向算子的伴随应用于数据。在这种情况下,伴随运算符由下式给出:
K ∗ f ( x ) = ∫ Δ ∫ 0 T g ( t ′ , x ′ − x ) f ( t ′ , x ′ ) d x ′ d t ′ K^* f(x)=\int_{\Delta} \int_0^T g\left(t^{\prime}, x^{\prime}-x\right) f\left(t^{\prime}, x^{\prime}\right) d x^{\prime} d t^{\prime} K∗f(x)=∫Δ∫0Tg(t′,x′−x)f(t′,x′)dx′dt′
我们看到 p = K ∗ f p=K^* f p=K∗f 可以通过求解下式得到
L [ c ] w ( t , x ) = ∫ Δ f ( t , x ′ ) δ ( x − x ′ ) d x ′ L[c] w(t, x)=\int_{\Delta} f\left(t, x^{\prime}\right) \delta\left(x-x^{\prime}\right) d x^{\prime} L[c]w(t,x)=∫Δf(t,x′)δ(x−x′)dx′
使用时间反转格林函数并在 t = 0 t=0 t=0 处求值,即 p ( x ) = w ( 0 , x ) p(x)=w(0, x) p(x)=w(0,x)。
为了了解其原理,我们研究普通运算符 K ∗ K K^* K K∗K。在时域傅立叶域中,对于 c = 1 c=1 c=1,运算符变为
f ^ ( ω , x ) = ∫ Ω u ( x ′ ) exp ( ı ω ∣ x − x ′ ∣ ) ∣ x − x ′ ∣ d x ′ \widehat{f}(\omega, x)=\int_{\Omega} u\left(x^{\prime}\right) \frac{\exp \left(\imath \omega\left|x-x^{\prime}\right|\right)}{\left|x-x^{\prime}\right|} d x^{\prime} f (ω,x)=∫Ωu(x′)∣x−x′∣exp(ω∣x−x′∣)dx′
和
u ( x ) = ∬ Δ f ^ ( ω , x ′ ) exp ( − ı ω ∣ x ′ − x ∣ ) ∣ x ′ − x ∣ d x ′ d ω u(x)=\iint_{\Delta} \widehat{f}\left(\omega, x^{\prime}\right) \frac{\exp \left(-\imath \omega\left|x^{\prime}-x\right|\right)}{\left|x^{\prime}-x\right|} d x^{\prime} d \omega u(x)=∬Δf (ω,x′)∣x′−x∣exp(−ω∣x′−x∣)dx′dω
于是,
K ∗ K u ( x ) = ∬ Δ ∫ Ω f ( x ′ ) exp ( ı ω ∣ x ′ ′ − x ′ ∣ ) ∣ x ′ ′ − x ′ ∣ exp ( − ı ω ∣ x ′ ′ − x ∣ ) ∣ x ′ ′ − x ∣ d x ′ d x ′ ′ d ω K^* K u(x)=\iint_{\Delta} \int_{\Omega} f\left(x^{\prime}\right) \frac{\exp \left(\imath \omega\left|x^{\prime \prime}-x^{\prime}\right|\right)}{\left|x^{\prime \prime}-x^{\prime}\right|} \frac{\exp \left(-\imath \omega\left|x^{\prime \prime}-x\right|\right)}{\left|x^{\prime \prime}-x\right|} d x^{\prime} d x^{\prime \prime} d \omega K∗Ku(x)=∬Δ∫Ωf(x′)∣x′′−x′∣exp(ω∣x′′−x′∣)∣x′′−x∣exp(−ω∣x′′−x∣)dx′dx′′dω
对于 ∣ x ′ ′ ∣ ≫ ∣ x ∣ \left|x^{\prime \prime}\right| \gg|x| ∣x′′∣≫∣x∣ 我们可以将其近似为 ∣ x ′ ′ − x ∣ ≈ ∣ x ′ ′ ∣ + x ⋅ x ′ ′ / ∣ x ′ ′ ∣ \left|x^{\prime \prime}-x\right| \approx\left|x^{\prime \prime}\right|+x \cdot x^{\prime \prime} /\left|x^{\prime \prime}\right| ∣x′′−x∣≈∣x′′∣+x⋅x′′/∣x′′∣ 同样对于 ∣ x ′ ′ − x ′ ∣ \left |x^{\prime \prime}-x^{\prime}\right| ∣x′′−x′∣。这称为远场近似。引入 ξ ′ ′ = x ′ ′ / ∣ x ′ ′ ∣ = x ′ ′ / ρ \xi^{\prime \prime}=x^{\prime \prime} /\left|x^{\prime \prime}\right|=x^{\prime \prime} / \rho ξ′′=x′′/∣x′′∣=x′′/ρ单位球面,我们发现
K ∗ K u ( x ) = ρ ∫ Ω u ( x ′ ) ∬ exp ( w ξ ′ ′ ⋅ ( x ′ − x ) ) d ξ ′ ′ d ω d x ′ K^* K u(x)=\rho \int_{\Omega} u\left(x^{\prime}\right) \iint \exp \left(w \xi^{\prime \prime} \cdot\left(x^{\prime}-x\right)\right) d \xi^{\prime \prime} d \omega d x^{\prime} K∗Ku(x)=ρ∫Ωu(x′)∬exp(wξ′′⋅(x′−x))dξ′′dωdx′
此式:
k ( x − x ′ ) = ∬ exp ( u ω ξ ′ ′ ⋅ ( x ′ − x ) ) d ξ ′ ′ d ω k\left(x-x^{\prime}\right)=\iint \exp \left(u \omega \xi^{\prime \prime} \cdot\left(x^{\prime}-x\right)\right) d \xi^{\prime \prime} d \omega k(x−x′)=∬exp(uωξ′′⋅(x′−x))dξ′′dω
有时称为点扩散函数。
这种过滤也可以通过乘以 ∣ ξ ∣ 2 |\xi|^2 ∣ξ∣2 在傅立叶域中实现。一个例子如下所示。
import numpy as np
import matplotlib.pyplot as plt
import scipy.sparse as sp
from scipy.ndimage import laplacedef solve(q,c,dt,dx,T=1.0,L=1.0,n=1):gamma = dt*c/dxnt = int(T/dt + 1)nx = int(2*L/dx + 2)u = np.zeros((nx**n,nt))for k in range(1,nt-1):u[:,k+1] = A@u[:,k] + L@u[:,k] + B@u[:,k-1] + (dx**2)*C@q[:,k]return udef getMatrices(gamma,nx,n):l = (gamma**2)*np.ones((3,nx))l[1,:] = -2*(gamma**2)l[1,0] = -gammal[2,0] = gammal[0,nx-2] = gammal[1,nx-1] = -gammaif n == 1:a = 2*np.ones(nx)a[0] = 1a[nx-1] = 1b = -np.ones(nx)b[0] = 0b[nx-1] = 0c = (gamma)**2*np.ones(nx)c[0] = 0c[nx-1] = 0L = sp.diags(l,[-1, 0, 1],shape=(nx,nx))else:a = 2*np.ones((nx,nx))a[0,:] = 1a[nx-1,:] = 1a[:,0] = 1a[:,nx-1] = 1a.resize(nx**2)b = -np.ones((nx,nx))b[0,:] = 0b[nx-1,:] = 0b[:,0] = 0b[:,nx-1] = 0b.resize(nx**2)c = (gamma)**2*np.ones((nx,nx))c[0,:] = 0c[nx-1,:] = 0c[:,0] = 0c[:,nx-1] = 0c.resize(nx**2)L = sp.kron(sp.diags(l,[-1, 0, 1],shape=(nx,nx)),sp.eye(nx)) + sp.kron(sp.eye(nx),sp.diags(l,[-1, 0, 1],shape=(nx,nx)))return A,B,C,L
L = 1.0
T = 1.0
dx = 1e-2
dt = .5e-2
nt = int(T/dt + 1)
nx = int(2*L/dx + 2)
c = 1u = np.zeros((nx,nx))
u[nx//2 - 10:nx//2+10,nx//2 - 10:nx//2+10] = 1
q = np.zeros((nx*nx,nt))
q[:,1] = u.flatten()w_forward = solve(q,c,dt,dx,T=T,L=L,n=2)theta = np.linspace(0,2*np.pi,20,endpoint=False)
xs = 0.8*np.cos(theta)
ys = 0.8*np.sin(theta)
I = np.ravel_multi_index(np.array([[xs/dx + nx//2],[ys//dx + nx//2]],dtype=np.int), (nx,nx))
d = w_forward[I,:]r = np.zeros((nx*nx,nt))
r[I,:] = d
r = np.flip(r,axis=1)w_adjoint = solve(r,c,dt,dx,T=T,L=L,n=2)fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(8, 5), sharey=True)
plt.gray()ax[0,0].plot(xs,ys,'r*')
ax[0,0].imshow(w_forward[:,2].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[0,0].set_title('t = 0')
ax[0,1].plot(xs,ys,'r*')
ax[0,1].imshow(w_forward[:,101].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[0,1].set_title('t = 0.5')
ax[0,2].plot(xs,ys,'r*')
ax[0,2].imshow(w_forward[:,200].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[0,2].set_title('t = 1')ax[1,0].plot(xs,ys,'r*')
ax[1,0].imshow(w_adjoint[:,200].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[1,1].plot(xs,ys,'r*')
ax[1,1].imshow(w_adjoint[:,101].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[1,2].plot(xs,ys,'r*')
ax[1,2].imshow(w_adjoint[:,2].reshape((nx,nx)), extent=(-L,L,-L,L))plt.show()
👉参阅&更新:计算思维 | 亚图跨际
相关文章:

Python地震波逆问题解构算法复杂信号分析
🎯要点 🎯时域、时频域以及时间和频率相关联偏振特性分析三种算法 | 🎯时域波参数估计算法 | 🎯机器学习模型波形指纹分析算法 | 🎯色散曲线和频率相关波分析算法 | 🎯动态倾斜校正算法 | 🎯声…...

C语言 -- 深入理解指针(二)
C语言 -- 深入理解指针(二) 1. 数组名的理解2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序5. 二级指针6. 指针数组7. 指针数组模拟二维数组8. 字符指针变量9. 数组指针变量2.1数组指针变量是什么?2.2 数组指针变量怎么初始化 10. 二维…...

HTTP协议详解
HTTP协议详解 一、HTTP协议概述二、网络基础与HTTP2.1 TCP/IP协议2.2 发送HTTP请求过程2.3 HTTP请求的组成部分 三、HTTP报文HTTP请求报文HTTP响应报文 结语 一、HTTP协议概述 HTTP,即超文本传输协议(Hypertext Transfer Protocol)ÿ…...

一年时间业绩增长2倍,茅台保健酒业公司在川销售的“三板斧”
执笔 | 尼 奥 编辑 | 扬 灵 作为土地面积全国第5、人口总数全国第3、GDP全国第6的产酒、销酒大省,四川酒类消费总额已达800亿元,其中白酒市场规模达到500亿元。 近年来,随着省外名酒提升对四川市场重视,其市场份额也从20年前的3%…...

土豆炒肉做法
菜单:土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程: 洗土豆,削皮,擦成条,用凉水过滤两遍淀粉,顺便放个燥里洗肉,切成条,按照生抽、酱油、淀粉、…...

VPS拨号服务器:独享的高效与安全
在当今互联网高速发展的时代,虚拟私人服务器(VPS)已成为许多企业和个人用户托管网站、应用程序的首选。特别是带有拨号功能的VPS服务器,以其独特的优势受到广泛关注。本文将深入探讨VPS拨号服务器的独享特性,以及它如何…...

网络安全设备——防火墙
网络安全设备防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。以下是对防火墙的详细解释: 一、定义与基本概念 定义:防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的…...

Redis 管道技术
Redis 管道技术 引言 Redis,作为一个高性能的键值存储系统,被广泛应用于各种场景,如缓存、消息队列等。为了进一步提高Redis的处理能力和效率,Redis管道技术应运而生。本文将深入探讨Redis管道技术的原理、应用及其优势。 什么是Redis管道技术 Redis管道技术是一种允许…...

使用vue3-treeselect问题
1.当vue3-treeselect是单选时,使用watch监听绑定value,无法监听到值清空 对照后将:value改为v-model,如图 2.使用vue3-treeselect全部清空按钮如何置空select的值,使用watch监听 多选:pageInfo.officeName(val) {// …...

每日直播分享车载知识:硬件在环、UDS诊断、OTA升级、TBOX测试、CANoe、ECU刷写、CAN一致性测试:物理层、数据链路层等
每日直播时间:(进腾讯会议方式:QazWsxEdc_2010) 周一到周五:20:00-23:00(讲一个小时,实操两个小时) 周六与周日:9:00-17:0…...

flex布局---子元素未设置高度,默认与父元素同高---侧轴方向的拉伸
父元素未设置固定高度,由子元素高度撑开,并给父元素开启 flex 布局,成为伸缩容器。 父元素中有三个子元素,为伸缩项目,三个伸缩项目都未指定高度,div.inner1 的高度由内容撑开,div.inner2 和 d…...

资源分享—2021版三调符号库
汇总整理平台软件支持过程中客户项目提供的各类资源(包括但不限于符号库、地图模板等),在客户允许情况下进行集团内分享。 本次分享新版国土空间规划【三调符号库(2021版)】,提供SuperMap格式符号库下载。 …...

解决selenium手动下载驱动问题
解决selenium手动下载驱动问题 每次都需要手动下载驱动很头疼,今天发现一个可以自动下载最新驱动的包webdriver_manager,挺不错的 安装依赖包 pip install selenium pip install webdriver_manager from selenium import webdriver from selenium.webdr…...

使用fifo IP核,给fifo写数据,当检测到ALMOST_EMPTY时,为什么不能立即赋值
这涉及到FIFO(先入先出缓冲器)的内部工作机制和时序考虑。让我详细解释为什么在检测到ALMOST_EMPTY信号时不能立即向FIFO写入数据。 ALMOST_EMPTY信号的特性: ALMOST_EMPTY是一个预警信号,表示FIFO中的数据量已经接近空。这个信号…...

【Python123题库】#汽车迷 #编写函数输出自除数 #身份证号基本信息
禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140080109 参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 汽车迷编写函数输出自除数身份证号基本信息 汽车…...

普通人怎么利用GPT赚钱之SEO优化内容
如何利用GPT撰写SEO优化内容:全面指南 在当今的数字化世界,搜索引擎优化(SEO)是提升网站流量和曝光率的关键。高质量的SEO优化内容不仅可以提高搜索引擎排名,还能吸引更多潜在客户。GPT(生成预训练变换器)作为一种先进的人工智能工具,可以大大提升SEO内容创作的效率和…...

LeetCode热题100刷题8:54. 螺旋矩阵、73. 矩阵置零、48. 旋转图像
54. 螺旋矩阵 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> vec;if(matrix.empty())return vec;int left0;int right matrix[0].size()-1;int up0;int down matrix.size()-1;while(true) {for(i…...

景联文科技打造高质量图文推理问答数据集,赋能大语言模型提升推理能力
大语言模型在处理推理任务时,不同于人类能够反思错误并修正思维路径,当它遇到自身知识盲区时,缺乏自我校正机制,往往导致输出结果不仅无法改善,反而可能变得更不准确。 需要依赖外部的知识库和推理能力来克服其在理解和…...

用网络编程完成windows和linux跨平台之间的通信(服务器)
服务器代码逻辑: 服务器功能 创建 Socket: 服务器首先创建一个 Socket 对象,用于进行网络通信。通常使用 socket() 函数创建。 绑定(Bind): 服务器将 Socket 绑定到一个特定的 IP 地址和端口号上。这是通过…...

力扣3148.矩阵中的最大得分
力扣3148.矩阵中的最大得分 类似二维前缀和 枚举右下角 求(i,j) - (0,0)的子矩阵的最小值每次与当前点作差 求答案 class Solution {public:int maxScore(vector<vector<int>>& grid) {int res INT_MIN;int m grid.size(),n grid[0].size();vector<ve…...

解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决
Druid版本1.1.9报错Caused by: java.sql.SQLException: sql injection violation, syntax error: TODO IDENTIFIER : CREATE TEMPORARY TABLE temp_ball_classify (id int8 NOT NULL,create_time TIMESTAMP,create_by VARCHAR,classify_name VARCHAR) 代码如下: 测…...

【WPF】桌面程序开发之xaml页面基础布局方式详解
使用Visual Studio开发工具,我们可以编写在Windows系统上运行的桌面应用程序。其中,WPF(Windows Presentation Foundation)项目是一种常见的选择。然而,对于初学者来说,WPF项目中xaml页面的布局设计可能是一…...

第十五章 Nest Pipe(内置及自定义)
NestJS的Pipe是一个用于数据转换和验证的特殊装饰器。Pipe可以应用于控制器(Controller)的处理方法(Handler)和中间件(Middleware),用于处理传入的数据。它可以用来转换和验证数据,确…...

实战篇(八):使用Processing创建动态图形:诡异八爪鱼
使用Processing创建动态图形:诡异八爪鱼 引言 在这个教程中,我们将深入探讨如何使用Processing编程语言创建一个动态的图形效果。我们将通过一个具体的例子,展示如何绘制一个跟随鼠标移动的“鱿鱼”图形,并使其颜色和形状动态变化。这个项目不仅适合初学者学习Processing…...

大模型成为软件和数据工程师
前言 想象一下这样一个世界:人工智能伙伴负责编码工作,让软件和数据工程师释放他们的创造天赋来应对未来的技术挑战! 想象一下:你是一名软件工程师,埋头于堆积如山的代码中,淹没在无数的错误中࿰…...

【鸿蒙学习笔记】页面布局
官方文档:布局概述 常见页面结构图 布局元素的组成 线性布局(Row、Column) 了解思路即可,更多样例去看官方文档 Entry Component struct PracExample {build() {Column() {Column({ space: 20 }) {Text(space: 20).fontSize(15)…...

GIT 使用相关技巧记录
目录 1、commit 用户信息变更 全局用户信息(没有特殊配置的情况下默认直接用全局信息) 特定仓库用户信息(只针对于当前项目) 方法一:修改config文件 方法二:命令方式 2、idea同一代码推向多个远端仓库…...

1-认识网络爬虫
1.什么是网络爬虫 网络爬虫(Web Crawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序,这个程序可以代替真人…...

ROS2使用Python开发动作通信
1.创建接口节点 cd chapt4_ws/ ros2 pkg create robot_control_interfaces --build-type ament_cmake --destination-directory src --maintainer-name "joe" --maintainer-email "1027038527qq.com" mkdir -p src/robot_control_interfaces/action touch…...

Bug记录:【com.fasterxml.jackson.databind.exc.InvalidDefinitionException】
bug记录 序列化错误 异常com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 完整错误(主要是FAIL_ON_EMPTY_BEANS) 00:15:20.250 [http-nio-3000-exec-1] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - S…...