
数学计算
Thomas会写字
艰苦朴素
展开
-
Matlab freqz 函数实现
Matlab freqz 函数代码说明。原创 2023-09-28 16:18:18 · 839 阅读 · 0 评论 -
三种陷波滤波代码
【代码】三种陷波滤波代码。原创 2023-09-21 22:04:19 · 851 阅读 · 0 评论 -
Matlab的filtfilt函数解析
传统滤波(如Matlab的filter函数)会造成信号的延迟,延迟程度与滤波器的阶次有关,为了解决延迟问题,Matlab提供了filtfilt函数,该方法一般称为零相位滤波或双向滤波。本文的目的是对Matlab中的filtfilt函数原理进行解析,并在C++中实现。转载 2023-09-21 21:57:18 · 3330 阅读 · 5 评论 -
高斯-牛顿算法
指因变量与自变量之间的关系不是线性的关系,比如平方关系、对数关系、指数关系、三角函数关系等等。对于此类方程,求解n元实函数f在整个n维向量空间Rn上的最优值点往往很难得到精确解,经常需要求近似解问题。求解该最优化问题的方法大多是逐次一维搜索的迭代算法,基本思想是在一个近似点处选定一个有利于搜索方向,沿这个方向进行一维搜索,得到新的近似点。如此反复迭代,知道满足预定的精度要求为止。需要用目标函数的到函数,又称最速下降法,是早期的解析法,收敛速度较慢收敛速度快,但不稳定,计算也较困难。转载 2023-08-25 16:53:20 · 7105 阅读 · 1 评论 -
十分简明易懂的FFT(快速傅里叶变换)
快速傅里叶变换 (fast Fourier transform),即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。是离散傅氏变换(DFT)的快速算法。即为快速傅氏变换。它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。——百度百科,中文名快速傅里叶变换。转载 2023-07-15 22:09:53 · 40593 阅读 · 15 评论 -
傅里叶级数简介
任取两个不同三角函数元素,它们的乘积在[−π,π]上的定积分等于零。举例说明一共有如下四种情况(将函数f(x) 用 sin(x) + cos(x) 的形式表示出来的方式就是傅里叶级数。即,我们将直角坐标系上的函数曲线 f(x) 转移到了以sin cos 为底的坐标系中。此时,傅里叶级数的所有参数均可求得,对于需要展开的f(x),可以写成。由求解an的方式可知,在等式两边同乘sin(kx)可求得。我们对表达式两边在[−π,π]上求积分,得到。这时,我们就可以吧符合条件的f(x) 写成。原创 2023-06-11 13:37:34 · 1530 阅读 · 0 评论 -
字符串快速匹配算法 KMP
像上边的例子,我们已经不可能找到[ A,B,A,B ]这个最长的后缀串了,但我们还是可能找到[ A,B ]、[ B ]这样的前缀串的。所以这个过程像不像在定位[ A,B,A,C ]这个串,当C和主串不一样了(也就是k位置不一样了),那当然是把指针移动到next[k]啦。因为在P的每一个位置都可能发生不匹配,也就是说我们要计算每一个位置j对应的k,所以用一个数组next来保存,next[j] = k,表示当T[i]!像上图这种情况,j已经在最左边了,不可能再移动了,这时候要应该是i指针后移。转载 2023-05-17 14:51:35 · 247 阅读 · 0 评论 -
直角坐标系旋转
坐标系旋转转载 2022-07-12 10:18:33 · 889 阅读 · 0 评论 -
动态时间规整算法(DTW)原理及代码实现
Dynamic Time Warping(DTW)动态时间规整算法Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。1. DTW方法原理在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音素的发音速度也不同,比如有的人会把“A”这个音拖得很长,或者把“i”发的很短。另外,不同时间序列可能仅仅存在时间轴上的位移,亦即在还原位移的情转载 2022-02-09 14:38:34 · 9765 阅读 · 0 评论 -
二次曲线拟合
解此方程得到在均方误差最小意义下的拟合函数p(x),上述方程组称为多项式拟合的法方程,法方程的系数矩阵是对称的。当拟保多项式阶n>5时,法方程的系数矩阵是病态的,在计算中要用双精度或者一些特殊算法以保护解得准确性。示例:给定一组数据,用二次多项式函数拟合这组数据散点图如下所示:程序如下:#############################################Edit by wd,2013,4,16#######################...转载 2021-11-04 16:50:50 · 8285 阅读 · 0 评论 -
C#矩阵运算类库 -- 一些补充
重点补充,发现原类中没有深度复制(也许是我没找到。。。)于是修改如下MatrixAlgebra -->Matrix.cs -->Initialize函数 private void Initialize(double[,] Elements) { elements = Elements.CopyMatrix(); SubMat = new MatrixSubset(elements); ...原创 2021-10-13 16:19:51 · 1157 阅读 · 0 评论 -
C#矩阵运算类库
这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助。源码github网址:https://github.com/JoshuaHe2015/MatrixLibrary功能介绍:(持续更新中)1、矩阵的基本运算: 矩阵的加、减、乘、除、求逆、求幂、求秩、求行列式、转置。运算包括矩阵与矩阵的运算,矩阵与向量的运算和矩阵与标量的运算。using System;using LinearAlgebra;namesp转载 2021-10-13 16:14:27 · 1702 阅读 · 1 评论 -
最小外接矩形
得到凸包参考上篇文章算法思路参考这篇文章,链接。依次计算相邻点角度,反向旋转所有凸包点集,计算最小外接正矩形以及面积。往复迭代所有凸包点,得到面积最小的解,反向旋转调整角度即可得到最终解。参考代码待更新...原创 2021-07-20 23:13:11 · 1718 阅读 · 0 评论 -
最小凸包算法
使用Graham扫描法进新解决最小凸包问题先找到最左下端点然后根据极角来进行逆时针排序在根据相对极角增减来去除不需要的点C++代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define PI 3.1415926535using namespace std;struct node..转载 2021-07-17 16:17:07 · 1286 阅读 · 0 评论 -
最小二乘法直线拟合
方法1:感觉鲁棒性刚好些,但在两点拟合时出现 x1 无限接近 x2 或者 y1 无限接近 y2 时效果不好。方法2:不存在方法1的问题,但是鲁棒性感觉不如方法1好。FitLine1(std::vector<cv::Point2f> & SrcPts, MV_Line & DstLine){ int nSize = SrcPts.size(); if (nSize < 2) return; // 这里注意,为了提高精度,需要判断拟合的方向原创 2021-04-17 17:47:57 · 962 阅读 · 0 评论 -
SSR、SSE、SST、R2
在MATLAB中,计算回归问题的拟合优度(或判定系数)可用[B,BINT,R,RINT,STATS] = regress(Y,X)指令,其中的STATS的第一个返回值即为R2。R2约接近于1,拟合效果越好。SSR为回归平方和,SSE为残差平方和,SST为总离差平方和。若用表示真实的观测值,用y ˉ \bar{y}yˉ 表示真实观测值的平均值,用y i ^ \hat{y_i}yi ^ 表示拟合值————————————————版权声明:...原创 2021-04-17 16:38:59 · 10155 阅读 · 1 评论