C++
谢娘蓝桥
绿水青山境长静,花落虽频意自闲。
展开
-
Motorola S19(S-record)格式解析
S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming。1.格式S-record 每行最大78字节,156个字符,由5部分组成Stype 1byte 描述记录的类型((S0,S1,S2,S3,S5,S6,S7,S8,S9)。 Record Length 1byte 剩余此行后续数据...原创 2021-05-21 15:13:59 · 3660 阅读 · 1 评论 -
常规单位转换实现
例如扭矩 units::torque(1000.0, units::ft_lb);面积 units::area(1,units::cm2)简洁明了 直接使用即可。原创 2022-08-15 14:54:28 · 202 阅读 · 0 评论 -
基于 Bresenham 算法画圆
#include <graphics.h>#include <conio.h>// 使用 Bresenham 画圆法void Circle_Bresenham(int x, int y, int r, int color){ int tx = 0, ty = r, d = 3 - 2 * r; while (tx <= ty) { // 利用圆的八分对称性画点 putpixel(x + tx, y + ty, color); putpixel(x.原创 2022-06-29 22:05:53 · 551 阅读 · 0 评论 -
8种排序算法实现
归并排序原创 2022-02-21 20:23:03 · 132 阅读 · 0 评论 -
开源库C/C++推荐
1.Eigen 是一个线性算术的C++模板库,包括:vectors, matrices, 以及相关算法。功能强大、快速、优雅以及支持多平台,tensorflow 都在使用https://eigen.tuxfamily.org/index.php?title=Main_Page2.Armadillo C++ Library 是一种C++的线性代数库(矩阵数学)以取得良好的平衡速度与易用性。整数,浮点,而复杂的数字支持,以及一个子集,三角和统计功能。各种矩阵分解是通过可选的集成 与LAPACK和A...原创 2021-08-16 19:33:36 · 1331 阅读 · 0 评论 -
上位机串口全双工实现
#include "StdAfx.h"#include "KSerial.h"#define SAFE_DELETE(p) {if(p) delete[]p;p=NULL;}KSerial::KSerial(void){ m_hCom=NULL; m_bOpenComm=FALSE; m_ComNo=0; m_bYibu=false; m_ReadTimeOut=1000/2; m_lpUser=NULL; //memset(m_RecvBuf,0,sizeof(m_RecvBu.原创 2021-07-13 13:46:20 · 522 阅读 · 0 评论 -
c++ builder log10 sing error
今天发现一个奇怪的现象,相同的环绕声算法在qt上位机工作正常,在c++builder 内始终报log10 sing error,最后定位到头函数调用了 math.h 和原创 2021-06-03 16:19:39 · 320 阅读 · 0 评论 -
C++ builder 使用说明
1.安装文件时不能有空格,不然会报错误[C++ Error] E2075 Incorrect project override option: files[C++ Error] E2075 Incorrect project override option: (x86)\borland\cbuilder6\lib\vcl60.csm[C++ Error] E2075 Incorrect project override option: files[C++ Error] E2075 Incorrec原创 2021-04-01 10:47:50 · 3149 阅读 · 0 评论 -
智能指针
避免内存泄漏最有效的办法就是使用智能指针(Smart Pointer),智能指针可以自动删除分配的内存。智能指针和普通指针类似,只是不需要手动释放指针,而是通过智能指针自己管理内存的释放,这样就不用担心内存泄漏的问题了。C++提供了unique_ptr、shared_ptr和weak_ptr这几种智能指针:1.shared_ptr:共享的智能指针shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。在最后一个shared_ptr析构的时候,内存才会被释放。使用时注意:.原创 2020-12-29 18:23:07 · 105 阅读 · 1 评论 -
C++ 常用关键字
一、static1.1 声明全局变量static声明的变量存放在程序的全局存储区。用static声明的全局变量只能在本文件中访问。1.2 声明非成员函数用static声明的非成员函数只能在本文件中访问。1.3 类成员声明static类的静态变量必须初始化,初始化放在类外,不加static,使用域作用符表明所属的类,格式如下: <数据类型><类名>::<静态数据成员名>=<值>类的静态函数只能访问静态...原创 2020-12-21 15:42:56 · 662 阅读 · 0 评论 -
QT 设置应用自动启动
#include "QtAutoStart.h"#include <QSettings>#include <QDir>#include <QCoreApplication>#include <QFileInfo>QtAutoStart::QtAutoStart(QObject *parent) : QObject(parent){}void QtAutoStart::setAutoStart(bool bAutoStart){#i.原创 2020-07-27 16:05:22 · 379 阅读 · 1 评论 -
Qt 获取音频设备名称(输入输出)
/*! *@file QtAudioDevices.cpp *@brief 获取音频设备信息*/#include "QtAudioDevices.h"#include <QAudioDeviceInfo>QtAudioDevices::QtAudioDevices(QWidget *parent) : QDialog(parent), ui(new Ui::QtAudioDevices){ ui->setupUi(this); //获取输入音频.原创 2020-07-27 15:50:44 · 1826 阅读 · 0 评论 -
float uint32 uint16 转为uint8
appendUint32ToVec(std::vector<unsigned char> & vec, unsigned int val, bool bigEndian ){ if (bigEndian) {// unsigned char* p = (unsigned char*) &val;// p += 3;...原创 2020-01-18 15:53:35 · 5246 阅读 · 0 评论 -
仰邦科技 LED 板卡采集 TCP 版本
// LED5ksend.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "Led5kSDK.h"#include <iostream>#pragma comment(lib,"Led5kSdk.lib")int ledset(CString txt1, CString txt2, CString txt3, CS...原创 2018-09-20 20:36:39 · 1439 阅读 · 1 评论 -
基于rbf核SVM C++ 实现
//svm rbf核函数 rbf_sigma 不能为0MatrixXd SVM_rbf(MatrixXd u, MatrixXd v, double rbf_sigma=1){ double sigma = -1 / (pow(rbf_sigma, 2) * 2); MatrixXd tmp = u.array().square().rowwise().sum().square().s...原创 2019-01-11 10:42:49 · 924 阅读 · 0 评论 -
C++ 基础流操作
////载入文件 ifstream mic_file("record.txt",ios::binary | ios::in|ios::ate); //at end char *buffer; long size = mic_file.tellg();//获取大小 mic_file.seekg(0, ios::beg);//指向开始 buffer = new char[size];...原创 2019-03-05 09:24:13 · 520 阅读 · 0 评论 -
VS 创建dump文件
头函数引用:#include <DbgHelp.h>#pragma comment (lib,"dbghelp.lib")//是否是数据段必备模块inline BOOL IsDataSectionNeeded(const WCHAR* pModuleName){ if (pModuleName == 0) { return FALSE; }...原创 2019-03-21 14:57:51 · 1154 阅读 · 0 评论 -
字符串转GB3212
//转GB2312void togb2312(uint8_t *s, uint8_t*data, int &datalength){ int length = 0; while (*s) { if (*s >= 0x7f) { *data = *s; *(data + 1) = *(s + 1);...原创 2019-03-19 13:33:01 · 469 阅读 · 0 评论 -
python 基础
a/b 有小数a//b 整除a**b a的指数""" """ ## 用于注释字符串中的 ' 符号输出前加\3*‘7’ = ‘777’8.70>=8.7lese if <==> elifskippiingBreakingFinished...原创 2019-03-19 13:33:42 · 102 阅读 · 0 评论 -
VS 播放声音文件
// playsound.cpp : 定义控制台应用程序的入口点。//#include<iostream>#include "stdafx.h"#include<windows.h>#include<Mmsystem.h>#pragma comment(lib,"winmm.lib")using namespace std;bool main(...原创 2019-04-02 13:15:47 · 2279 阅读 · 0 评论 -
TCP 循环发送接收
// tcpsend.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <stdlib.h>#include <stdio.h>#include "winsock2.h"#include<WS2tcpip.h>#include <fstre...原创 2019-04-02 13:19:27 · 1062 阅读 · 0 评论 -
C++ 函数
构造函数:在类中函数名称和类名相同的函数,在建立对象时,做初始化工作,如果没有,编译器默认的构造函数 不能指定返回类型 可以有多个析构函数:当一个类的对象离开作用域是,析构函数会被调用(系统自动调用) 析构函数的名字和类名一样,不过要在前面加上~(析构函数只能有一个 不能带参数 也不能有返回值 作用是完成一个清理任务 释放从堆中分配的内存)后构造的对象先被析...原创 2019-07-02 08:27:30 · 140 阅读 · 0 评论 -
QT4 转 QT5
1、头文件包含 #include <QtGui/QProgressBar> #include <QtGui/QProgressDialog> #include <QtGui/QMessageBox> 等类似包含QtGui的包含文件,全部将QtGui取消掉。即 #include <QProgressBar>...原创 2019-07-02 11:08:21 · 1186 阅读 · 0 评论 -
基于eigen 的 矩阵数据读取
#include <iostream>#include <Eigen/Dense>#include<fstream>// Save to local file.#include <sstream> // stringstream, getlineusing namespace Eigen;using namespace std;/...原创 2019-06-28 23:44:31 · 7752 阅读 · 8 评论 -
c++ opencv 计算两条线的交点
La = vertices[0].y - vertices[2].y; Lb = vertices[0].x - vertices[2].x; Lc = vertices[0].x*vertices[2].y - vertices[2].x*vertices[0].y; LLa = vertices[1].y - vertices[3]....原创 2019-07-09 22:51:34 · 2195 阅读 · 0 评论 -
FFT C 语言实现
void smbFft(float *fftBuffer, long fftFrameSize, long sign) /* FFT routine, (C)1996 S.M.Bernsee. Sign = -1 is FFT, 1 is iFFT (inverse) Fills fftBuffer[0...2*fftFrameSize-1] with the F...转载 2019-07-10 23:24:17 · 429 阅读 · 0 评论 -
基于Eigen 实现 matlab fftshift
啥也不说 上代码 cirshift 见以前的文章/*Fun: fftshiftauthor:christime:2018//11/30input:x :输入矩阵Input dim 0,按x总数下移位一半1,下移动总行数的的一半,右移一次2,下移栋总列数的一半,右移动2次大于2时,右移动 dim次*/MatrixXd fftshift(MatrixXd x, int d...原创 2018-11-30 10:51:39 · 1133 阅读 · 0 评论 -
基于 Eigen 实现 循环移位
Eigen 这么强大的库竟然没有移位的功能 ,哎手写一个 ,向量版本的没贴出,比较简单嘻嘻/*循环移位a b 为正数时 向下移动a行 ,向右移动b 列*/MatrixXd circshift(MatrixXd data, int A, int B = 0){ UINT row = data.rows(); UINT col = data.cols(); MatrixXd o...原创 2018-11-30 10:00:33 · 763 阅读 · 0 评论 -
C++ new delete
delete 可以删除空指针。 delete 只能释放new申请的内存。 同一块内存尽量使用一个指针,降低释放两次的风险。 使用new[] 为数组分配内存 应使用delete[] 释放。 使用new[]为一个实体分配内存 ,则应使用delete(没有方括号)来释放。 指针变量增加1后,其增加的值等于指向的类型占用的字节数。 不能使用未经初始化的指针来访问内存。 尽量使用智能指针方式...原创 2018-11-16 17:35:45 · 248 阅读 · 0 评论 -
基于sp++ 实现matlab cov 函数
// 向量的方差Type cov(Vector<Type> x){ Type x_mean = sum(x) / x.size(); Type x_std = sum(pow(x - x_mean, (Type)2)) / (x.size() - 1); return x_std;}//两向量的协方差Matrix<Type>cov_Matrix(Vecto...原创 2018-10-19 17:24:59 · 497 阅读 · 0 评论 -
基于 sp++ 简单的声纹比对
//声纹识别Type nonfilter_speccor(Type*x1, Type*x2, int length, int fs){ Matrix<Type>Cn1 = mfcc_m(x1, length, fs,24 ,1024, 512); Cn1 = mapminmax(Cn1, -1, 1); Matrix<Type>Cn2 = mfcc_m(x2, ...原创 2018-10-19 17:08:44 · 1805 阅读 · 1 评论 -
基于sp++ 实现matlab corr corrcoef函数 计算皮尔逊相关系数
参考概念https://blog.csdn.net/crcr/article/details/58594432?utm_source=blogxgwz0用最简单的公式4可以实现下面代码。//皮尔逊相关系数计算Type myPearson(Vector<Type>x, Vector<Type>y){ Type A = sum(x*y) - (sum(x...原创 2018-10-19 11:27:11 · 1234 阅读 · 0 评论 -
基于sp++实现 [ 0 1 ]归一化 [-1 1] 归一化(matlab mapminmax 函数的实现)
matlab中归一的算法:y =(ymax-ymin)*(x-xmin)/(xmax-xmin)+ ymin; 简化到[0 1]即为y =(x-min(x))/(max(x)-min(x));基于SP ++实现过程如下: //归一化函数 x 输入向量 ymin 输出最小值 ymax 输出最大值Vector<Type>mapminmax(Vector<Ty...原创 2018-10-19 09:52:35 · 1927 阅读 · 0 评论 -
基于sp++ matlab mfcc 特征提取 c /c ++ 实现
//mel 滤波器函数//x 输入序列 fs采样率 p滤波器个数 framesize 帧大小 inc 帧移//提取mel滤波器参数用汉明窗函数Matrix<Type> mfcc_m(double *x, int length,int fs, int p, int framesize, int inc){ Matrix<Type> bank = melban...原创 2018-10-18 20:51:03 · 463 阅读 · 0 评论 -
基于SP++ matlab A计权的 C++实现
/* int :data 输入数据 responseType true :slow 1.0s false:fast 0.125s*/Vector<float> A_weight(float * data, int datalength, bool responseType, float Fs) { //% Note: A quite location will ...原创 2018-09-27 19:54:51 · 1314 阅读 · 0 评论 -
基于SP ++ 实现 fft 幅度 相位提取
//% 将时域脉冲信号x转换成频域声压级H(频率响应)//x 时域信号//Nlen fft点数//fs 采样频率//% fw 进行fft后输出频率 s//% H 频域信号幅值//% phase 频域信号相位Vector<Type>my_fft(Vector<Type>x, int Nlen, int fs){ Type Fs = fs / Nlen...原创 2018-09-20 19:32:53 · 1217 阅读 · 0 评论 -
基于sp++ matlab hanning窗 C++ 实现
Vector<Type> hanning_win(int n){ Vector<Type> w; bool type = true; w = hanning_win(n, type); return w;}// n 阶数 type: true->symmetric 对称 false->periodicVector<Type> h...原创 2018-09-25 19:19:25 · 854 阅读 · 0 评论 -
WAV 文件的读写
基础知识参考 https://blog.csdn.net/brookicv/article/details/528091281.WAV 写入 需要头函数#include <iostream>#include <fstream>#include <string.h>#include<math.h>#include<c...原创 2018-09-25 10:10:58 · 3780 阅读 · 8 评论 -
C 语言实现memcpy函数
学习了 https://blog.csdn.net/yuanrxdu/article/details/23771459 ,留自己mark学习void* my_memcpy(void *dst, const void* src, size_t size){ if(dst == NULL || src == NULL || size <= 0) return dst; cha...转载 2018-09-25 19:19:41 · 466 阅读 · 0 评论 -
基于sp++ matlab enframe c++ 实现
调用的SP++ 矩阵运算的库。下载地址https://www.oschina.net/p/tspl 1.带窗参数版本 //C++实现enframe分帧函数//输入://float* data:信号源(行向量)//datalength data长度//win 窗函数参数//winlength:每一帧的长度//hop:一帧与一帧之间移动的样点数,有的称为非重叠的长度...原创 2018-09-18 19:00:36 · 468 阅读 · 0 评论