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

STM32开发板上生成PWM正弦波

在STM32开发板上生成正弦波通常需要结合定时器(TIM)、数模转换器(DAC)或脉宽调制(PWM)以及时钟系统的配置。以下是分步指南:


方法1:使用DAC + 定时器(推荐)

步骤1:配置时钟系统
  1. 使用STM32CubeMX或直接配置寄存器,确保系统时钟(SYSCLK)足够高(例如72MHz)。
  2. 配置定时器的时钟源(如APB1或APB2总线时钟)。
    • 例如,若使用APB1定时器(TIM6/TIM7),时钟频率为72MHz。
步骤2:生成正弦波数据表
  1. 计算一个正弦周期内的采样点,例如200个点。
    #define SIN_SAMPLES 200
    uint32_t sin_table[SIN_SAMPLES];
    for (int i = 0; i < SIN_SAMPLES; i++) {sin_table[i] = (uint32_t)(2048 * (1 + sin(2 * M_PI * i / SIN_SAMPLES))); // 12-bit DAC范围:0-4095
    }
    
步骤3:配置DAC
  1. 启用DAC通道(例如DAC1通道1)。
  2. 配置DAC为定时器触发模式:
    HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t*)sin_table, SIN_SAMPLES, DAC_ALIGN_12B_R);
    
步骤4:配置定时器
  1. 设置定时器为触发DAC的更新事件:
    • 定时器频率 = 正弦波频率 × 采样点数。
    • 例如,生成1kHz正弦波,采样200点,定时器频率需为200kHz。
    htim6.Instance = TIM6;
    htim6.Init.Prescaler = 72 - 1;      // 72MHz / 72 = 1MHz
    htim6.Init.Period = 5 - 1;          // 1MHz / 5 = 200kHz
    HAL_TIM_Base_Init(&htim6);
    HAL_TIM_Base_Start(&htim6);
    
步骤5:启动DAC和定时器
HAL_TIM_Base_Start(&htim6);
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t*)sin_table, SIN_SAMPLES, DAC_ALIGN_12B_R);

方法2:使用PWM + 低通滤波器

步骤1:配置PWM定时器
  1. 设置定时器为PWM模式(例如TIM1或TIM3)。
  2. 调整PWM频率(载波频率建议在20kHz以上以简化滤波):
    htim3.Instance = TIM3;
    htim3.Init.Prescaler = 72 - 1;     // 72MHz / 72 = 1MHz
    htim3.Init.Period = 50 - 1;        // 1MHz / 50 = 20kHz
    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
    
步骤2:生成正弦波占空比表
#define SIN_SAMPLES 200
uint16_t pwm_table[SIN_SAMPLES];
for (int i = 0; i < SIN_SAMPLES; i++) {pwm_table[i] = (uint16_t)(25 * (1 + sin(2 * M_PI * i / SIN_SAMPLES))); // 占空比0-50(对应0-100%)
}
步骤3:动态更新PWM占空比

使用定时器中断或DMA更新占空比:

// 在定时器中断中更新CCR
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {static uint8_t idx = 0;__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm_table[idx]);idx = (idx + 1) % SIN_SAMPLES;
}
步骤4:添加低通滤波器

在PWM输出引脚后连接RC低通滤波器(截止频率略高于目标正弦波频率)。


关键公式

  • 正弦波频率计算

    • DAC方法:正弦波频率 = 定时器触发频率 / 采样点数
    • PWM方法:正弦波频率 = 定时器更新频率 / 采样点数
  • 定时器频率计算

    • 定时器频率 = 输入时钟 / (Prescaler + 1) / (Period + 1)

注意事项

  1. 确保时钟树配置正确(使用STM32CubeMX可视化配置)。
  2. DMA可大幅降低CPU负载,推荐使用。
  3. 调整采样点数和滤波电路以优化波形质量。

通过上述步骤,即可在STM32开发板上输出高质量的正弦波。


STM32正弦波生成原理硬核总结


