深入理解小波变换:信号处理的强大工具
引言
在科学与工程领域,信号处理一直是关键环节,傅里叶变换与小波变换作为重要的分析工具,在其中发挥着重要作用。本文将深入探讨小波变换,阐述其原理、优势以及与傅里叶变换的对比,并通过具体案例展示其应用价值。

一、傅里叶变换的局限性
傅里叶变换是一种经典的信号分析方法,能将时域信号转换为频域信号,让我们清晰了解信号包含的频率成分。在分析一段音乐信号时,傅里叶变换可揭示其中的各种音调(频率)。然而,傅里叶变换存在明显不足,它假设信号是由无限延伸的正弦波或余弦波组成,在将信号从时域转换到频域的过程中,完全丢失了时间信息。这意味着,使用傅里叶变换虽能知晓信号中有哪些频率,但无法确定这些频率在何时出现。比如在分析包含多个乐器演奏的音乐信号时,我们无法得知每种乐器声音在哪个时刻响起;在分析地震信号时,无法确定不同地震波(如 P 波和 S 波)出现的具体时刻,这在很多实际应用场景中是远远不够的。
二、小波变换的原理
(一)基本概念
小波变换的核心是通过对一个母小波函数进行伸缩和平移操作,生成一系列小波基函数。假设有一个满足特定条件的母小波函数 ψ ( t ) \psi(t) ψ(t),通过尺度参数 a a a和平移参数 b b b,可得到一族小波基函数 ψ a , b ( t ) = 1 a ψ ( t − b a ) \psi_{a,b}(t)=\frac{1}{\sqrt{a}}\psi(\frac{t - b}{a}) ψa,b(t)=a1ψ(at−b)尺度参数 a a a控制着小波函数的伸缩程度,大尺度对应信号的低频特征,就像大梳子能梳理出信号中比较慢、比较低沉的部分;小尺度对应信号的高频细节,类似小梳子能捕捉到信号中比较快、比较尖锐的部分。平移参数 b b b则用于在时间轴上移动小波函数,以匹配信号不同位置的特征。
(二)信号分解与重构
对于给定的信号 f ( t ) f(t) f(t),其小波变换 W f ( a , b ) W_{f}(a,b) Wf(a,b)定义为 W f ( a , b ) = ∫ − ∞ ∞ f ( t ) ψ a , b ∗ ( t ) d t W_{f}(a,b)=\int_{-\infty}^{\infty}f(t)\psi_{a,b}^*(t)dt Wf(a,b)=∫−∞∞f(t)ψa,b∗(t)dt其中 ψ a , b ∗ ( t ) \psi_{a,b}^*(t) ψa,b∗(t)是 ψ a , b ( t ) \psi_{a,b}(t) ψa,b(t)的共轭函数。这个积分运算实际上是计算信号 f ( t ) f(t) f(t)与小波基函数 ψ a , b ( t ) \psi_{a,b}(t) ψa,b(t)的内积,得到的小波系数 W f ( a , b ) W_{f}(a,b) Wf(a,b)表示了信号 f ( t ) f(t) f(t)在尺度 a a a和平移 b b b下与小波基函数的相似程度。在实际应用中,不仅可以对信号进行分解,还能通过这些小波系数进行信号重构,将分解后的信号还原。
三、小波变换的优势
(一)时频局部化特性
与傅里叶变换不同,小波变换能同时在时间域和频率域对信号进行局部化分析。在分析音乐信号时,它能准确捕捉到像鼓点、吉他拨弦等瞬间出现的声音,并在时频域中精确定位,让我们清楚知道这些声音在何时出现以及对应的频率。在地震信号分析中,可清晰展示 P 波和 S 波在不同时刻的频率特征,有助于地震学家深入研究地震的传播过程。
(二)多分辨率分析
小波变换具有多分辨率特性,可将信号分解为不同尺度下的分量,从粗到细逐步分析信号的细节。以图像分析为例,大尺度下能把握图像的整体轮廓,如一幅风景图像中的山脉、河流等大致形状;小尺度下能关注到图像的细微纹理,如树叶的脉络、岩石的纹理等。这种多分辨率分析就如同用不同倍数的放大镜观察物体,从宏观到微观全面了解信号或图像的特征。
(三)基函数的灵活性
小波变换拥有多种不同类型的母小波函数,并且可以根据信号的特点进行选择和定制。对于具有明显非平稳、非线性特征的信号,小波变换能够通过选取合适的母小波函数,更好地匹配和表示这些信号。而傅里叶变换的基函数只有固定的正弦函数和余弦函数,形式较为单一,在处理这类复杂信号时往往力不从心。
(四)计算复杂度和效率
在处理一些长度较长、复杂度较高的信号时,傅里叶变换可能需要较高的计算成本和时间。而小波变换在处理具有局部特征和稀疏性的信号时,能够利用这些特性,采用快速算法,降低计算复杂度,提高计算效率。在处理大规模图像数据或长时间的生理信号时,小波变换的这一优势尤为明显。
四、小波变换的应用案例
(一)地震信号分析
如前文所述,在地震监测中,小波变换能够准确确定不同地震波出现的时刻和频率特征。通过对地震信号进行小波变换,地震学家可以更精确地判断地震的震级、震源深度以及地震波的传播路径等重要信息。在 2011 年日本东海岸发生的 9.0 级大地震中,科学家利用小波变换对地震信号进行分析,不仅快速确定了地震的基本参数,还通过对地震信号细节的分析,深入研究了地震的破裂过程和海啸的产生机制,为后续的灾害评估和预防提供了重要依据。
(二)图像压缩
在图像领域,小波变换被广泛应用于图像压缩。将图像进行小波变换后,图像的能量会集中在少数小波系数上。通过对这些系数进行量化和编码,可以实现高效的图像压缩。著名的 JPEG 2000 图像压缩标准就采用了小波变换技术,相比传统的 JPEG 压缩标准,JPEG 2000 在相同的压缩比下能够提供更好的图像质量,特别是在处理包含丰富纹理和细节的图像时,优势更加明显。例如,在对卫星遥感图像进行压缩时,JPEG 2000 能够在大幅减少数据量的同时,保留图像中的关键信息,如地形地貌、城市建筑等细节,方便数据的传输和存储。
(三)医学信号处理
在医学领域,小波变换常用于处理各种生理信号,如心电图(ECG)、脑电图(EEG)等。以心电图信号处理为例,医生需要从心电图中准确判断心脏的工作状态,识别出正常和异常的心跳模式。小波变换能够对心电图信号进行时频分析,突出信号中的特征点,如 P 波、QRS 波群等,帮助医生更准确地检测出心脏疾病。在实际临床应用中,通过小波变换对心电图信号进行预处理和特征提取,可以辅助医生快速诊断出心肌梗死、心律失常等疾病,提高诊断的准确性和效率。
(四)小波变换计算实例
下面以一维连续信号的小波变换为例,使用哈尔小波对一个简单的分段函数信号进行变换,并详细解释变换前后的情况。
1. 定义原始信号
假设我们有一个简单的一维连续信号 f ( t ) f(t) f(t),定义在区间 [ 0 , 4 ] [0, 4] [0,4] 上:
f ( t ) = { 2 , 0 ≤ t < 2 4 , 2 ≤ t < 4 f(t) = \begin{cases} 2, & 0\leq t < 2 \\ 4, & 2\leq t < 4 \end{cases} f(t)={2,4,0≤t<22≤t<4
2. 介绍哈尔小波
哈尔小波是一种最简单的小波函数,其尺度函数 φ ( t ) \varphi(t) φ(t) 和小波函数 ψ ( t ) \psi(t) ψ(t) 定义如下:
- 尺度函数:
φ ( t ) = { 1 , 0 ≤ t < 1 0 , 其他 \varphi(t)= \begin{cases} 1, & 0\leq t < 1 \\ 0, & \text{其他} \end{cases} φ(t)={1,0,0≤t<1其他 - 小波函数:
ψ ( t ) = { 1 , 0 ≤ t < 0.5 − 1 , 0.5 ≤ t < 1 0 , 其他 \psi(t)= \begin{cases} 1, & 0\leq t < 0.5 \\ -1, & 0.5\leq t < 1 \\ 0, & \text{其他} \end{cases} ψ(t)=⎩ ⎨ ⎧1,−1,0,0≤t<0.50.5≤t<1其他
3. 连续小波变换公式
连续小波变换(CWT)的公式为:
W f ( a , b ) = 1 a ∫ − ∞ ∞ f ( t ) ψ ( t − b a ) d t W_f(a, b)=\frac{1}{\sqrt{a}}\int_{-\infty}^{\infty}f(t)\psi\left(\frac{t - b}{a}\right)dt Wf(a,b)=a1∫−∞∞f(t)ψ(at−b)dt
其中, a a a 是尺度参数,控制小波的伸缩; b b b 是平移参数,控制小波的平移。
4. 具体计算示例
我们取几个特定的 ( a , b ) (a, b) (a,b) 值来计算小波变换结果。
情况一: a = 1 , b = 0 a = 1, b = 0 a=1,b=0
W f ( 1 , 0 ) = ∫ − ∞ ∞ f ( t ) ψ ( t ) d t = ∫ 0 1 f ( t ) ψ ( t ) d t W_f(1, 0)=\int_{-\infty}^{\infty}f(t)\psi(t)dt=\int_{0}^{1}f(t)\psi(t)dt Wf(1,0)=∫−∞∞f(t)ψ(t)dt=∫01f(t)ψ(t)dt
因为在区间 [ 0 , 1 ] [0, 1] [0,1] 上, f ( t ) = 2 f(t) = 2 f(t)=2,所以:
W f ( 1 , 0 ) = ∫ 0 0.5 2 × 1 d t + ∫ 0.5 1 2 × ( − 1 ) d t = 2 × ( 0.5 − 0 ) − 2 × ( 1 − 0.5 ) = 1 − 1 = 0 W_f(1, 0)=\int_{0}^{0.5}2\times1dt+\int_{0.5}^{1}2\times(- 1)dt=2\times(0.5 - 0)-2\times(1 - 0.5)=1 - 1 = 0 Wf(1,0)=∫00.52×1dt+∫0.512×(−1)dt=2×(0.5−0)−2×(1−0.5)=1−1=0
情况二: a = 1 , b = 2 a = 1, b = 2 a=1,b=2
W f ( 1 , 2 ) = ∫ − ∞ ∞ f ( t ) ψ ( t − 2 ) d t = ∫ 2 3 f ( t ) ψ ( t − 2 ) d t W_f(1, 2)=\int_{-\infty}^{\infty}f(t)\psi(t - 2)dt=\int_{2}^{3}f(t)\psi(t - 2)dt Wf(1,2)=∫−∞∞f(t)ψ(t−2)dt=∫23f(t)ψ(t−2)dt
因为在区间 [ 2 , 3 ] [2, 3] [2,3] 上, f ( t ) = 4 f(t) = 4 f(t)=4,所以:
W f ( 1 , 2 ) = ∫ 2 2.5 4 × 1 d t + ∫ 2.5 3 4 × ( − 1 ) d t = 4 × ( 2.5 − 2 ) − 4 × ( 3 − 2.5 ) = 2 − 2 = 0 W_f(1, 2)=\int_{2}^{2.5}4\times1dt+\int_{2.5}^{3}4\times(-1)dt=4\times(2.5 - 2)-4\times(3 - 2.5)=2 - 2 = 0 Wf(1,2)=∫22.54×1dt+∫2.534×(−1)dt=4×(2.5−2)−4×(3−2.5)=2−2=0
情况三: a = 2 , b = 0 a = 2, b = 0 a=2,b=0
此时 ψ ( t 2 ) \psi\left(\frac{t}{2}\right) ψ(2t) 为:
ψ ( t 2 ) = { 1 , 0 ≤ t < 1 − 1 , 1 ≤ t < 2 0 , 其他 \psi\left(\frac{t}{2}\right)= \begin{cases} 1, & 0\leq t < 1 \\ -1, & 1\leq t < 2 \\ 0, & \text{其他} \end{cases} ψ(2t)=⎩ ⎨ ⎧1,−1,0,0≤t<11≤t<2其他
W f ( 2 , 0 ) = 1 2 ∫ − ∞ ∞ f ( t ) ψ ( t 2 ) d t = 1 2 ( ∫ 0 1 2 × 1 d t + ∫ 1 2 2 × ( − 1 ) d t ) = 0 W_f(2, 0)=\frac{1}{\sqrt{2}}\int_{-\infty}^{\infty}f(t)\psi\left(\frac{t}{2}\right)dt=\frac{1}{\sqrt{2}}\left(\int_{0}^{1}2\times1dt+\int_{1}^{2}2\times(-1)dt\right)=0 Wf(2,0)=21∫−∞∞f(t)ψ(2t)dt=21(∫012×1dt+∫122×(−1)dt)=0
情况四: a = 2 , b = 2 a = 2, b = 2 a=2,b=2
此时 ψ ( t − 2 2 ) \psi\left(\frac{t - 2}{2}\right) ψ(2t−2) 为:
ψ ( t − 2 2 ) = { 1 , 2 ≤ t < 3 − 1 , 3 ≤ t < 4 0 , 其他 \psi\left(\frac{t - 2}{2}\right)= \begin{cases} 1, & 2\leq t < 3 \\ -1, & 3\leq t < 4 \\ 0, & \text{其他} \end{cases} ψ(2t−2)=⎩ ⎨ ⎧1,−1,0,2≤t<33≤t<4其他
W f ( 2 , 2 ) = 1 2 ∫ − ∞ ∞ f ( t ) ψ ( t − 2 2 ) d t = 1 2 ( ∫ 2 3 4 × 1 d t + ∫ 3 4 4 × ( − 1 ) d t ) = 0 W_f(2, 2)=\frac{1}{\sqrt{2}}\int_{-\infty}^{\infty}f(t)\psi\left(\frac{t - 2}{2}\right)dt=\frac{1}{\sqrt{2}}\left(\int_{2}^{3}4\times1dt+\int_{3}^{4}4\times(-1)dt\right)=0 Wf(2,2)=21∫−∞∞f(t)ψ(2t−2)dt=21(∫234×1dt+∫344×(−1)dt)=0
5. 变换前后的解释
变换前(原始信号)
原始信号 f ( t ) f(t) f(t) 是一个分段常数函数,在区间 [ 0 , 2 ) [0, 2) [0,2) 上值为 2,在区间 [ 2 , 4 ) [2, 4) [2,4) 上值为 4。它描述了一个在不同时间段具有不同恒定值的现象。从时域角度看,我们可以直接观察到信号在不同区间的取值情况,但对于信号在不同尺度和位置上的变化特征并不容易直观分析。
变换后(小波变换结果)
- 尺度参数 a a a 的意义:尺度参数 a a a 控制着小波函数的伸缩程度。较大的 a a a 值对应着较宽的小波,它可以检测信号中的低频成分,也就是信号的整体趋势;较小的 a a a 值对应着较窄的小波,它可以检测信号中的高频成分,也就是信号的局部变化。
- 平移参数 b b b 的意义:平移参数 b b b 控制着小波函数在时间轴上的位置。通过改变 b b b,我们可以在不同的时间位置对信号进行分析。
- 小波变换结果分析:在上述计算中,我们得到的小波变换结果大部分为 0。这是因为哈尔小波是一种非常简单的小波,对于这种分段常数信号,在特定的 ( a , b ) (a, b) (a,b) 组合下,信号与小波函数的乘积在积分区域内正负抵消。但如果信号存在突变或者局部变化,小波变换会在相应的 ( a , b ) (a, b) (a,b) 位置产生非零值,从而可以检测到信号的局部特征。
通过小波变换,我们将原始信号从时域转换到了尺度 - 平移域,能够更方便地分析信号在不同尺度和位置上的特征,这对于信号处理、图像分析、故障诊断等领域都具有重要意义。
五、总结
小波变换作为一种强大的信号处理工具,以其独特的时频局部化特性、多分辨率分析能力、灵活的基函数选择以及高效的计算性能,在众多领域展现出了巨大的优势。与傅里叶变换相比,小波变换能够更好地处理非平稳、非线性信号,为我们提供更丰富、更准确的信息。无论是在地震监测、图像压缩还是医学信号处理等领域,小波变换都发挥着不可或缺的作用,并且随着技术的不断发展,其应用前景将更加广阔。
相关文章:
深入理解小波变换:信号处理的强大工具
引言 在科学与工程领域,信号处理一直是关键环节,傅里叶变换与小波变换作为重要的分析工具,在其中发挥着重要作用。本文将深入探讨小波变换,阐述其原理、优势以及与傅里叶变换的对比,并通过具体案例展示其应用价值。 一…...
【大数据技术】搭建完全分布式高可用大数据集群(Kafka)
搭建完全分布式高可用大数据集群(Kafka) kafka_2.13-3.9.0.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 Kafka 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件安装至/opt目录下。 安…...
使用git clone一个指定文件或者目录
1 创建一个空文件夹 mkdir -p test2 进入创建的文件夹 cd /test3 执行git init初始化git 在新建的文件夹下执行初始化动作是因为要保证本地是在git的环境下,为关联远程仓库提供前提。 git init4 与远程仓库进行关联 以我自己的gitcode仓库为例 git remote add…...
解决react中函数式组件usestate异步更新
问题:在点击modal组件确认后 调用后端接口,使用setstateone(false)使modal组件关闭,但是设置后关闭不了,在设置setstateone(false)前后打印出了对应的stateone都为true,但…...
关于ESP-IDF 5.4 中添加第三方组件esp32-camera找不到文件,编译错误解决办法(花了一天时间解决)
最近需要使用ESP32-S3-CAM 的OV2640摄像头采集图像,为了加速开发进度,于是选择了esp32-camera组件,该组件不是官方组件,需要自己git clone。但在为项目添加esp32-camera组件时,一直编译错误,找不到头文件&a…...
Android LifecycleOwner 闪退,java 继承、多态特性!
1. 闪退 同意隐私政策后,启动进入游戏 Activity 闪退 getLifecycle NullPointerException 空指针异常 FATAL EXCEPTION: main Process: com.primer.aa.gg, PID: 15722 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.primer.aa.…...
feign Api接口中注解问题:not annotated with HTTP method type (ex. GET, POST)
Bug Description 在调用Feign api时,出现如下异常: java.lang.IllegalStateException: Method PayFeignSentinelApi#getPayByOrderNo(String) not annotated with HTTPReproduciton Steps 1.启动nacos-pay-provider服务,并启动nacos-pay-c…...
Swipe横滑与SwipeItem自定义横滑相互影响
背景 vue项目,H5页面,使用vant的组件库轮播组件<Swipe>,UI交互要求,在每个SwipeItem中有内容,可自横滑,查看列表内容 核心代码 <template><Swipeclass"my_swipe":autoplay&quo…...
[LeetCode]day16 242.有效的字母异位词
242. 有效的字母异位词 - 力扣(LeetCode) 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat"…...
基于SpringBoot养老院平台系统功能实现五
一、前言介绍: 1.1 项目摘要 随着全球人口老龄化的不断加剧,养老服务需求日益增长。特别是在中国,随着经济的快速发展和人民生活水平的提高,老年人口数量不断增加,对养老服务的质量和效率提出了更高的要求。传统的养…...
基于HTML5 Canvas 和 JavaScript 实现的烟花动画效果
以下是一个使用 HTML5 Canvas 和 JavaScript 实现的烟花动画效果代码盒子: <!DOCTYPE html> <html> <head><title>烟花效果...
【3分钟极速部署】在本地快速部署deepseek
第一步,找到网站,下载: 首先找到Ollama , 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 ,文件不是很大,下载也比较的快 第二部就是安装了 : 安装完成后提示…...
Linux ftrace 内核跟踪入门
文章目录 ftrace介绍开启ftraceftrace使用ftrace跟踪指定内核函数ftrace跟踪指定pid ftrace原理ftrace与stracetrace-cmd 工具KernelShark参考 ftrace介绍 Ftrace is an internal tracer designed to help out developers and designers of systems to find what is going on i…...
深入理解 Rust 模块中的路径与公开性:绝对路径、相对路径和 `pub` 的应用
1. 路径的两种形式:绝对路径与相对路径 在 Rust 中,路径类似于文件系统中的目录路径,用来告诉编译器去哪里查找某个项。路径主要有两种形式: 绝对路径 绝对路径从 crate 的根开始。对于当前 crate 的代码,绝对路径以关…...
基于钉钉API的连接器实现:企业数据集成与自动化管理
文章目录 概要背景与需求钉钉API概述连接器实现小结 概要 在当今数字化时代,企业面临着海量数据的管理与整合挑战。钉钉作为国内广泛使用的办公协作平台,提供了丰富的API接口,支持企业进行数据集成与自动化管理。本文将介绍如何通过钉钉API实…...
[Day 16]螺旋遍历二维数组
今天我们看一下力扣上的这个题目:146.螺旋遍历二维数组 题目描述: 给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。 螺旋遍历:从左上角开始,按照 向右、向下、向左、向上 的顺序 依次 提取元素,…...
【教程】docker升级镜像
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 自动升级 手动升级 无论哪种方式,最重要的是一定要通过-v参数做数据的持久化! 自动升级 使用watchtower,可…...
使用jmeter进行压力测试
使用jmeter进行压力测试 jmeter安装 官网安装包下载,选择二进制文件,解压。 tar -xzvf apache-jmeter-x.tgz依赖jdk安装。 yum install java-1.8.0-openjdk环境变量配置,修改/etc/profile文件,添加以下内容。 export JMETER/…...
链表和 list
一、单链表的模拟实现 1.实现方式 链表的实现方式分为动态实现和静态实现两种。 动态实现是通过 new 申请结点,然后通过 delete 释放结点的形式构造链表。这种实现方式最能体 现链表的特性; 静态实现是利用两个数组配合来模拟链表。一个表示数据域&am…...
【AI大模型】Ubuntu18.04安装deepseek-r1模型+服务器部署+内网访问
以下内容主要参考博文:DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」 - 程序设计实验室 - 博客园 安装 ollama Download Ollama on Linux curl -fsSL https://ollama.com/install.sh | sh 配置 ollama 监听地址 ollama 安装后…...
cmd执行mysql命令
安装mysql之后如果想使用cmd执行mysql命令,需要怎么操作呢,下面一起看一下。 安装mysql之后,如果直接去cmd窗口执行MySQL命令,窗口可能会提示mysql不是可执行命令。 需要配置系统的环境变量,将mysql的安装路径配置系…...
网络安全威胁框架与入侵分析模型概述
引言 “网络安全攻防的本质是人与人之间的对抗,每一次入侵背后都有一个实体(个人或组织)”。这一经典观点概括了网络攻防的深层本质。无论是APT(高级持续性威胁)攻击、零日漏洞利用,还是简单的钓鱼攻击&am…...
【算法】动态规划专题⑦ —— 多重背包问题 + 二进制分解优化 python
目录 前置知识进入正题优化方法:二进制分解实战演练 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 python 【算法】动态规划专题⑥ —— 完全背包问题 python 进入正题 多重背包问题I https://www.acwing.com/problem/content/4/ 题目描述 有…...
详细教程 | 如何使用DolphinScheduler调度Flink实时任务
Apache DolphinScheduler 非常适用于实时数据处理场景,尤其是与 Apache Flink 的集成。DolphinScheduler 提供了丰富的功能,包括任务依赖管理、动态调度、实时监控和日志管理,能够有效简化 Flink 实时任务的管理和部署。通过 DolphinSchedule…...
PHP之hyperf学习笔记
Hyperf Model,Dao,Service,Contronller 路由 使用文件来配置路由,就是和laravel一样的 Router::addGroup(["middleware" > ["web", "auth"],"namespace" > "Hyperf\HttpServer\Contr…...
react的antd表格数据回显在form表单中
1、首先为table添加编辑按钮 {title: 操作,align: center,render: (_: any, record: any) > (<div style{{ display: flex, alignItems: center, justifyContent: space-evenly }}><Buttonsize"small"onClick{() > deitor(record)} style{{ margin…...
【通俗易懂说模型】线性回归(附深度学习、机器学习发展史)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
【R语言】apply函数族
在R语言中使用循环操作时是使用自身来实现的,效率较低。所以R语言有一个符合其统计语言出身的特点:向量化。R语言中的向量化运用了底层的C语言,而C语言的效率比高层的R语言的效率高。 apply函数族主要是为了解决数据向量化运算的问题&#x…...
传统营销架构在当下如何进行优化转型?
随着市场环境的变化和数字技术的发展,传统营销架构越来越难以适应当下的营销市场。为了适应新时代的要求,企业也需要对营销架构进行优化转型。企业主可以着手从哪些方面进行调整呢?下面就来一同探讨下。 一、强调扁平化原则 扁平化与去中心化…...
QMK启用摇杆和鼠标按键功能
虽然选择了触摸屏,我仍选择为机械键盘嵌入摇杆模块,这本质上是对"操作连续性"的执着。 值得深思的是,本次开发过程中借助DeepSeek的代码生成与逻辑推理,其展现的能力已然颠覆传统编程范式,需求描述可自动…...
