- 博客(215)
- 资源 (16)
- 收藏
- 关注
原创 关于麦克风,你应该知道的事
关于麦克风,你应该知道的事1. 介绍麦克风在生活中很常见,可以说是无处不在,耳机、手机、智能音箱、电脑上都有麦克风,平时听得音乐也都需要由专业麦克风进行录制。即使这样,大多数人对于麦克风的也并没有足够的了解,可谓是“灯下黑”。这篇文章将从工作原理和相关参数两方面对麦克风进行介绍,同时还会依据不同的方法对麦克风进行简单分类。2. 工作原理按照工作原理,可以粗略的...
2018-07-01 15:47:51 3463
原创 Ubuntu14.04+Jekyll+Github Pages搭建静态博客
Ubuntu14.04+Jekyll+Github Pages搭建静态博客1. Jekyll简介简单:无需数据库
2015-06-04 23:35:33 2341
原创 Linux Shell脚本攻略(1.12)
1.12 函数和参数和其他脚本语言一样,Bash同样支持函数,并且可以传递参数。1.12.1 函数定义和传参#!/bin/bashfunction fname() #也可以用fname()代替{ echo $1,$2; #访问参数1和参数2 echo "$@"; #以列表的方式一次性打印所有参数 echo "$*";
2015-06-02 21:53:35 885
原创 Linux Shell脚本攻略(1.11)
1.11 调试脚本调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本的运行信息,调试信息可以帮你弄清楚是什么原因使得程序发生崩溃或者行为异常。1.11.1 Bash内建调试功能使用Bash的内建调试功能,可以对整个脚本进行调试,也可以仅对脚本中的某些语句进行调试。#使用set -x和set +x对脚本的某一句进行调试#!/bin/bashfor
2015-06-01 22:14:56 789
原创 Linux Shell脚本攻略(1.8)
1.8 使用别名linux中的别名就相当于windows中的快捷方式,使用别名可以省去用户输入一长串命令序列的麻烦。1.8.1 创建临时别名(快捷方式)alias new_command='command sequence' #格式说明alias install='sudo apt-get install' #实例说明在声明 install=’sudo apt-get install’之后,
2015-05-30 22:08:48 763
原创 Linux Shell脚本攻略(1.7)
1.7 数组和关联数组数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合。普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引。通常情况下,使用字符串做索引更容易被人们理解。Bash从4.0之后开始引入关联数组。1.7.1 定义打印普通数组数组的方法有如下几种:#在一行上列出所有元素array_var=(1 2 3
2015-05-29 23:45:18 782
原创 Linux Shell脚本攻略(1.5)
1.5 使用shell进行数学运算在任何一种编程语言中,算术运算都是必不可少的,shell也不例外。1.5.1 使用let、(())和[]进行算术运算可以使用普通变量赋值方法定义数值,这是,它会被保存为字符串。我们可以通过使用let、(())、[]等操作符,使得这些变量进行算术运算。例如:#!/bin/bashno1=4 #此处no1义字符串形式存
2015-05-29 00:03:31 946
原创 Linux Shell脚本攻略(1.4)
1.4 使用函数添加环境变量1.4.1 简介环境变量通常用于存储路径列表,这些路径用于搜索可执行文件、库文件等。例如:$PATH、$LD_LIBRARY_PATH,它们通常看起来像这样:PATH=/usr/bin;binLD_LIBRARY_PATH=/usr/lib;lib这意味着只要shell需要运行二进制可执行文件时,它会首先查找/usr/bin,然后查找/bin。在ubuntu14.04
2015-05-27 23:38:22 826
原创 Linux Shell脚本攻略(1.3)
1.3 玩转变量和环境变量变量是任何一种编程语言都必不可少的组成部分,用于存放各种类型的变量。脚本语言大多是弱类型语言(动态语言),也就是说在使用变量时,不需要事先声明变量的类型,只需要直接赋值就可以。在Bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。有一些特殊的变量会被shell环境和操作系统保留,用来存储一些特别的值,这类变量就称为环境变量,相信
2015-05-27 00:52:48 1870
原创 Linux Shell脚本攻略(1.2)
1.2 终端打印终端是交互式工具,用户可以通过它与shell环境进行交互。在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务。通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的。echo终端打印echo "Welcome to Bash"echo 'Welcome to Bash'echo Welcome to Bash以上三种方法的效果是一样的,输出内
2015-05-23 23:19:26 1034
原创 Linux Shell脚本攻略(1.1)
1.1 简介诸多类Unix操作系统的设计令人惊叹。即便是在数十年后的今天,Unix式的操作系统架构仍是有史以来最佳的设计之一。这种架构最重要的一个特性就是命令行界面或者shell。shell环境使得用户能与操作系统的核心功能进行交互。术语脚本更多涉及的便是这种环境。编写脚本通常使用某种基于解释器的编程语言。shell脚本本质上就是一些文本文件,我们可以将一系列需要执行的命令写入其中,然后通过she
2015-05-23 14:17:59 988
原创 视频测试信号的幅度和饱和度
概述在视频测试中,通常由标准信号发生器产生标准的彩条测试信号,对芯片等进行测试。彩条有两个主要特征:幅度和饱和度。这两个特征比较容易混淆,这篇博文主要对视频测试中幅度和饱和度进行区分。信号幅度彩条的幅度可以由以下公式计算得到: 式中 分子为对应彩条的最大分量,分母为基准白色的最大分量。75%和100%的彩条选定基准白色为(255,255,255),则100%幅度的彩条如下表: 75%幅度的彩条如
2015-05-19 22:08:58 2703
原创 RGB、HSV、HSI颜色空间
目录用 [TOC]来生成目录:目录概述RGB颜色空间HSV颜色空间HSI颜色空间RGB到HSV的转换公式RGB到HSI的转换公式参考文献概述 这篇博客主要介绍RGB、HSV和HSI颜色空间以及转换公式。RGB颜色空间定义 RGB颜色空间通常用于显示器系统,例如:电脑、电视机的显示器使用的都是RGB颜色空间。利用物理学中的三原色叠加原理,可以产生各种颜色。在RGB颜色空间中
2015-05-18 23:14:07 15408
原创 朋友圈
题目1526:朋友圈时间限制:1 秒内存限制:128 兆特殊判题:否提交:708解决:200题目描述:假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。假如:n = 5 , m = 3 , r = {{
2013-12-05 18:47:15 2148
原创 点菜问题
题目1152:点菜问题时间限制:1 秒内存限制:32 兆特殊判题:否提交:629解决:321题目描述: 北大网络实验室经常有活动需要叫外买,但是每次叫外买的报销经费的总额最大为C元,有N种菜可以点,经过长时间的点菜,网络实验室对于每种菜i都有一个量化的评价分数(表示这个菜可口程度),为Vi,每种菜的价格为Pi, 问如何选
2013-12-04 13:20:53 1305
原创 一点一滴学java(BigDecimal类)
这篇博客主要说明再用BigDecimal类的两个对象相加时如何除去末尾的零。。。想了好久都没解决。。。最后是将运算结果转换为字符串,然后用字符串去做的。。。详细的请看代码。。。。importjava.math.*;importjava.util.*;publicclass Main { publicstatic
2013-11-23 16:10:19 1584
原创 gets和puts函数
char *gets( char *str );The gets() function reads characters from STDIN and loads them into str, until a newline or EOF is reached. The newline character is translated into a null termination. T
2013-11-21 12:32:31 3012
原创 严版数据结构 第29页 单链表 C++实现
#includeusing namespace std;typedef struct LNode{ int data; //节点数据域 struct LNode *next; //指针域 、链域 } LNode, *LinkList;bool CreatList_L(LinkList &L,int n){ L
2013-11-17 15:50:14 1062
原创 C语言随机函数
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int
2013-11-15 00:02:05 2098 1
原创 NEON Intrinsics
本篇博客将对NEON Intrinsic进行介绍,同时末尾会给出几个example。如有谬误,烦请指出,谢谢。IntroductionNEON Intrinsics是一种比汇编更高级的API,可以直接在C/C++中进行调用。使用汇编,我们可以对更多的硬件执行细节进行控制,但是汇编相对来说维护代价较高。相比之下,NEON Intrinsic易于维护,同时也可以对硬件执行细节进行一定...
2018-08-19 19:37:10 2883
原创 Time-Delay Neural Network(TDNN)-下
前言本篇博客对TDNN网络结构的特性进行梳理,使读者了解设计所考虑的问题,关于其结构请参考博客Time-Delay Neural Network(TDNN)-上。博客基于对论文 Phoneme Recognition Using Time-Delay Neural Network 的阅读和理解,如有谬误,还望指出,不胜感激。正文语音识别的小伙伴都知道,语音识别通常要把一段不等...
2018-08-14 20:46:38 3981
原创 NEON简介
这篇博客只在介绍NEON的基础知识,同时会给出一个简单可用的example。NEONArm NEON technology is an advanced SIMD(Single Instruction Multiple Data) architecture extension for the Arm Cortex-A series and Cortex-R52. processo...
2018-08-13 22:57:17 10095
原创 Time-Delay Neural Network(TDNN)-上
前言本篇博客仅对TDNN的网络结构进行简单梳理,使读者对TDNN的网络结构有一个清晰直观的印象。博客基于对论文 Phoneme Recognition Using Time-Delay Neural Network 的阅读和理解,如有谬误,还望指出,不胜感激。正文TDNN与1989年就已提出(在我出生之前), 用于音素识别。以下部分将以论文中的结构做简单说明,网络结构如下图:...
2018-08-11 16:59:47 8627
原创 Center-Loss
摘要这篇博客是对论文A Discriminative Feature Learning Approach for Deep Face Recognition的总结。这篇论文中,作者提出了一种新的辅助损失函数(center loss),结合 softmax交叉熵损失函数,在不同数据及上提高了识别准确率。简介卷积神经网络在许多领域都取得了state-of-the-art的结果,包...
2018-06-07 08:51:52 13712 2
原创 Kaldi-Timit 训练
Kaldi-Timit 训练背景这篇博客主要记录使用Kaldi和Timit数据集训练模型的过程以及遇到的问题及解决方法。Timit数据介绍制作方Timit是几个研究机构联合收集的,文本材料由Massachusetts Institude of Technology(MIT)、Stanford Research Institude(SRI)和Texas Instruments(TI)共同完成;语
2017-09-24 16:05:38 1772
原创 CUDA矩阵乘法
CUDA矩阵乘法背景大多数情况下,我们是不需要自己去实现矩阵乘法的,因为Nvidia提供了cuda版的cublas库,我们利用库函数就可以搞定。但是,总会有些情况下,我们需要实现自己的矩阵乘法。这里我们要实现的是自己的cublasSgemm函数。cublasSgemm介绍cublasSgemm函数的功能可以用如下的公式表示: α∗op(A)op(B)+β∗C,α和β是标量,其余是矩阵,op表
2017-09-23 13:41:02 2748
原创 Kaldi特征提取之-VAD
Kaldi特征提取之-VAD背景VAD即 Voice Activity Detection, 用于检测静音和非静音。通过使用VAD,我们可以找到有效语音段,剔除静音段,在语音识别等过程中可以大大减少要处理的数据量。VAD通常有多种方法,简单的如帧能量或者帧幅度,复杂的还可以用神经网络。下图是一段语音的波形图,VAD可以将图中红色框内的地方剔除。VAD检测注意:以下所有方法都以帧为单位进行,帧长
2017-09-23 10:17:12 11590 2
原创 Kaldi特征提取之-FBank
Kaldi特征提取之-预处理背景人耳对声音频谱的响应是非线性的,经验表明:如果我们能够设计一种前端处理算法,以类似于人耳的方式对音频进行处理,可以提高语音识别的性能。FilterBank分析就是这样的一种算法。FBank特征提取要在预处理之后进行,这时语音已经分帧,我们需要逐帧提取FBank特征。提取FBank特征傅里叶变换 我们分帧之后得到的任然是时域信号,为了提取FBank特征,首先需要
2017-09-21 10:04:28 25196 2
原创 Kaldi特征提取之-预处理
Kaldi特征提取之-预处理背景本质上语音信号是一维的时间信号,随时间上下波动。现实中,人们再说话时会受到各种音素的干扰,为了进一步进行处理,我们必须进行必要的预处理以便之后的特征提取。诸如FBank,MFCC,PLP等都需要经过预处理步骤。本章将假设语音的格式为wav。预处理整个预处理过程如下图所示:分帧 从图中可以看出我们需要将不定长的音频切分成固定长度的小段,这一步称为分帧。分帧的原
2017-09-20 15:11:16 4376
翻译 数码相机传感器
数码相机传感器数码相机利用数以百万计的极小的感光单元阵列来记录照片。按下快门后,这些感光单元便开始收集和存储光子。一旦曝光结束,相机关闭所有感光单元,计算落入每个感光单元的光子数量。落入感光单元的的光子的相对数量随后被存储成不同的强度等级,精度有位深(bit depth)决定。 以上所描述的仅仅能创建灰度图,因为感光单元不能够区分每种每种颜色成分的多少。为了创建彩色图像,必须在每个感光单元上滤
2016-04-10 13:40:40 1535
原创 高效程序员系列(保持写代码的动力)
话不多说,直入正题。 做任何事情都需要动力,只是对于程序员来说,拥有写代码的动力至关重要。程序员不同于会计、出纳等,这些职业所做的事情基本上都是重复的,就像平坦大路上行驶的车辆,并不需要提供很大的动力就能保持前进。程序员所做的事情恰像上坡路上的车辆,需要提供较大的且持续的动力才能保持继续前进。如果在开发一个项目的过程中,工程师不幸失去了动力,多半情况下项目就会半途而
2015-02-09 22:44:54 1581
原创 编程感悟(全局变量的使用)
话不多说,直入正题。 在一个大的C++工程或者其他语言的工程中,全局变量都是必不可少的。一个理想的软件应该符合模块之间低耦合、高内聚的要求。但是模块之间的通信都是必不可少的,全局变量所提供的主要功能就是在不同模块或不同类中提供通信服务。必须注意的是,使用全局变量是危险的,至少危险系数比较高。一旦全局变量的使用出错,所造成的影响远比一个局部变量的影响大。然而
2015-02-09 22:13:51 1014
原创 高效程序员系列(扔掉旧代码)
话不多说,直入正题。 大家都知道,程序员做的最多的事情就是调试代码。在代码编写完成后,为了保证代码的正确运行,必须进行大量的调试。其实写代码的过程就是一个不断调整、不断调试的过程,大多数情况下我们不能够一次写出正确运行的代码,需要反复进行测试。在我看来,在写出正确代码之前的一系列活动都算是调试。在调试的过程中,我们会写出许多代码,在进行下一测试的时候,我们通常会把之前的测试代码注释
2015-02-08 12:10:38 1639
原创 C语言中malloc()和free()函数的具体作用
本文想就C语言中malloc()和free()函数的具体作用做出一些说明,这些细节大家在使用过程中很有可能会忽略。 在C语言中要动态的释放内存,就必然要用到指针,将动态分配获得的空间地址赋值给指针。C语言中动态分配内存的函数为malloc(), 在用完后,要及时调用free()函数释放。理论上,这样是安全的,但其实这样是不安全的,因为free()函数仅仅是告诉操作系统,这块空间我不用了,操
2015-01-14 20:08:46 5592 2
原创 文本文件与二进制文件
关于文本文件和二进制文件,本文不打算做过深的探究,仅简单介绍二者的差别。文本文件很常见,例如大家用记事本创建的文件,用C语言编辑器编写的代码文件,都属于文本文件。二进制文件其实也比较常见,只是大家在用的时候并不知道用的是二进制文件,二进制文件最常见的便是图片,还有就是大家有时候见到的.bin拓展名的文件。总体来说,计算机文件可以分为文本文件和二进制文件。二者各有优缺点,
2015-01-13 22:21:38 1035
原创 "Unhandled exception in app.exe (QtGuid4.dll): 0xC0000005: Access Violation"错误解决
本文要解决的Qt调试问题截图如下: 起因:在代码中添加类型为QColor的二维数组,存储图片每个像素。 现象:调试时出现上图所示错误。 原因:经过百度以及反复查看代码,发现在代码中,有数组越界的情况。因为定义的时候,数组的两个维度大小不一样,而在实 现 QWidget的重画事件时,因为坐标系的差别,使得两个维度的顺序对换,使得发生数组越界的情
2015-01-04 13:36:03 1939
原创 Qt5.2.1 + VS2010安装错误(Unable to find a Qt build)
本文旨在这对Qt+Vs安装过程中,遇到Unable to find a Qt build问题的解决办法。首先,介绍安装过程, 安装过程可以分为三步。 第一步:VS2010旗舰版,安装过程可以默认或者自己设置; 第二步:安装qt-opensource-windows-x86-msvc2010-5.2.1,安装路径同样可以默认或者定制;
2015-01-03 23:05:59 5292
原创 Win8.1 + Dev C++
本文想要简单说明如何在win8.1上使用dev c++。在刚开始用win8.1的时候,我以为只要是64位的Dev就可以在win8.1上安装,但是接连试了几次,安装是成功了,但是每次打开的时候就会出现问题。后来经过百度才知道,win8.1和win7的架构不一样。在64位win7系统上可以正常使用的Dev,在win8.1上却不能正常使用。经过百度,最终找到了一个可以在win8.1上正常
2015-01-03 17:02:57 1635
转载 Github for Windows使用介绍
Git已经变得非常流行,连Codeplex现在也已经主推Git。Github上更是充斥着各种高质量的开源项目,比如ruby on rails,cocos2d等等。对于习惯Windows图形界面的程序员来讲,Github的使用是需要点时间和耐心的,然而最近Github发布了Github for Windows 则大大降低了学习成本和使用难度,他甚至比SVN都简单,好吧,你不信,我们来一步一步
2014-12-28 22:04:46 782
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人