1. 核心原理
  • 数字信号离散化:将连续正弦波按奈奎斯特定理采样离散化,采样频率需≥2倍信号频率(实际工程中通常取5~10倍)。
  • 信号重建机制
    • DAC法:通过数模转换器直接输出量化后的电压值,实现信号重建。
    • PWM法:利用占空比的等效面积原理(Voltage-Second Balance),通过低通滤波器提取基波分量。

2. 硬件模块深度解析
(1) DAC模块
  • 工作模式
    • 单次触发:CPU手动更新数据(低效)
    • DMA循环模式:定时器触发DAC,DMA自动搬运波形表(零CPU开销)
    • 双缓冲模式:交替更新波形表,避免输出毛刺
  • 关键参数
    • 转换时间:STM32F4 DAC转换时间最低可达1μs(对应1MSPS)
    • 量化误差:12位DAC理论信噪比SNR=74dB(SNR=6.02N+1.76)
(2) PWM模块
  • 调制机制
    • 定时器CNT与CCRx比较产生可变占空比方波
    • 占空比分辨率:Resolution = log2(TIM_CLK / PWM_Freq)
    • 例如:72MHz时钟,20kHz PWM → 12位分辨率
  • 频谱特性
    • 输出频谱 = 基波 + 载波频率谐波
    • 滤波器需抑制载波频率(如20kHz)及其边带
(3) 时钟系统
  • 关键路径
    HSE → PLL → SYSCLK → APBx Prescaler → TIMx_CLK
    
  • 时钟精度影响
    • 频率误差:Δf = ±0.25%(工业级晶振典型值)
    • 长期稳定性:需考虑温漂(±50ppm/℃)

3. 数学建模
(1) 采样定理实现
  • 设目标频率f_signal,采样点数N,则:
    • 定时器触发频率:f_trigger = N * f_signal
    • 重建信号带宽:f_max = f_trigger / 2(受限于DAC/PWM响应)
(2) 波形量化误差
  • 量化台阶:ΔV = V_ref / (2^N - 1)
  • 总谐波失真(THD):
    THD ≈ 20*log10(ΔV/(2√2))  // 假设理想正弦波
    
    12位DAC理论THD≈-72dB
(3) PWM等效电压
  • 输出电压:V_avg = (CCRx / ARR) * V_dd
  • 纹波电压:V_ripple = (V_dd * T_pwm) / (8RC)(一阶RC滤波)

4. 关键设计参数
参数DAC法公式PWM法公式
定时器周期ARR = (TIM_CLK / f_trigger) - 1ARR = (TIM_CLK / f_pwm) - 1
最大信号频率f_max = TIM_CLK / (2*N)f_max = 1/(2πRC)(滤波器限制)
功耗优化点关闭未用模拟电路优化死区时间降低开关损耗

5. 误差源分析
误差类型DAC法影响PWM法影响
时钟抖动导致采样时间不确定性(孔径抖动)引起占空比调制误差
量化噪声白噪声基底,-74dB(12bit)台阶式失真,需dithering改善
非线性误差INL/DNL影响波形保真度死区时间导致谐波畸变
滤波器相位延迟无(直接输出)引入群延迟,影响实时性

6. 高阶优化技术
  • 过采样与插值
    • 4×过采样可将有效位数提升1bit
    • 使用Cubic插值算法平滑波形
  • Σ-Δ调制
    • 将PWM升级为1位Σ-Δ流,通过噪声整形降低带内噪声
  • 动态波形更新
    • 双缓冲DMA实现波形表无缝切换
    • 实时计算波形(如使用CORDIC算法)

7. 实测验证要点
  1. 频谱分析
    • 使用FFT观察THD(Total Harmonic Distortion)
    • DAC法典型THD<1%,PWM法THD≈3-5%(受滤波器影响)
  2. 瞬态响应测试
    • 阶跃响应测试重建滤波器性能
  3. 长期稳定性
    • 持续运行24小时监测频率漂移

设计选择决策树

