声音频谱分析

  • e5_492333
    了解作者
  • matlab
    开发工具
  • 2.1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-23 11:39
    上传日期
这是一个简答的声音录制,并描绘声音序列以及其频谱图的程序
声音频谱分析
  • Untitled3.m
    309B
  • Untitled4.m
    3.1KB
  • Untitled2.m
    617B
内容介绍
fs=8000; %取样频率 duration=2; %录音时间 waveFile='原声音信号.wav';%录制文件名 fprintf('Press any key to start 2 seconds of recording...\n',duration); pause; fprintf('Recording...\n');%录音中 y=wavrecord(duration*fs,fs); %duration*fs 是总的采样点数 fprintf('Finished recording.\n');%录音结束 fprintf('Press any key to store the file',waveFile); pause; nbits=8; wavwrite(y,fs,nbits,waveFile);%将录制的声音写入声音文件 fprintf('Storing is over\n'); fprintf('Press any key to play\n',waveFile); dos(['start',waveFile]); %声音信号的幅频特性 [x,Fs,bits]=wavread('原声音信号.wav'); %用wavread()函数读取原始声音信号 Xs=x(:,1); %做单声道处理 X1=Xs(1:16000); %取原始声音信号 siglength1=length(X1); t1=(0:siglength1-1)/Fs; figure(1); plot(t1,X1);axis([0,2,-1,1]); %原始声音信号序列 xlabel('时间(s)');ylabel('X1(n)'); title('原声音信号序列'); Y1 = fft(X1); f1=[0:15999]/16000*Fs; figure(2); plot(f1,abs(Y1)); %原始声音信号频谱 xlabel('频率(hz)');ylabel('幅度'); title('原声音信号频谱'); N=2; siglength2=siglength1/N; %取两倍的抽样点数 X2=zeros(siglength2,1); %对原始声音信号两倍抽样 for(i=1:siglength2) X2(i)=X1(N*i); end; t2=(0:siglength2-1)/Fs*N; figure(3); plot(t2,X2);axis([0,2,-1,1]); %画两倍抽样信号序列 xlabel('时间(s)');ylabel('X2(n)'); title('两倍抽样信号序列'); Y2=fft(X2); f2=[0:7999]/8000*Fs/N; figure(4); plot(f2,abs(Y2)); %画两倍抽样信号频谱 xlabel('频率(hz)');ylabel('幅度'); title('两倍抽样信号频谱'); %滤波器的设计 fp=[300 800];fs=[200 900]; rp=3;rs=18;Fs=9000; wp=fp*2*pi/Fs; ws=fs*2*pi/Fs; %滤波器数字指标到模拟指标的转换 wap=Fs*wp; was=Fs*ws; %滤波器的阶数n bw=wap(2)-wap(1); wnp=1; wns(1)=(was(1)^2-wap(1)*wap(2))/(was(1)*bw); wns(2)=(was(2)^2-wap(1)*wap(2))/(was(2)*bw); wns=min(abs(wns(1)),abs(wns(2))); n=log10(sqrt((10^0.1*rp-1)/(10^0.1*rs-1)))/(log10(wnp/wns)); n=real(n); n=ceil(n); %归一化模拟低通滤波器的设计,系数是bp,ap [z,p,k]=buttap(n); [bp,ap]=zp2tf(z,p,k) %模拟低通滤波器到模拟带通滤波器的转换,系数bs,as w0=sqrt(wap(1)*wap(2)); [bs,as]=lp2bp(bp,ap,w0,bw) %模拟带通滤波器经冲激响应不变法得到数字带通滤波器,系数bz,az [bz,az]=impinvar(bs,as,Fs) %数字带通滤波器的频率响应 [h,w]=freqz(bz,az,1000,Fs); figure(5); plot(w,abs(h)); grid;axis([0,1500,0,1.2]); title('数字带通滤波器幅频响应'); xlabel('频率(Hz)');ylabel('幅度'); figure(6); plot(w,angle(h));axis([0,1500,-4,4]); grid;title('数字带通滤波器相频响应'); xlabel('频率');ylabel('相位'); title('数字带通滤波器相频响应'); %经滤波器后声音信号 Xf1=filter(bz,az,X1); figure(7); plot(t1,Xf1);axis([0,2,-1,1]); xlabel('时间(s)');ylabel('Xf1(n)'); title('经滤波器后声音信号序列'); Yf2=filter(bz,az,Y1); figure(8); plot(f1,abs(Yf2)); xlabel('频率(hz)');ylabel('幅度'); title('经滤波器后声音信号频谱'); wavwrite(Xf1,Fs,16,'经过滤波器后声音信号') %将滤波后声音写入.wav文件
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • MATLAB教程
      MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
    • MATLAB
      MATLAB 该项目是在matlab上完成的,涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的,并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵(旋转,平移等)的概念...
    • MATLAB基础
      一本学习matlab的一本好书
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlabruntime
      通过奇点容器运行您的matlab项目 可以在没有MATLAB的容器中运行matlab代码。 为此,我们首先需要通过Matlab编译器在本地构建相应的Matlab代码的独立应用程序,然后使用具有Matlab运行时( 的容器)运行该应用程序 )...
    • matlab实现
      matlab实现 matlab实现matlab实现matlab实现matlab实现
    • matlab 教程
      matlab 信号处理资料,里面包含信号处理pdf文档,一些杂乱的程序和命令等
    • matlab教程
      matlab教程,PPT格式,包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点,并且每个知识点独立成为PPT,内还含有matlab信号处理详解等文档...
    • matlab简介
      1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后,会看到一个视窗MATLAB Command Window称为指令视窗,它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...