1.7k 词
什么是字符串匹配 暴力解法 KMP算法 具体实现 补充:   KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,用于在一个主串中查找一个模式串的位置。它通过预处理模式串,避免了在匹配失败时重复比较已经匹配的部分,从而提高了匹配效率。 该算法在1977年被提出,取三位贡献者的姓名首字母组成算法名称。 什么是字符串匹配字符串匹配问题是计算机科学中的一个经典问题,其核心目标是在一个较长的文本串(Text)中查找是否存在一个或多个与给定模式串(Pattern)完全相同的子串。 例如: 文本串(T):"ABABDABACDABABCABAB" 模式串(P):"ABABCABAB" 那么模式串可以在文本串的索引11处匹配   暴力解法知道控制语句用法的人都知道,这个问题可以套两层循环来解决,从文本串的第1个字符开始,与模式串逐字符比对,如果发现不匹配,则从文本串的第2个字符开始重新比对,以此类推,该解法时间复杂度为$O(m*n)$,效率较低。   KMP算法KMP算法通过预处理模式串...
607 词
出于科研项目要求,我需要开发一个能个性化定制界面与功能的BLE手机上位机软件,在经过简单的调研后,主要有以下两种开发路径: Android Studio MIT APP Inventor 其中AS需要Java基础,且开发周期长;MIT APP Inventor图形化编程,20min可上手,于是我选择后者,最终也能达到我想要的效果。 选择建议如下: 选 Android Studio:如果你想成为专业开发者,或开发功能复杂、可发布的商业应用。 选 MIT App Inventor:如果你是学生,或只想快速做一个简单应用 于是在B站看了几个包浆的教学视频后,我开始上手制作,过程意外地顺利 首先,你需要明确你的APP要包含哪些模块 如下图所示,在登陆官网后,你可以把你需要的模块在侧边栏拖入主页面 依次描述我的思路 上图中组件1是BLE设备搜索与断联按钮 2是BLE连接状态,3是波形图,4是实时数值,5是清空按钮; 当然也有后端组件Ⅰ,是BLE模块,这个在官网没有,需要下载拓展包,https://iot.appinventor.mit.edu/ 这个网站里可以找...
5.8k 词
MFCC的核心思想是模仿人耳对声音的非线性感知特性(人耳对低频声音比高频声音更敏感),从而更好地表示语音特征。其流程可以概括为以下步骤: 分帧 目的:语音信号是非平稳信号,其特性是随时间变化的。但在一个非常短的时间段内,可以近似认为是平稳的。分帧就是将长信号切分成许多短片段来分析。 操作:使用一个固定长度的窗口以一定的帧移沿着信号滑动并截取数据。 加窗 目的:减少每一帧信号在其两端处的频谱泄漏,使帧两端平滑地衰减到零,从而降低后续傅里叶变换后旁瓣的强度。 操作:将每一帧信号乘上一个窗函数。 傅里叶变换和功率谱计算 目的:将信号从时域转换到频域。 操作: 对每一帧加窗后的信号进行FFT,得到复数频谱。 然后计算其功率谱(取模的平方)。P = |FFT(frame)|² / N (N是FFT点数) 梅尔滤波器组滤波 目的:模拟人耳的听觉特性。人耳对于不同频率的感知能力是不同的,在低频区域区分度高,在高频区域区分度低。梅尔刻度是一种将实际频率转换为更符合人耳感知的频率刻度。 操作: 定义一组三角带通滤波器(梅尔滤波器组),这些滤波器在梅尔刻度上是等宽的,但在线性频率刻度上是不...
142k 词
1. 数学 2. 数组 3. 链表 4. 哈希散列 5. 栈与队列 6. 类与OOP应用 7. 二叉树 8. 回溯 9. 贪心 10. 动态规划 11. 单调栈 12. 图论 12.1 理论基础 12.2 深度优先搜索理论基础 12.3 广度优先搜索理论基础 12.4 并查集理论基础 12.5 案例 1. 数学1.1 基础有一天, 小明收到一张奇怪的信, 信上要小明计算出给定数各个位上数字为偶数的和。例如:5548,结果为12,等于 4 + 8 。小明很苦恼,想请你帮忙解决这个问题 #include <iostream> using namespace std; int main(){ int n, sum = 0; //input while(cin >> n){ // calculation while (n != 0){ int res = 0; res = n % 10; if ((res % 2) == 0) sum ...
27k 词
目录: Ch0 数字图像的概念 图像分类:模拟图像与数字图像 数字图像处理的基本特点 数字图像处理的基本内容 Ch1 图像技术基础 图像与像素 数字化过程 像素的属性 像素间的基本关系 像素间的距离 印刷品中的半调输出技术 图像坐标变换 图像的质量 图像储存的数据结构 图像文件格式 *光盘读取原理 Ch2 空间域图像增强 灰度映射 图像求反(负片) 幂次变换 动态范围压缩 阶梯量化 灰度切分/阈值切分 位平面切片 图像运算(逐像素进行) 算术运算(一般用于灰度图像) 代数运算 逻辑运算 直方图变换 *直方图均衡化方法: *直方图规定化方法: 镜头边界的检测 图像空间平滑滤波增强 图像中的噪声 邻域平均线性滤波(均值滤波) 中值滤波法 空间域滤波推广 基本低通滤波器设计原则: 微分滤波器模板系数设计 高增益滤波 Ch3 频域图像增强 理论基础 二维卷积 二维离散傅里叶变换 基本性质 DFT的问题 频域图像增强 一般步骤 频域平面与图像空域特性的关系 滤波器 理想低通滤波器的定义 理想低通滤波器的分析 Butterworth低通滤波器 理想高通滤...
6.5k 词
在之前的基础上改进了一部分 硬件上把串口和SWD下载口引出来了,夹具下载有点不稳定 同时把手头上的LCD模组和红外传感器模组给用了,没有额外购买物资,成品图如下: 左边是V1,右边是V2   软件部分增加了一些图像处理的功能: 图像平滑:双线性插值 void interpolateTemperature(float *src, float *dst, uint8_t src_w, uint8_t src_h, uint8_t dst_w, uint8_t dst_h) { float x_ratio = (float)(src_w-1) / dst_w; float y_ratio = (float)(src_h-1) / dst_h; for (int y = 0; y < dst_h; y++) { for (int x = 0; x < dst_w; x++) { float x_src = x * x_ratio; ...
1.6k 词
目录: Step 1 : 安装MathJax引擎并更换渲染引擎: Step 2 : 更新MathJax的cdn链接 Step 3 : 更改部分转义规则 Step 4 (可选) : 主题未预配置下使用Hexo-filter-mathjax 测试 在写一些内容时,会遇到需要添加数学公式的地方,Hexo部分主题不支持公式的渲染,比如我正在使用的vivia主题,在查阅一些资料之后,我使用MathJax引擎实现了vivia主题下的数学公式渲染。 MathJax简介:https://www.osgeo.cn/mathjax/basic/mathjax.html 该引擎是一款可在所有现代浏览器中工作的开源js显示引擎,辅助页面作者编写含有数学公式的文档 Step 1 : 安装MathJax引擎并更换渲染引擎:​ 操作包括卸载Hexo自带的Hexo-math,卸载默认的对MathJax不友好的marked引擎 npm uninstall hexo-math --save npm install hexo-renderer-mathjax --save npm ...
14k 词
目录: Lecture 0 Scratch Lecture 1 C Lecture 2 Arrays Lecture 3 Algorithms Lecture 4 Memory Lecture 5 Data Structures Lecture 6 Python, Artificial Intelligence Lecture 7 SQL Lecture 8 HTML, CSS, JavaScript Lecture 9 Flask Lecture 10 Cybersecurity Lecture 0 ScratchLecture 1 CLecture 2 ArraysLecture 3 Algorithms Time Complexity is an important metric used to measure the relationship between the running time of an algorithm and the size of the input. It describes how the execution time of an alg...