是否需要高压/大电流输出?
├── 是 → 选择PWM+功率驱动电路
└── 否 → ├── 要求高波形质量? │   ├── 是 → 选择DAC+抗混叠滤波器│   └── 否 → 选择PWM+简易RC滤波└── 需要多通道同步?├── 是 → 使用TIM主从模式同步多个DAC└── 否 → 独立通道实现

通过上述硬核原理分析,开发者可深入理解STM32正弦波生成的本质矛盾(速度vs精度),并根据应用场景选择最优实现方案。

相关文章:

STM32开发板上生成PWM正弦波

在STM32开发板上生成正弦波通常需要结合定时器&#xff08;TIM&#xff09;、数模转换器&#xff08;DAC&#xff09;或脉宽调制&#xff08;PWM&#xff09;以及时钟系统的配置。以下是分步指南&#xff1a; 方法1&#xff1a;使用DAC 定时器&#xff08;推荐&#xff09; 步…...

Spring Boot 实现文件秒传功能

前言 在开发Web应用时&#xff0c;文件上传是一个常见需求。然而&#xff0c;当用户需要上传大文件或相同文件多次时&#xff0c;会造成带宽浪费和服务器存储冗余。此时可以使用文件秒传技术通过识别重复文件&#xff0c;实现瞬间完成上传的效果&#xff0c;大大提升了用户体验…...

【Vue2】数据绑定_MVVM模型_数据代理_事件处理

目录 一、 数据绑定 1. Vue中有2种数据绑定的方式&#xff1a; 2. 响应式原理 el 与 data 的两种写法 二、 MVVM模型 三、 数据代理 1.回顾Object defineproperty方法 2. 何为数据代理 3.Vue中的数据代理 四、 事件处理 1.事件的基本使用&#xff1a; 2. Vue中的事…...

Python数据类型-dict

Python数据类型-dict 字典是Python中一种非常强大且常用的数据类型&#xff0c;它使用键-值对(key-value)的形式存储数据。 1. 字典的基本特性 无序集合&#xff1a;字典中的元素没有顺序概念可变(mutable)&#xff1a;可以动态添加、修改和删除元素键必须唯一且不可变&…...

win10之mysql server 8.0.41安装

一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…...

解决Oracle PL/SQL中“表或视图不存在“错误的完整指南

解决Oracle PL/SQL中"表或视图不存在"错误的完整指南 前言问题概述根本原因分析一、 编译时与运行时验证差异二、权限问题三、 Schema命名问题 实际案例演示案例1&#xff1a;动态分表查询案例2&#xff1a;权限不足的场景 实用排查步骤排查流程图最佳实践建议解决方…...

从实用的角度聊聊Linux下文本编辑器VIM

本文从实用的角度聊聊Vim的常用命令。何为实用&#xff1f;我举个不实用的例子大家就明白了&#xff0c;用vim写代码。;) “vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用&#xff0c;和Emacs并列成…...

MySQL的进阶语法8(SQL优化——insert、主键、order by、group by、limit、count和update)

目录 一、插入数据 1.1 insert 1.2 大批量插入数据 二、主键优化 2.1 数据组织方式 2.2 页分裂 2.2.1 主键顺序插入效果 2.2.2 主键乱序插入效果 2.3 页合并 2.4 索引设计原则 三、order by优化 3.1 执行以下两条语句&#xff08;无索引&#xff09; 3.2 创建索引…...

STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出

目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的&#xff1f; 问题1&#xff1a;如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2&#xff1a;哪些寄存器&#xff0c;去哪里找呢&#xff1f; 问题三&#xff0c;寄存器的含义&#xff…...

FreeRTOS源码下载分享

FreeRTOS源码下载分享 官网下载太慢了&#xff0c;分享下FreeRTOSv202411 FreeRTOSv202411.00.zip 链接: https://pan.baidu.com/s/1P4sVS5WroYEl0WTlPD7GXg 提取码: g6aq...

PyArrow 核心技术与应用:高效数据处理与跨生态集成实践

