算法系列之二十三:离散傅立叶变换之音频播放与频谱显示算法系列之二十三离散傅立叶变换之音频播放与频谱显示
导语
什么是频谱
1 频谱的原理
2 频谱的选择
3 频谱的计算
显示动态频谱
1 实现方法
2 杂项说明
结果展示
导语
频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业,现在主流的播放器都具备这两个功能,foobar 2000的十八段均衡器就曾经让很...
分类:
编程语言 时间:
2015-03-29 23:47:12
阅读次数:
639
通过定义一个C++类封装单链表这种数据结构,
封装的方法有:
1.通过输入创建单链表;
2.获取单链表的数据元素个数;
3.打印输出单链表中各个元素;
4.搜索某个元素在单链表中的位置;
5.在某个位置之后插入一个结点;
6.在某个位置删除一个节点;
7.单链表逆置;
8.单链表是否存在回环的判定;
9.单链表的升序排序;
10.两个单链表的升序合并;
11.两个单链表的降...
分类:
编程语言 时间:
2015-03-27 22:16:02
阅读次数:
212
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
编程语言 时间:
2015-03-20 14:20:38
阅读次数:
155
adaboost是boosting方法多个版本中最流行的一个版本,它是通过构建多个弱分类器,通过各个分类器的结果加权之后得到分类结果的。这里构建多个分类器的过程也是有讲究的,通过关注之前构建的分类器错分的那些数据而获得新的分类器。这样的多个分类器在训练时很容易得到收敛。
本文主要介绍了通过单层决策树构建弱分类器,同理,也可以用其他的分类算法构建弱分类器。
boost 算法系列的起源来自...
分类:
编程语言 时间:
2015-03-18 15:55:50
阅读次数:
222
频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业,现在主流的播放器都具备这两个功能,foobar 2000的十八段均衡器就曾经让很多人着迷。我用Winamp播放音乐(AOL已经在2013年12月20日停止了Winamp的支持),最早吸引我的原因就是播放界面上那个跳动的频谱,如图(1)所示。我一直想搞清楚这个实现原理是什么,直到我知道有离散傅立叶变换这个东西存...
分类:
编程语言 时间:
2015-03-17 23:49:00
阅读次数:
527
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
编程语言 时间:
2015-03-17 20:03:18
阅读次数:
152
本次主要记录流网络以及最大流的简单概念(以后可能会将最大流的实现算法补充),重点讲解用匈牙利算法来求二分图的最大匹配。
1:流网络
流网络是G(V, E)是一个有限的有向图,它的每条边(u, v)
∈E都有一个非负值实数的容量c(u, v)≥0。如果(u,
v) 不属于E,我们假设c(u, v) = 0。我们区别两个顶点:一个源点s和一个汇点t.。并假定每个顶点均处于从源点到汇点的某条路...
分类:
编程语言 时间:
2015-03-15 21:20:41
阅读次数:
207
自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个部分的内容没有介绍,主要是(Dijkstra算法、二叉平衡树、红黑树)。这部分会在后面的博客补充完整。这里主要是做一个总结,有兴趣的朋友可以好好看看,欢迎大家提出宝贵意见。 (1) 排序算法 快速排序 合并排序堆排序选...
分类:
编程语言 时间:
2015-03-15 18:07:09
阅读次数:
184
一 概述并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个操作用于此数据结构:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。
Union:将两个子集合并成同一个集合。
因为它支持这两种操作...
分类:
编程语言 时间:
2015-03-14 23:17:48
阅读次数:
195
简介求最小生成树一共有两种算法,一个是就是本文所说的Kruskal算法,另一个就是Prime算法。在详细讲解Kruskal最小生成树算法之前,让我们先回顾一下什么是最小生成树。我们有一个带权值的图,我们要求找到一个所有生成树中具有最小权值的生成树。如下图所示,T是图G的生成树。但不是具有最小权值的生成树。我们可以把他们想象成一组岛屿和连接它们的可能的桥梁。当然修桥是非常昂贵和费时的,所以我们必须要知...
分类:
编程语言 时间:
2015-03-14 18:37:27
阅读次数:
138