自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tristan的博客

积蓄力量

  • 博客(50)
  • 收藏
  • 关注

原创 STM32:新建工程文件

一、选择芯片型号二、添加启动代码与.c文件1.什么是启动代码(1)启动代码的主要作用:(1)堆栈(SP)的初始化;(2)初始化程序计数器(PC);(3)设置向量表异常事件的入口地址;(4)调用 main 函数。感兴趣的朋友可以自己去分析这部分代码。(2)启动文件ST公司提供了3个启动文件,分别用于不同容量的 STM32 芯片,这三个文件是:startup_stm32f10x_ld.sstartup_stm32f10x_md.sstartup_stm32f10x_hd.s其中,ld

2021-02-08 16:41:59 380

原创 STM32:寄存器

一、芯片组成1.ICode总线写好的程序编译之后都是一条条指令,存放在 FLASH中,内核要读取这些指令来执行程序就必须通过 ICode 总线。2.驱动单元(1)DCode总线DCode中的D表示Data,这条总线是用来取数的。数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 const 关键字修饰,是放到内部的 FLASH当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的 SRAM。(2)系统总线读写寄存器都是通过这根系统总线来完成的。(3)DMA总线DMA 总线也主

2021-02-08 11:30:29 910

原创 串行通信接口SCI

一、SCI模块概述SCI是串行通信接口。SCI是一个双线的异步串口,具有接受和发送两根信号线的异步串口。二、SCI模块的特点①SCI模块具有两个引脚:发送引脚SCITXD和接收引脚SCIRXD②SCI模块具有双缓冲接受和发送功能:接收缓冲寄存器SCIRXBUF,发送缓冲寄存器SCITXBUF③SCI模块可以产生两个中断:接收中断SCIRXINT,发送中断SCITXINT三、SCI模块工作原理如果使能了SCI的FIFO功能,则RXSHF会将数据直接加载到RX FIFO队列中,CPU再从FIFO

2020-12-29 17:21:19 4655

原创 DSP28335:EPWM

一、PWM基础知识PWM是脉宽调制的缩写,通俗地说就是宽度可调节的方波脉冲二、EPWM概述1.EPWM模块的功能①输出两路PWM②具有相位控制功能,可以超前或滞后于其他EPWM模块③具有死区控制功能三、EPWM子模块1.时间基准子模块...

2020-12-28 22:09:38 1142

原创 DSP8335:模数转换器ADC

一、F28335内部ADC模块ADC模块一共分为16个采样通道。ADC模块框图如下图所示:虽然ADC模块具有多个输入通道,但他内部只有一个转换器,也就是说同一时刻只能对一路输入信号进行转换,当有多路信号需要转换时,ADC模块通过前端模拟多路复用器进行控制,使得同一时刻只允许一路信号输入至ADC转换器中...

2020-12-28 21:38:33 745

原创 DSP28335-CPU定时器

一、CPU定时器概述DSP为了精确控制时间,以满足控制某些特定事件的要求,定时器是不可缺少的内容。二、CPU定时器工作原理(1)在CPU定时器工作前,先要根据实际的需求,计算好CPU定时器周期寄存器的值,然后给周期寄存器PRDH:PRD赋值。(2)启动定时器开始计数,PRDH:PRD里面的值装在金定时器计数寄存器TIMH:TIM中。(3)计数器TIMH:TIM里面的值每隔一个TIMCLK就减小1,直到计数到0(4)此时,CPU计时器会产生一个中断信号。(5)完成一个周期的计数后,在下一个定时器

2020-12-12 22:47:34 5710

原创 DSP28335:中断系统

一、CPU中断1.CPU中断概述中断申请信号是通常由软件或者硬件所产生的的信号,它可以使CPU暂停正在执行的主程序。CPU中断有两种分类方法:①硬件与软件中断1°软件中断:通过在软件中写指令触发的中断2°硬件中断:来自于片内外设或者外围设备的中断信号②可屏蔽中断与不可屏蔽中断1°可屏蔽中断:这些中断可以用软件加以屏蔽或者解除屏蔽2°不可屏蔽中断:这些中断是不可以被屏蔽的。2.CPU中断向量每一个中断都是32位的中断向量,也就是两个16位寄存器,里面存储的是相应的中断服务子程序的入口地址

2020-12-12 22:45:46 2071

原创 DSP28335:外部设备接口XINTF