Apache Arrow 作为列式内存数据格式的行业标准&#xff0c;其 Python 接口 PyArrow 正在重塑数据科学生态。本文深入解析 PyArrow 的核心计算能力&#xff0c;涵盖统计函数、分组聚合、窗口操作及跨库集成&#xff0c;通过完整代码示例演示如何利用其高性能特性优化数据处理流程…...

机试题——PCB印刷电路板布线

题目描述 在 PCB 印刷电路板设计中&#xff0c;器件之间的连线需要避免线路的阻抗值增大&#xff0c;而且器件之间还可能存在其他干扰源。为了简化问题&#xff0c;我们将电路板简化为一个 ( M * N ) 的矩阵&#xff0c;每个位置&#xff08;单元格&#xff09;的值表示其源干…...

数据化管理(一)---什么是数据化管理

目录 一、什么是数据化管理1.1 “聪明”的销售人员1.2 数据化管理的概念1.3 数据化管理的意义1.4 数据化管理的四个层次1.4.1 业务指导管理1.4.2 营运指导管理1.4.3 经营策略管理1.4.4 战略规划管理 1.5 数据化管理流程图1.5.1 分析需求1.5.2 收集数据1.5.3 整理数据1.5.4 分析…...

Android 10.0 通过广播控制systemui状态栏动态显示和隐藏功能实现

1.前言 在10.0的系统rom定制化开发中&#xff0c;在某些特定的产品开发中&#xff0c;需要通过接口来控制系统状态栏的显示和隐藏&#xff0c; 所以就需要了解systemui状态栏的显示构造过程&#xff0c;然后通过相关接口来显示和隐藏状态栏&#xff0c;接下来就来 实现相关的功…...

Linux服务器安装MinerU

安装MinerU 为了确保项目的稳定性和可靠性&#xff0c;我们在开发过程中仅对特定的软硬件环境进行优化和测试。这样当用户在推荐的系统配置上部署和运行项目时&#xff0c;能够获得最佳的性能表现和最少的兼容性问题。 这里我们以基础的 [[Linux服务器部署PaddleX实战教程]] 使…...

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

前引&#xff1a;屏幕前的你还在AI智能搜索框这样搜索吗&#xff1f;“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” &#xff0c;。看到此篇文章的小伙伴们&#xff01;请准备好你的思维魔杖&#xff0c;开启【霍格沃茨模式】&#xff0c;看我如何更新秘密的【知识炼金…...

Vite 内联 CSS 和 JS 的解决方案

使用 vite-plugin-singlefile&#xff08;推荐&#xff09; 这个插件专门用于将整个 Vite 应用打包成单个 HTML 文件&#xff0c;内联所有 JS 和 CSS。 安装 pnpm i vite-plugin-singlefile -D配置 vite.config.js import { defineConfig } from vite import { viteSingleF…...

致敬生物信息学先驱:玛格丽特·戴霍夫(Margaret Dayhoff,1925-1983)

李升伟 编译 社论 发布于&#xff1a;2025年3月11日 《自然-计算科学》第五卷 第187页&#xff08;2025年&#xff09; 在玛格丽特戴霍夫&#xff08;Margaret Dayhoff&#xff0c;1925-1983&#xff09;百年诞辰之际&#xff0c;我们聚焦这位先驱在生物信息学领域留下的不朽…...

Knife4j文档请求异常 空指针

打开swagger文档报空指针异常 java.lang.NullPointerException: nullat springfox.documentation.oas.mappers.SchemaMapper.model(SchemaMapper.java:97)at springfox.documentation.oas.mappers.SchemaMapper.mapModel(SchemaMapper.java:85)at springfox.documentation.oas…...

笔记2——网络参考模型

一、OSI参考模型&#xff1a; 应用层&#xff1a; 报文 给应用程序提供接口 表示层&#xff1a; 进行数据格式的转换 会话层&#xff1a; 在通讯双方之间建立、管理和终止会话 传输层&#xff1a; 数据段&#xff1b;建立、维护、取消一次端到端的数据传输过程&#xff1b;控制…...

