资源简介
函数可以作出时域波形图和频域频谱图,并且计算基因频率自动判断音频文件是男声还是女声声音。ds函数输入变量是文件名和降采样的间隔,通过插值的办法保证了原信号的长度,可以画出时域及频域图像,并且判断男女声,最后播放降采样之后的声音。新人第一次发资源,很简单,望支持,做的信号作业,和我一样的小白可以参考,大虾就不用看了。
代码片段和文件信息
function ds(filer)
[yfs]=audioread(file);
y=y(:1);
yy=downsample(yr); %降采样
t=interp(yyr); %插值
n=0:length(t)-1; %建立一个信号等长的序列
time=n/fs; %建立时间序列,作为横坐标
subplot(211); %图1:时域波形图
plot(timet); %作图
title(‘音频信号波形图‘) %标题
xlabel(‘时间/s‘); %标注横坐标
ylabel(‘幅值‘); %标注纵坐标
grid on; %打开网格线
%=======频域图像======
N=length(t); %取信号矩阵的长度
Y1=fft(tN); %N点傅里叶变换
mag=abs(Y1); %取模
f=n*fs/N; %频率序列
subplot(212); %图2:频谱图
%取1/2作图
plot(f(1:fix(N/2))mag(1:fix(N/2)));
title(‘音频信号fft频谱图‘);%标题
xlabel(‘频率/Hz‘); %标注横坐标
ylabel(‘幅度‘); %标注纵坐标
grid on; %打开网格线
%======基因频率提取======
[~index]=max(t);
timewin=floor(0.015*fs);
xwin=t(index-timewin:index+timewin);
[y~]=xcov(xwin);
ylen=length(y);
halflen=(ylen+1)/2 +30;
yy=y(halflen: ylen);
[~maxindex] = max(yy);
fmax=fs/(maxindex+30);
disp([file‘基音频率为 ‘ num2str(fmax) ‘ Hz‘])
%======通过基因频率判断男女声======
if fmax<250;
disp([file‘ 是男声文件‘]);
else
disp([file‘ 是女声文件‘]);
end;
sound(tfs);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1296 2015-05-24 13:59 ds.m
文件 1294 2015-05-19 20:59 man_or_woman.m
- 上一篇:空时编码的代码
- 下一篇:ISM算法的matlab代码
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论