一、XINTF概述:当实际应用需要更大的存储空间时,需要通过外部接口XINTF进行扩展。XINTF接口映射到了三个存储空间,Zone 0,Zone 6和Zone 7,下图为XINTF模块信号。二、XINTF配置1.时钟信号XTIMCLK是XINTF接口的内部时钟,所有的访问操作都是以XTIMCLK为基准,XTIMCLK与SYSCLKOUT的关系可通过修改XINTCNF2中的XTIMCLK进行设置。设置为1则TIMCLK=SYSCLKOUT/2,设置为0,则TIMCLK=SYSCLKOUT。Xint

2020-12-06 14:41:08 7116

原创 DSP28335:多功能复用引脚GPIO

一、GPIO概述GPIO是多功能复用引脚,可以配置成通用的数字I/O工作模式,也可以配置成外设I/O工作模式。每个引脚除了通用数字I/O功能外,还有三个外设功能。,GPIO分为三组进行管理二、GPIO寄存器1.控制寄存器(对该寄存器操作前要写EALLOW,操作后要写EDIS)(1)GPIO功能选择寄存器GPIO实现哪种功能是通过功能寄存器来设置的,设置方式如下表所示(此处仅列举GPAMUX),同一时刻,每个寄存器只能选择同一种功能,配置例子如下所示:GpioCtrlRegs.GPAMUX1.b

2020-11-30 16:50:16 5157

原创 DSP28335系统时钟

一、振荡器OSC和锁相环PLL模块锁相环是一种控制晶振使其下你跟对于参考信号保持恒定的电路。主要作用是通过软件实时配置片上外设时钟譬如当30MHz的OSCCLK信号经锁相环倍频后,倍频倍数可通过PLLCR[DIV]设置,可设置为10,经过PLL后的信号变为300MHz,因为28335的时钟频率为150MHz,所以需要将PLLSTS[DIVSEL]设置为2,可得300/2=150MHz时钟信号。二、各种时钟信号1.外设时钟下图是系统控制及外设时钟,CLKIN是经过PLL模块后送往CPU的时钟信号

2020-11-30 15:16:49 5638 2

原创 MATLAB实现双门限法判别信号