Spring AOP + Redis缓存设计实战:基于注解的优雅三防方案(击穿/穿透/雪崩)

文章目录 摘要 正文一、缓存设计的痛点与破局二、核心代码拆解&#xff1a;四层防御设计1. 注解驱动&#xff08;ZywCacheable&#xff09;2. 缓存击穿防护&#xff1a;双重检查锁3. 缓存穿透防护&#xff1a;空值标记4. 缓存雪崩防护&#xff1a;TTL随机算法 三、生产环境最佳…...

洛谷题单3-P5720 【深基4.例4】一尺之棰-python-流程图重构

题目描述 《庄子》中说到&#xff0c;“一尺之棰&#xff0c;日取其半&#xff0c;万世不竭”。第一天有一根长度为 a a a 的木棍&#xff0c;从第二天开始&#xff0c;每天都要将这根木棍锯掉一半&#xff08;每次除 2 2 2&#xff0c;向下取整&#xff09;。第几天的时候木…...

jdk21新特性详解使用总结

jdk21新特性详解总结 1.StringBuilder和StringBuffer新增了一个repeat方法 /*** Java 21的StringBuilder和StringBuffer新增了一个repeat方法*/public static void repeatStr(){var sbnew StringBuilder().repeat("*",10);System.out.println(sb);}运行结果如下&…...

解码 collections.Counter - 频率统计的利器

文章目录 前言一、什么是 collections.Counter?二、 基本用法:从创建到访问2.1 创建 Counter 对象2.2 访问计数三、 核心功能:更新与排序3.1 更新计数3.2 获取常见元素四、高级用法:数学运算与转换4.1 数学运算4.2 类型转换五、 实际应用:Counter 的威力5.1 词频统计5.2 在…...

Mysql基础笔记

# 1.SQL数据类型 可以去这篇文章看看&#xff1a; 最全 SQL 字段类型&#xff08;4种&#xff09;、属性&#xff08;6种&#xff09;总结:https://blog.csdn.net/weixin_45654582/article/details/119157403 ### 一.整数类型 ### 二.小数类型(2种) 1、浮点型&#xff1a;…...

HttpClient-03.入门案例-发送POST方式请求

一.发送POST方式请求 编写代码&#xff1a; 1.创建一个HttpClient对象 2.创建一个HttpGet请求 3.发送http的get请求并获得响应对象 4.通过发送GET请求获取的CloseableHttpResponse响应对象来获取状态码以及响应数据 package com.sky.test;import com.alibaba.fastjson.JS…...

Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>

包是Oracle数据库中一种重要的PL/SQL程序结构&#xff0c;它将逻辑相关的变量、常量、游标、异常、过程和函数组织在一起&#xff0c;提供了更好的封装性和模块化。在大型项目中&#xff0c;可能有很多模块&#xff0c;而每一个模块又有自己的存过、函数等。而这些存过、函数默…...

每日一题---买卖股票的最好时机(一)、(二)

目录 买卖股票的最好时机(一) 一、题目链接&#xff1a;买卖股票的最好时机(一)_牛客题霸_牛客网 二、解题思路 三、代码实现 买卖股票的最好时机&#xff08;二&#xff09; 一、题目链接&#xff1a;买卖股票的最好时机(二)_牛客题霸_牛客网 ​编辑 二、解题思路 …...

XSS漏洞的分类解释和演示实验

XSS漏洞&#xff1a;跨站脚本攻击(cross site scripting)&#xff0c;为了不和CSS混淆而改名。攻击者网web插入恶意script代码&#xff0c;当用户浏览页面时&#xff0c;嵌入的代码会被执行。 危害&#xff1a;盗取各类用户&#xff0c;强制发送电子邮件&#xff0c;网站挂马等…...

【Pandas】pandas DataFrame info

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型DataFrame.info([verbose, buf, max_cols, …])用于提供 Dat…...

JP1 Systemwalker 和 unirita的A-AUTO制品对比

