算法
文章平均质量分 95
实用算法
菜老越
学习使我快乐
展开
-
【嵌入式】STM32利用arm-dsp库进行PID调节控制
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称 PID 控制,又称 PID调节。其原理介绍教科书以及网上已经有大量资料,本文着重介绍在嵌入式设备中,如何快速上手进行PID控制。...原创 2021-05-07 19:45:49 · 9952 阅读 · 22 评论 -
【Matlab】Qt Matlab混合编程——以曲线拟合为例
一、概要在编写Qt应用时,若想用到比较复杂的算法,如拟合、FFT等,没有现成的C/C++库。而这些在Matlab中都是很容易实现的,那么有没有一种方法可以让Qt“不劳而获”得调用Matlab的算法呢?其实方法有两种:1. 对于不同编程语言,完全可以通过【公共内存】的方式实现交互,这类似于进程间通讯。简单来说,可以Qt与Matlab共同读写同一文件,比如Qt将原始数据放入文件,Matlab检测到后对原始数据进行计算,然后将结果放到这个文件中供Qt读取。2. Matlab的m文件可以编译为Qt可以调用的原创 2021-01-11 19:24:14 · 7548 阅读 · 24 评论 -
【Matlab】Curve曲线拟合后如何获得高精度参数
一 出现的问题Matlab的Curve工具是非常使用的曲线拟合工具,关于它的使用网上一搜一大把。一直以来,我也在使用它进行曲线拟合,而且一直用的很好,没有感觉到不对,直到今天出现了这样一个情况:在拟合完一条3次多项式曲线后,直接将红框中的参数扔到C语言里参与计算了。在C中的程序如下所示: res = -2.121e05*pow(x,3) + 6.302e05*pow(x,2) - 6.241e05*x + 2.06e05这个式子与Curve中的参数完全吻合,而真正到计算时,res会返回一个“令原创 2020-11-03 18:49:23 · 5861 阅读 · 6 评论 -
【Opencv】OSD反色处理
通过上一篇博文【海思】利用opencv给海思抓拍图像加OSD,现在已经可以在摄像头抓拍照片的基础上进行OSD叠加了,同时也实现了背景色透明的OSD叠加。基于上一篇结尾留出的小问题,今天利用Opencv实现了叠加字体的反色,从而使得OSD在图片中更为突出。具体思路如下:1、获取OSD中每个字符将要叠加到原图的区域2、根据区域获取原图在此区域的平均灰度值3、若平均灰度值大于某一值(即偏白色),则将OSD位图相应区域重画为黑色,否则(偏黑色)不做处理,因为生成的字符串是本来就是白色的。我封装了一个函数,原创 2020-06-04 11:59:40 · 1717 阅读 · 0 评论 -
【嵌入式】NTC(热敏电阻)曲线拟合在嵌入式中的应用
NTC热敏电阻是低成本测温的有效手段,一般厂家都会提供一个阻值-温度表,通过查表获得温度值。之所以给个表,是因为阻值-温度表是非线性的。所以写程序时要把这个表写进程序,一般占用几百个字节,对于大多数MCU来说可以忽略。今天在群里遇到一个有意思的问题,一哥们的MCU片上flash只有16K,把几百字节的NTC表加入程序后直接不够用了,咨询该怎么办。我的办法是:通过matlab做一个阻值-温度的拟...原创 2020-04-14 17:32:06 · 3949 阅读 · 6 评论 -
【嵌入式】自己写mktime、localtime函数
世纪秒指自1970年1月1日0时0分0秒至某一日期时间经过的秒数。有些应用场景中,需要将日期时间转换为世纪秒,或者将世纪秒转换为日期时间。c/c++库中已经有相关的函数,由time.h中的mktime函数和localtime函数分别实现上述两个转换。但在嵌入式设备中,time.h往往只能实现32位的世纪秒运算,最大支持到2038年;且mktime、localtime默认的时间基准年份都是1970...原创 2020-04-02 19:08:14 · 2942 阅读 · 3 评论 -
【嵌入式】利用arm-DSP库进行FFT计算,获得信号的频谱、幅值及相位(下)
代码终于要来了,那么咱们就一步一步来。核心代码就三个文件——data.c data.h ffttest.c,其中data.c data.h为数据的准备部分,数据当然来自Matlab。ffttest.c里才是干货。(旁白:么看过上的自行翻阅。。)一.data.c/data.h数据准备data.h#ifndef _DATA_H#define _DATA_H#include "arm_math...原创 2019-08-24 17:09:20 · 11331 阅读 · 29 评论 -
【嵌入式】利用arm-DSP库进行FFT计算,获得信号的频谱、幅值及相位(上)
电力系统中往往掺杂谐波,而FFT可以将谐波检测出来,具有较大的实用价值。今天主要讲一下在STM32中如何利用dsp库进行快速傅里叶计算,从而得出信号的频谱幅值以及相位。一、Matlab简单搭建1.谐波检测搭建通过50Hz正弦波叠加100Hz、200Hz的正弦波得到叠加后畸变的波形,这个波形主要用来进行FFT运算进行谐波检测。模型很简单如图1所示,三个正弦波相位相同、频率不同,幅值分别为5、1...原创 2019-08-24 16:42:35 · 29254 阅读 · 19 评论