K230_DSP
K230的DSP算法
花月mmc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CanMV K230 DSP案例7.4——希尔伯特变换CanMV K230实现
延续 EMD算法,实现希尔伯特变换,从而实现完整的HHT变换。希尔伯特变换MicroPython实现。希尔伯特变换MATLAB实现。原创 2025-10-05 18:59:52 · 137 阅读 · 0 评论 -
CanMV K230 2025年度计划
Canmv k230 C++案例1——image classify学习笔记 初版近期做修订与源码分享)2)CanMV K230案例1——MNIST手写数字识别(近期做修订与源码分享)5)CanMV K230 Transformer 案例(这个时间会晚些)2)希尔伯特变换(HT)、希尔伯特—黄(HHT)MicroPython版。4)CanMV K230 图像检测 案例(大概是YOLO实现环节分析)1)CanMV K230使用经验分享(近期做修订与源码分享)3)CanMV K230 RNN案例。原创 2025-09-08 22:45:06 · 267 阅读 · 0 评论 -
Canmv k230 ADC案例——AD7606
Canmv k230存在ADC,但ADC输入范围少,通道数少,因此采用外部接入ADC的方式,但受限于MicroPython,实际的ADC采样频率较低,再加上Canmv k230的定时器目前限制在200Hz,通过设置可以实现8通道的200Hz的采集。本次8通道转换时间需要2.5ms左右,同时定时器存在误差实际频率接近200Hz。后续,优化代码,可能会采用C++进一步增加处理速度,待续。通过信号发生器发送两通道方波信号,信号频率0.1Hz。Canmv k230 ADC案例。通道1 ±5V 通道1 ±2V。原创 2025-07-23 01:06:22 · 290 阅读 · 0 评论 -
Canmv k230 DAC案例——TLV5638
Canmv k230本身没有DAC 通过SPI接入一个两通道的DAC——TLV5638,实际性能受限于MicroPython,但通过简单尝试实现了,后续可能会尝试其他DAC与ADC。后续,详细补充细节,可能会有更多AD/DA模块测试。原创 2025-07-22 17:44:36 · 320 阅读 · 0 评论 -
CanMV k230 DSP算法应用(预告)
思路:应该会以不同的电压波形(正弦、方波、三角波)为输入、应用DSP算法,通过简单的逻辑,识别不同类型的波形,尽量应用已经编写的算法。在讲解了一些DSP算法后,应该增加一些应用,以便更加深入理论算法。原创 2025-01-02 21:04:18 · 183 阅读 · 0 评论 -
Canmv k230 案例2.5——FFT自定义(五)(预告)
不采用库函数,自定义FFT,待续。原创 2024-11-06 09:07:58 · 197 阅读 · 0 评论 -
CanMV-K230 案例1 DSP框架初版
2)DSP只是可以处理DSP功能的处理器,可以是专用的DSP、RISC-V的K230的处理器、STM32类的ARM等;3)DAC这个部分作为DSP计算结果的输出,但K230没有DAC,因此教程以UART代替输出计算结果的功能。因为教程是以K230为基础的,目前集中在Micropython,但后面将采用C/C++编写。DSP框架一般可以表示为ADC采集——DSP处理——DAC输出。1)ADC可以是采集电压的ADC,也可以是采集声音、振动等;将会采用基于RISC-V架构的 MCU DSP。原创 2024-11-05 18:26:22 · 302 阅读 · 0 评论 -
Canmv k230 案例5.2——离散小波变换(二)
简单来说将一段数据降维,分解为原始1/2长度的低频分量,与原始1/2长度的高频分量。原创 2024-10-30 01:12:44 · 424 阅读 · 0 评论 -
Canmv k230 DSP案例7.3——EMD Canmv k230 实现
这里仅是代码,实验结果,对于更具体的说明后面可能绘图说明,但需要更多的时间才能更新。原创 2024-10-29 20:44:19 · 527 阅读 · 0 评论 -
Canmv k230 DSP案例7.2——EMD基本原理
步骤1:对一段曲线求局部极大值点与局部极小值点;例如这是一个正弦与二次函数的组合曲线,因此分解只有一个IMF分量与剩余分量。步骤2:对局部极大值点采用三次样条进行曲线拟合行成上包络线;对局部极小值点采用三次样条进行曲线拟合行成下包络线;步骤3:计算包络线的均值,然后从原始数据中减去均值,得到伪IMF1。,需要计算参数a,b,c,d形成的数组(学习的时候耗时较多)步骤4:再次分解判断是否达到停止准则,输出IMF1分量。1)遍历数据,计算局部极大值与局部极小值的形成的数组。原创 2024-10-29 20:23:07 · 262 阅读 · 0 评论 -
Canmv k230 DSP案例7.1——EMD经验模态分解简介
先看下 EMD在Canmv k230中的计算结果,采用MicroPython。原创 2024-10-18 18:33:47 · 217 阅读 · 0 评论 -
CanMV-K230自学笔记系列(不定期更新)
目前已经更新了一些信号处理的笔记与深度学习的笔记,主要采用micropython,但是随着系统的逐渐完善,原有的一些笔记内容已经不能运行,需要进行更新。同时micropython的环境仅使用部分k230的性能,因此对于C++的开发学习看起来很有必要,但所需要的学习成本急剧增加。1 原有的笔记重新编写,以适应现在的micropython系统,适当补充原笔记内容;2 增加C++开发案例的简单流程描述,即使最简单的例程,写起来也会很长。笔记内容主要为CanMV-K230的学习过程,目前陆续有新的k230开发板。原创 2024-08-11 02:15:20 · 785 阅读 · 0 评论 -
Canmv k230 案例6.2—— S变换代码Python版
由于S变换的原理解释需要花费更多的时间,而python代码列出来又会过于看不懂,但还是先放出来,总比一直不做的要好。以后后完善,到终版可能还有几版。原创 2024-04-09 15:06:59 · 665 阅读 · 6 评论 -
Canmv k230 案例6—— s变换(Stockwell Transform)(预告)
基本原理已经实现,内容较多,需要过段时间才能更新。直接拆分了每个计算单元通过最简单的功能实现。ST变换的输出存在细节变化特征。误差很小,为数据计算产生的误差。FFT无法区分时间分辨率。matlab的输出结果。原创 2024-03-18 02:46:40 · 507 阅读 · 0 评论 -
Canmv k230 案例5.3——小波奇异性检测(三)
设置适当的滤波器实现波形突变检测,实际效果,串口输出结果如下图所示。原创 2024-03-07 16:51:00 · 558 阅读 · 0 评论 -
Canmv k230 案例4.3——实时FIR (ADC+FIR+UART)(三)(初稿)
待补充。原创 2024-03-06 23:47:51 · 569 阅读 · 0 评论 -
Canmv k230 案例4.2——实时FIR 滤波器原理(二)(初版)
理论待补充。原创 2024-03-06 23:34:40 · 547 阅读 · 0 评论 -
Canmv k230 案例5.1——小波变换(一)
尺度函数与小波函数Haar 可以先用a=[1 1]b=[1 -1]表示,暂时不考虑正交系数。原创 2024-03-01 16:02:45 · 705 阅读 · 0 评论 -
Canmv k230 案例4.1——FIR 滤波器(一)
1)绘制信号假定采样率为1kHz,1000点的数据FFT的分辨率为fs/N=1000/1000=1Hz/点2)并分析频谱除了FFT一个序列的直流分量外,三种谐波成分均已理论一致。原创 2024-02-25 01:09:54 · 559 阅读 · 0 评论 -
Canmv k230 案例2.4——DFT自定义(四)
最近在做S变换,将代码转换到micropython中,因为需要用到复数,因此进行DFT和IDFT变换,而Canmv k230中的FFT有些问题,ulab中的fft不支持复数,因此需要自定义DFT,FFT后面有时间再编写。可以看到计算得到的误差较小,FFT是DFT的快速算法,同时数据长度需要为2^n,DFT长度任意,但与FFT相比计算量大,FFT后续编写。S变换在实现上还有一些计算过程需要自定义,可能要过一段时间,同时虽然得到了计算结果但目前还不是完全理解其中的一些概念。原创 2024-02-19 18:34:33 · 588 阅读 · 0 评论 -
理解数字信号处理系列——基于CanMV-K230
在理论公式上理解数字信号处理没有通过软件仿真理解来的深刻,同时在公式及软件仿真上理解也远远不及实际的硬件实现算法来的深刻。个人的理解,数字信号处理方法应该是能够在硬件上实现的算法,仅在理论上理解感觉还是会对部分概念理解的不够深刻。但硬件开发是难度较大,C、C++的学习需要经历较长的时间,在canmv k230开发板支持micropython后,通过Python进行在线调试变得简单起来,同时k230支持深度学习算法的加速,学习成本较低。原创 2024-02-16 19:40:53 · 985 阅读 · 0 评论 -
Canmv k230 案例3.1——短时傅里叶STFT(一)
Canmv k230中集成了可调用的硬件FFT,但使用过程中存在问题,可以采用ulab中提供的FFT函数。500Hz内为随时间增加频率增加,大于500Hz为对称的频谱,matlab中对stft的绘图描述如下。当FFT沿着时间轴滑动得到的频率随时间变化的矩阵,就可以得到信号时频的变化——STFT。MATLAB中对于STFT的实现方法,自带函数stft,下面对调频信号测试。注:本文可能不严谨,主要是对STFT的简单阐述。将ide中的输出数据复制到MATLAB中。需要先对信号进行加窗处理,后续再说明。原创 2024-02-16 15:33:02 · 529 阅读 · 0 评论 -
Canmv k230 案例2.3——ADC+UART+FFT测试(三)
前面两节通过在k230中计算FFT,现在通过外部传感器采集数据,即ADC进行FFT测试。原创 2024-02-13 01:26:38 · 1759 阅读 · 0 评论 -
Canmv k230 案例2.2——FFT测试(二)
首先看下Canmv IDE 中FFT的函数部分及输出结果,原程序可能是为了演示效果,因此以下程序进行了部分修改:1、修改数组转换为int16,硬件FFT支持的数据类型;2、补偿了原始FFT存在系数上的差异,将幅值除以2。从计算频率的结果可以看出,因此计算采用int16,因此在幅值计算时可能出现截断,幅值为太小则无法就显示正确结果,因此调整输入数据的范围可以得到接近理论值的结果。看起来精度还是不太高,那么如果自定义FFT的结果怎样呢?下期可能更新FFT的一些实际应用问题、与ADC结合的操作。原创 2024-02-06 18:10:45 · 717 阅读 · 0 评论 -
Canmv k230 案例2——FFT测试(初版)
k230采用的int16,那么对于生成的数据存在截断的误差,在MATLAB里绘制可看出差异,讲输出的列表数据导入到MATLAB并定义为k230。其中第4、6项的计算结果为(32,2),但幅值计算结果不同分别为2、1,奇怪。打开canmv内置的FFT的例子(官网代码可能在测试中)进行参数修改。主要的幅值不大,但还是有一些其余的影响,是数据被截断产生的其余频率。这个截断的数据好奇怪,计算结果如下。k230计算的FFT结果如下。原创 2024-02-03 20:51:34 · 692 阅读 · 0 评论
分享