以下是 JP1 SystemWalker&#xff08;日立&#xff09; 与 Unirita A-AUTO 的对比分析。两者均为日本企业开发的IT运维自动化工具&#xff0c;但在功能定位、技术架构和适用场景上存在显著差异&#xff1a; 1. 产品背景与市场定位 维度JP1 SystemWalkerUnirita A-AUTO开发商日…...

探索鸿蒙操作系统:迎接万物互联新时代

# 探索鸿蒙操作系统&#xff1a;迎接万物互联新时代 在科技飞速发展的当下&#xff0c;万物互联的时代浪潮正席卷而来。在这个全新的时代背景下&#xff0c;移动应用开发领域面临着前所未有的挑战&#xff0c;同时也迎来了诸多机遇。而鸿蒙操作系统&#xff08;HarmonyOS&…...

NOIP2010提高组.引水入城

*前置题目 901. 滑雪 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 310, INF 0x3f3f3f3f; const int dx[4] {0, -1, 0, 1}, dy[4] {1, 0, -1, 0};int n, m, h[N][N]; int f[N][N]; int ans;int dfs(i…...

NLP高频面试题(二十九)——大模型解码常见参数解析

在大语言模型的实际应用中&#xff0c;如何更有效地控制文本生成的质量与多样性&#xff0c;一直是热门研究话题。其中&#xff0c;模型解码&#xff08;decode&#xff09;策略至关重要&#xff0c;涉及的主要参数包括 top_k、top_p 和 temperature 等。本文将详细介绍这些常见…...

【AI产品分享】面向图片的原始位置翻译功能

1. 背景 在撰写文字材料时&#xff0c;往往需要配套图像以增强表达效果。然而&#xff0c;有时自己绘制的图可能达不到理想的质量&#xff0c;而在其他文献材料中却能发现更清晰、直观的示例。希望在“站在巨人的肩膀上”优化自己的图像时&#xff0c;通常希望在保留原始图像的…...

为什么要为 REST API 添加认证

在不断发展的 Web 服务领域&#xff0c;REST API 在各种软件系统之间的通信中扮演着至关重要的角色。然而&#xff0c;强大的功能也伴随着巨大的责任。确保敏感数据的安全性和通信的可靠性是至关重要的。这时&#xff0c;认证就显得尤为重要。通过使用认证&#xff0c;我们可以…...

AI 数字人短视频数字人源码部署揭秘:开启虚拟内容创作新纪元​

在当下短视频盛行的时代&#xff0c;AI 数字人短视频以其独特的魅力吸引着大众的目光。虚拟偶像在舞台上活力四射&#xff0c;电商平台中数字人不知疲倦地推荐产品&#xff0c;这些令人瞩目的表现背后&#xff0c;源码的部署起着至关重要的作用。它如同幕后的神奇工匠&#xff…...

佳能imageRUNNER 2206N基本参数及管理员密码

基本参数&#xff1a; 产品类型 激光数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 速度类型 低速 最大原稿尺寸 A3 复印/打印方式 激光静电转印方式 感光材料 OPC 显影系统 干式单组分显影 定影…...

【Linux篇】探索进程地址空间:计算机背后的虚拟世界

进程地址空间的奥秘&#xff1a;让你理解程序如何在计算机中生存 一. 程序地址空间1.1 基本概念1.2 虚拟内存管理1.3 为什么存在虚拟地址空间1.3.1 意义 2. 最后 本文将介绍进程地址空间的基本概念与结构&#xff0c;帮助读者理解操作系统如何管理和分配内存。进程地址空间指的…...

Docker部署sprintboot后端项目

创建Docker网络 docker network create icjs 部署Redis docker run -d \--network icjs \--name redis \-p 6379:6379 \redis:latest数据持久化 docker run --restartalways --network icjs -p 6379:6379 --name redis -v /opt/docker/redis/redis.conf:/etc/redis/redis.c…...

1.4 基于模拟退火改进蛇算法优化VGG13SE网络超参数的故障诊断模型

本博客来源于CSDN机器鱼&#xff0c;未同意任何人转载。 更多内容&#xff0c;欢迎点击本专栏&#xff0c;查看更多内容。 目录 0 引言 1 改进原理 2 本文改进方法 3 改进蛇优化VGG13SE的故障诊断模型 4 结语 0 引言 在【博客】中&#xff0c;我们采用了蛇算法来对VGG1…...

Vue + Scss项目中实现自定义颜色主题的动态切换

当时面试的时候遇到面试官问的一个问题如何实现自定义颜色主题切换,当时我做的只是elementUIPlus提供的暗黑和默认主题切换​​​​​​​ theme.scss // 增加自定义主题类型 $themes: (light: (/* 原有配置保持不变 */),dark: (/* 原有配置保持不变 */),custom: () // 空映射…...

C#实现HiveQL建表语句中特殊数据类型的包裹

用C#实现搜索字符串中用’(‘和’)‘包裹的最外层的里面里面的字符串&#xff0c;将里面的记录按一个或多个空格、换行或tab&#xff0c;或者是它的在一起的组合作为分隔&#xff0c;分隔出多个字符串组&#xff0c;如果组中有字符串中同时包含’<‘和’>’&#xff0c;则…...

27 python 标准库概览

在办公室里,每个员工都有一套预装的办公软件:Word 处理文档、Excel 制作表格、Outlook 收发邮件... Python 的标准库就像公司预装的 "办公全家桶",包含 100 多个模块,覆盖文件操作、时间管理、数据分析等日常需求,无需额外安装即可直接使用。 一、文件管理 1.…...

whisper 语音识别的安装与使用

Whisper 是由OpenAI开发的开源自动语音识别&#xff08;ASR&#xff09;模型&#xff0c;不仅支持音频转录&#xff0c;还可以用于视频转录。通过调用ffmpeg处理视频&#xff0c;支持主流音视频格式的转录‌。 安装 安装ffmpeg&#xff1a;下载ffmpeg&#xff0c;Releases B…...

搜广推校招面经六十四

滴滴搜推算法 一、定义一个树结构、特征结构。写一个决策树对样本打分 逆天啊&#xff0c;上来就是暴击 import numpy as np class TreeNode:def __init__(self, feature_indexNone, thresholdNone, leftNone, rightNone, scoreNone):self.feature_index feature_index #…...

zabbix监控网站(nginx、redis、mysql)

目录 前提准备&#xff1a; zabbix-server主机配置&#xff1a; 1. 安装数据库 nginx主机配置&#xff1a; 1. 安装nginx redis主机配置&#xff1a; 1. 安装redis mysql主机配置&#xff1a; 1. 安装数据库 zabbix-server&#xff1a; 1. 安装zabbix 2. 编辑配置文…...

动态规划,如何应用动态规划解决实际问题?

一、动态规划核心概念 动态规划是一种分阶段解决问题的数学方法&#xff0c;它将复杂问题分解为更小的子问题&#xff0c;通过存储子问题的解来避免重复计算。 关键特征&#xff1a; ​最优子结构&#xff1a;问题的最优解包含子问题的最优解​重叠子问题&#xff1a;问题可…...

常见操作系统特点及区别对比

操作系统名称类型特点主要用途许可证类型内核类型Windows桌面/服务器图形界面友好&#xff0c;软件生态丰富&#xff0c;闭源个人电脑、企业办公专有商业许可混合内核macOS桌面 (Unix-like)高度优化的硬件整合&#xff0c;Unix基础&#xff0c;闭源创意设计、开发专有商业许可混…...

【资讯分享】为Apple Intelligence打造的有效屏障:“隐私保护气泡”

导读&#xff1a;苹果在WWDC大会上推出Apple Intelligence&#xff0c;主打个性化智能服务&#xff0c;深度整合iOS生态&#xff0c;支持跨App操作与内容感知。通过本地计算与私密云计算&#xff08;PCC&#xff09;技术实现端到端加密&#xff0c;确保数据匿名化处理与高透明度…...