一、原理:1.基本概念:2.第一级判决:3.第二级判决:二、双门限判决函数1.函数调用:x是语音信号序列,帧长为wlen,帧移位inc,NIS是前导无话段的帧数。在语音处理中为了能估算噪声的情况,在语音前部有一段前导无话段,实际中,有时可能不知道前导无语段的帧数,但可以从语音信号的波形图中估算出签到无话段的时长Is,有了IS就能计算出签到无语段的帧数NIS,公式如下所示:2.函数源码:function [voiceseg,vsl,SF,NF]=vad_ezm1(x,wlen,in

2020-10-31 15:49:48 5347 11

原创 MATLAB实现MFCC分析

一、基本概念Mel频率倒谱系数(MFCC)的分析时基于认得听觉机理,依据人的听觉实验结果来分析语音的频谱,期望能获得更好的语音特性。梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。 在Mel频域内,人对音调的感知度为线性关系。举例来说,如果两段语音的Mel频率相差两倍,则人耳听起来两者的音调也相差两倍。​ 我们将频谱通过一组Mel滤波器就得到Mel频谱。公式表

2020-10-29 21:04:37 2226

原创 MATLAB实现倒谱分析

一、激励信号和声道冲激响应短时处理中语音信号可以被认为是由线性时不变系统的输出,即由语音信号是由声门的激励信号和声道冲激响应的卷积而形成的。往往需要从语音信号中求解声门激励和声道响应。(比如为了求得语音信号的共振峰,就要知道声道传递函数,因为共振峰就是声道传递函数的复共轭极点的频率,又比如为了判断语音信号是清音还是浊音,以及浊音的基音频率,就应该知道声门激励序列的频率)。二、同态处理的基本原理同态系统可以分解为三个子系统:第一个子系统完成将卷积转换为加性信号的运算:第二个子系统对加性信号进行线

2020-10-29 11:07:44 7719 2

原创 MATLAB实现语谱图

一、语谱图含义语谱图将信号强弱用灰度来标志,如果某个滤波器输出的信号强,相应的颜色将加深,水平方向是时间轴,垂直方向是频率轴。语谱图也被称为可视语音。二、范例1.预备知识语音信号实现短时傅里叶变换2.求语谱图源码:clear all; clc; close all;[x,Fs]=audioread('bluesky3.wav'); %读入数据文件wlen=800; inc=80; win=hanning(wlen);% 设置帧长,帧移和窗函数N=length(x); time=(0:N

2020-10-28 14:53:03 6311 3

原创 MATLAB实现语音信号短时傅里叶变换

一、函数调用二、函数源码function d=stftms(x,win,nfft,inc)if length(win)==1 % 判断有否设置窗函数 wlen=win; % 否,设帧长 win=hanning(wlen); % 设置窗函数else wlen=length(win); % 设帧长endx=x(:); win=win(:); % 把x和win都变为列数组s = length(x);

2020-10-28 11:01:29 4000

原创 C语言实现查找素数

一、#include <stdio.h>#include <math.h>int prime( int p );int PrimeSum( int m, int n );int main(){ int m, n, p; scanf("%d %d", &m, &n); printf("Sum of ( "); for( p=m; p<=n; p++ ) { if( prime(p) != 0 )

2020-10-27 16:16:14 740

原创 MATLAB计算信号短时平均过零率

一、原理:短时平均过零率表示一帧语音中语音信号波形穿过横轴的次数二、计算过零率代码clear all; clc; close all;filedir=[]; % 设置路径filename='bluesky3.wav'; % 设置文件名fle=[filedir filename]; % 构成完整的路径和文件名[xx,Fs]=audioread(fle); % 读入数据文件x=detrend

2020-10-27 16:12:42 4741 4

原创 MATLAB计算语音信号的短时能量

一、计算原理二、范例1.预备知识(1)语音信号的读取(2)语音信号的分帧2.短时能量计算代码clear all; clc; close all;filedir=[]; % 设置路径filename='bluesky3.wav'; % 设置文件名fle=[filedir filename]; % 构成完整的路径和文件名[x,Fs]=audioread(fle); % 读入数据文件wlen=200; inc=80; % 给

2020-10-27 11:05:46 8511 4

原创 MATLAB实现语音信号分帧

一、分帧原理为了分析读入数据,通常进行分帧处理。在分帧中,往往设置在相邻两帧之间有一部分重叠,如下图所示:设语音文件的数据存放在y中,y的长度为N,采样频率为fs,取每帧长为wlen,后一帧对前一帧的位移量用inc表示,相邻两帧之间的重叠部分overlap=wlen-inc。二、分帧函数调用f=enframe(x,win,inc)x是数据,win是窗函数,inc是后一帧对前一帧的位移量三、enframe函数源码function f=enframe(x,win,inc)nx=length(

2020-10-27 10:39:05 10835

原创 MATLAB实现语音信号的读取

一、函数调用[y,Fs] = audioread(filename)[y,Fs] = audioread(filename,samples)[y,Fs] = audioread(___,dataType)二、函数使用1.示例1[y,Fs] = audioread(filename) 从名为 filename 的文件中读取数据,并返回样本数据 y 以及该数据的采样率 Fs。2.示例2[y,Fs] = audioread(filename,samples) 读取文件中所选范围的音频样本,其中

2020-10-26 20:51:58 8051

原创 MATLAB实现频谱细化分析

一、函数调用1.exzfft_ma函数(1)函数格式:[y,freq]=exzfft_ma(x,fe,fs,nfft,D)其中x是被测信号,x的长度要大于ntff*D。fe是细化区间的中心频率,fs是采样频率,nfft是细化fft的长度,D是细化倍数。输出变量y是细化fft后的输出,freq是细化fft后的频率刻度。(2)函数代码:function [y,freq,c]=exzfft_ma(x,fe,fs,nfft,D)nt=length(x); % 计算读入数据长度f

2020-10-19 17:50:01 4414 5

原创 MATLAB实现短时傅里叶变换

一、短时傅里叶变换的定义离散傅里叶变换使用的是一种全局变换,因为它表示一段时间内平均的频率特性,无法表述信号的时域局域性质,为了能够分析处理非平稳信号,人们对离散傅里叶变换进行了推广,提出了短时傅里叶变换。表达式如下所示:短时傅立叶采用滑动窗口机制,设定窗口大小和步长,让窗口在时域信号上滑动,分别计算每个窗口的傅立叶变换,形成了不同时间窗口对应的频域信号,拼接起来就成为了频率随时间变化的数据(时频信号)。二、函数调用1.短时傅里叶变换tfrstft函数:[tfr,t,f]=tfrstft(x,

2020-10-19 15:54:37 23532 8

原创 MATLAB构造分段函数信号

一、题目要求二、解决方案fs=1000; % 采样频率tt=(0:1000)'/fs; % 时间刻度% 构成信号x=sin(2*pi*400*tt).*(tt<=0.3)+sin(2*pi*200*tt).*(tt>0.3&tt<=0.6)+sin(2*pi*100*tt).*(tt>0.6&tt<=0.8)+sin(2*pi*50*tt).*(tt>0.8);...

2020-10-18 17:57:09 2783

原创 MATLAB实现数据延拓

一、前项与后向预测1.函数调用:2.范例:滤波后的数据一般会在输出信号的初始端有瞬态效应,利用对信号的两端延拓,消除瞬态效应,此处使用的是零相位滤波器。clear all; clc; close allN = 1000; % 数据长度Fs = 1000; % 采样频率t = (0:N-1)/Fs; % 时间刻度% 滤波器设计fp=[3 15]; % 滤波

2020-10-18 10:55:15 6116 2

原创 MATLAB实现平滑处理

一、五点三次平滑法1.函数调用:2.范例:clear all; clc; close all;xx=load('xnoisedata1.txt'); % 读入数据time=xx(:,1); % 时间序列x=xx(:,2); % 带噪数据xmean=mean5_3(x,50); % 调用mean5_3函数,平滑数据% 作图subplot 211; plot(time,x,'k');

2020-10-16 20:23:33 45003 6

原创 MATLAB信号包络的提取

一、使用希尔伯特变换计算信号包络1.函数调用y=hilbert(x)2.范例clear all; clc; close all;n=-5000:20:5000; % 样点设置% 程序第一部分:直接做做希尔伯特变换N=length(n); % 信号样点数nt=0:N-1; % 设置样点序列号x=120+96*exp(-(n/1500).^2).*cos(2*pi*n/600); % 设置信号Hx=h

2020-10-16 15:52:46 54769 31

原创 MATLAB实现寻找信号中的峰值和谷值

一、峰值检测函数1.findpeaks函数(1)函数调用:(2)范例:clear all; clc; close all;y=load('ffpulse.txt'); % 读入脉搏数据x=detrend(y); % 消除趋势项fs=200; % 采样频率N=length(x); % 数据长度time=(0:N-1)/fs; % 时间刻度% 用fin

2020-10-15 20:49:29 13654 3

原创 MATLAB实现消除趋势项

一、函数调用1.消除线性趋势项y=detrend(x)其中x是带有线性趋势项的信号序列,输出参数y是消除趋势项的序列2.消除多项式趋势项(趋势为非线性曲线)[y,xtrend]=polydetrend(x,fs,m)x是带有趋势项的信号,fs是采样频率,m是调用函数时设置的阶次,输出参数y是消除趋势项后的信号序列,xtrend是叠加在信号上的趋势项序列。3.使用sgolay滤波器消除趋势项y = sgolayfilt(x,order,framelen)framelen为帧长。二、范

2020-10-14 11:14:17 11992 6

原创 MATLAB利用Filter Design设计滤波器

一、Filter Design设计滤波器设计带通滤波器,若export选中coefficients,则输出到workspace两个数组,SOS与G。若选中objects,则输出到workspace一个滤波器系数集合Hd。也可生成.mat文件,再进行读取load操作。二、从SOS与G中恢复滤波器系数1.函数调用:[B,A]=sos2tf(SOS,G)2.范例:三、从Hd中恢复滤波器系数[B,A]=tf(Hd)...

2020-10-13 21:11:21 4625

原创 MATLAB数字滤波器的使用

一、函数调用

2020-10-13 20:31:44 959

原创 MATLAB实现全通滤波器

一、定义全通滤波器的应用之一是进行相位补偿或相位均衡。具体说,由于IIR滤波器很难实现线性相位,因此在滤波器后加一个全通滤波器,调节全通滤波器的相位。

2020-10-13 20:20:50 5499

原创 MATLAB实现陷波器

一、定义:在信号测量中,有时信号会被一些干扰的正弦信号所淹没,所以要通过一些窄带滤波器把这些正弦信号滤除。窄带滤波器的目的就是构成窄带滤波,

2020-10-13 20:20:06 5059

原创 MATLAB直接设计数字滤波器

一、数字滤波器的阶数选择函数1.函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs)不加‘s’就可以直接求出数字滤波器的系数二、在MATLAB中设计数字滤波器系数1.函数调用:[b,a]=butter(N,Wn,'s'); % 求巴特沃斯滤波器系数三、范例(给出的实际频率)现设计一带通滤波器,要求通带频率为1.5~10Hz,阻频率为1和12Hz,Ap=3,As=15,设计巴特沃斯滤波器clear all; clc; close all;load bzsdat

2020-10-13 20:18:37 2662

原创 MATLAB模拟滤波器数字化为数字滤波器(本文Wp为模拟角频率,wp为数字角频率)

一、模拟滤波器数字化的含义二、IIR模拟滤波器阶数选择函数(1)函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs,'s')三、IIR模拟滤波器系数确定(1)函数调用[bb,ab]=butter(N,Wn,'s'); % 求巴特沃斯滤波器系数四、将模拟滤波器转换为数字滤波器1.脉冲响应不变法(1)具体步骤:(2)函数调用:(3)脉冲响应不变法造成的混叠失真脉冲响应不变法的最大特点是频率响应的混叠响应,所以脉冲响应不变法只适用于衰减特性很好的低通或带

2020-10-13 20:08:18 3928 1

原创 MATLAB设计模拟FIR滤波器(以巴特沃斯模拟滤波器为例)

一、模拟滤波器的阶数选择函数1.函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs,'s')2.范例:wp=[0.2*pi 0.3*pi]; % 设置通带频率ws=[0.1*pi 0.4*pi]; % 设置阻带频率Rp=1; Rs=20; % 设置波纹系数% 巴特沃斯滤波器设计[N,Wn]=buttord(wp,ws,Rp,Rs,'s'); % 求巴特沃斯滤波器阶数其中N是滤波器最小

2020-10-13 17:50:59 2857

原创 MATLAB信号处理——滤波器的设计

一、模拟滤波器的设计函数1.模拟滤波器的阶数选择函数(以巴特沃斯模拟滤波器为例)(1)函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs,'s')(2)例子:wp=[0.2*pi 0.3*pi]; % 设置通带频率ws=[0.1*pi 0.4*pi]; % 设置阻带频率Rp=1; Rs=20; % 设置波纹系数% 巴特沃斯滤波器设计[N,Wn]=buttord(wp,ws,Rp,Rs,

2020-10-13 10:23:55 630

原创 MATLAB构造数字陷波器滤除工频信号

1.背景在实际测量的过程中,经常会收到工频信号的干扰,有时干扰还很大,有用信号完全被淹没,所以需要使用陷波器。2.实例本代码要滤除50Hz干扰load('noisyecg.mat'); % 读入信号数据和采样频率x=noisyecg; % 信号为xN=length(x); % 信号长Nt =(0:N-1)./fs; % 时间刻度 fs2=f

2020-10-12 16:57:56 4985 1

原创 MATLAB用差分方程实现滤波器的滤波过程

1.背景在硬件实现中不可能调用MATLAB中的filter函数,只能用差分方程来进行运算,本案例介绍利用差分方程表示滤波过程。2.实例clear all; clc; close all;fs=1600; % 采样频率f0=50; % 基波频率N=400; % 数据长度t=(0:N-1)/fs;

2020-10-12 16:24:15 5216

原创 数字信号处理的MATLAB实现——快速傅里叶变换

FFT函数1.调用格式:X=fft(x,N)(1)当x长度大于N时,以x序列的长度做FFT(2)当x长度小于N时,在x后补零至N长再做FFT(3)当没有设置N时,以x序列的长度做FFTIFFT函数1.调用格式x=ifft(X)计算初始相位角与初始幅度1.调用格式(1)计算初始相位角theta=abs(X(k))其中X(k)为第k点的FFT值(2)计算初始幅度A=2*(abs(X(k)))/N其中乘2是因为变换为单边谱,N为FFT点数2.范例clear all; c

2020-10-01 16:43:03 12947 1

原创 数据结构学习笔记——树(查找,二叉树,二叉搜索树)

文章目录一、查找1.静态查找(没有插入和删除操作)(1)顺序查找(2)二分查找2.动态查找(除查找外还可能发生插入和删除)一、查找1.静态查找(没有插入和删除操作)(1)顺序查找①顺序查找的一种实现:哨兵:在数组第0位放置查找数字,若查到数字则返回位数,若未查找到,则返回0,在主函数中进行判断,通过哨兵可以减少一个判断条件语句查找模块代码如下:int Search(List he...

2020-03-23 16:15:43 302

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除