怎么把该程序最后结果图片的样点数变换成时间

[filename,yxj]=uigetfile('*.wav','请选择纯净语音文件:');

tidy=wavread([yxj filename])';

[wavin,NOISE]=noisegen(tidy,20);              %加入10dB白噪声

%---------------------参数定义--------------------------

frame_len=256;                                   %帧长

step_len=0.5*frame_len;                          %分帧时的步长,相当于重叠50%

wav_length=length(wavin);

R=step_len;

L=frame_len;

f=(wav_length-mod(wav_length,frame_len))/frame_len;

k=2*f-1;                                         %帧数

h=sqrt(1/101.3434)*hamming(256)';                %汉明窗乘以系数的原因是使其符合条件要求

wavin=wavin(1:f*L);                              %带躁语音与纯净语音长度对齐

tidy=tidy(1:f*L);

win=zeros(1,f*L);

enspeech=zeros(1,f*L);

%--------------------------分帧-----------------------------------

for r=1:k

y=wavin(1+(r-1)*R:L+(r-1)*R);                %对带躁语音帧间重叠一半取值

y=y.*h;                                      %对取得的每一帧都加窗处理

w=fft(y);                                    %对每一帧都做傅里叶变换

Y(1+(r-1)*L:r*L)=w(1:L);                     %把傅里叶变化值放在Y中

end

%-------------------------估计噪声---------------------------------

NOISE=stationary_noise_evaluate(Y,L,k);

%---------------------------MMSE-----------------------------------

for b=1:L;

a=0.98;                                      %系数

q=0.2;                                       %第k个频率分量的语音存在概率

A=[0.1*abs(Y(b)),zeros(1,k-1)];              %语音幅度

s1=[a*abs(Y(b)).^2/NOISE(b),zeros(1,k-1)];   %先验信噪比

for t=1:k-1                                  %先算每一帧的第一点

x1(t+1)=abs(Y(b+t*L)).^2;                %带躁语音的幅度

r(t+1)=x1(t+1)/NOISE(b+t*L);             %后验信噪比

if r(t+1)>=700

r(t+1)=700;

elseif r(t+1)<1

r(t+1)=1.5;

end

s1(t+1)=a*(A(t).^2/NOISE(b+(t-1)*L))+(1-a)*max(r(t+1)-1,0); %先验信噪比

v(t+1)=(s1(t+1)/(1+s1(t+1)))*r(t+1);

if v(t+1)<0.1

expint(t+1)=-2.31*log10(v(t+1))-0.6;

elseif v(t+1)>=0.1&v(t+1)<=1

expint(t+1)=-1.544*log10(v(t+1))+0.166;

elseif v(t+1)>1

expint(t+1)=10.^(-0.52*(v(t+1))-0.26);

end

Gmmse(t+1)=(s1(t+1)/(1+s1(t+1)))*exp(0.5*expint(t+1));

w(t+1)=((1-q)/q)*(exp(v(t+1))/(1+s1(t+1)));

A(t+1)=(w(t+1)/(1+w(t+1)))*Gmmse(t+1)*abs(Y(b+t*L));

end

A1(1+(b-1)*k:b*k)=A(1:k);

end

%下面程序的作用是把每一帧的点依次还原成原来的存放顺序

for t1=1:k

for j=1:L

d(j)=A1(t1+(j-1)*k);

end

A2(1+(t1-1)*L:t1*L)=d(1:L);

end

for t2=1:k

S=A2(1+(t2-1)*L:t2*L);

ang=Y(1+(t2-1)*L:t2*L)./abs(Y(1+(t2-1)*L:t2*L));         %带躁语音的相位

S=S.*ang;    %因为人耳对相位的感觉不明显,所以恢复时用的是带躁语音的相位信息

s=ifft(S);                                               %取实部

s=real(s);

enspeech(1+(t2-1)*L/2:L+(t2-1)*L/2)=enspeech(1+(t2-1)*L/2:L+(t2-1)*L/2)+s;

%在实域叠接相加,把分帧后的序列恢复成原来序列的长度

win(1+(t2-1)*L/2:L+(t2-1)*L/2)=win(1+(t2-1)*L/2:L+(t2-1)*L/2)+h;

%窗的叠接相加

t2=(0:length(s)-1)/f;

end

enspeech=enspeech./win;                     %去除加窗引起的增益得到的增强的语音

figure(1)

subplot(3,1,1);plot(tidy);title('(a)原始语言');xlabel('样点数');ylabel('幅度');axis([0 4 *10^4 -0.3 0.3]);

subplot(3,1,2);plot(wavin);title('(b)加躁语音(20dB白噪声)');xlabel('样点数');ylabel('幅度');axis([0 4*10^4 -0.3 0.3]);

subplot(3,1,3);plot(enspeech);title('(c)MMSE');xlabel('样点数');ylabel('幅度');axis([0 4*10^4 -0.3 0.3]);

clip_image002.gif

(6.18 KB, 下载次数: 0)

2017-11-27 15:14 上传

程序结果显示

matlab图像显示时间,请问怎么把样点数变成时间显示在图像了里相关推荐

  1. matlab函数结果,matlab 函数返回多个值--样例

    matlab 函数返回多个值--样例 发布时间:2018-02-14 19:52, 浏览次数:2062 , 标签: matlab 目录 一.matlab的函数文件返回多个值写法 二.简单的例子 三.  ...

  2. matlab 日期加小时数_实验一 连续时间信号在Matlab中的运算

    实验一连续时间信号在Matlab中的运算 一.实验目的 1.学会运用Matlab进行连续时间信号的时移.反褶和尺度变换. 2.学会运用Matlab进行连续时间信号相加.相乘.微分.积分和卷积运算. 3 ...

  3. Matlab用三种格式来表示日期与时间

    Matlab用三种格式来表示日期与时间 转自http://www.360doc.com/content/14/1206/16/16363452_430844776.shtml (1)双精度型日期数字: ...

  4. 1000瓶水有1瓶水有毒,老鼠喝一滴就会死,但是需要一周毒发,请问最少需要多少老鼠多少时间才能找到那瓶有毒的水。

    1000瓶水有1瓶水有毒,老鼠喝一滴就会死,但是需要一周毒发,请问最少需要多少老鼠多少时间才能找到那瓶有毒的水. 这个题是对bit位的应用,1000接近1024,所以对1000瓶水编号需要10个bit ...

  5. Matlab:合并来自各自变量的日期和时间

    Matlab:合并来自各自变量的日期和时间 本示例展示如何从文本文件读取日期和时间数据.然后再展示如何将存储在各自变量中的日期和时间信息合并到单个日期时间变量中. 创建名为 schedule.txt ...

  6. 【转】oracle 把select语句中用到的时间去掉时分秒[问题点数:88分,结帖人:lzs45]...

    oracle 把select语句中用到的时间去掉时分秒[问题点数:88分,结帖人:lzs45] lzs45 (寻梦 MSN(Lzs45#16) 等 级: 结帖率:90.91% 楼主发表于:2006-1 ...

  7. 关于sharepoint 里面的时间和Moss对象模型取出来的时间不一致问题

    在sharepoint里面发表了blog或者wiki! 在vs里面用wss对象模型取出来的时间有时遇到不一致的情况! 原因:sharepoint使用的是UTC国际标准,而中国的时间比UTC时间晚8小时 ...

  8. 过期时间_2020年最新航空里程过期时间及避免过期方法总结

    [2020.2 更新] 近几年来主要有如下变化:UA 里程永不过期了,Southwest 里程永不过期了,Asia Miles 里程可以通过里程变动续命了,Flying Blue 里程变成24个月过期 ...

  9. 服务超时时间如何设置、如何对超时时间治理、超时设计原则一文揭秘!

    微服务是⼀种分布式架构,系统内各部分(服务)被部署为单独的应用程序,并通过某种远程访问协议进⾏通讯.分布式应⽤的挑战之⼀就是如何管理远程服务的可用性和它们的响应.本⽂主要探讨服务的响应时间对系统的影响 ...

最新文章

  1. UVA1388 Graveyard(思维、数学推理)
  2. Plotly绘制金融时间序列图实战:配置滑动控件
  3. Python操作MySQL之SQLAlchemy
  4. 计算机名字更改时不显示文字,教大家电脑中文件夹不显示名字怎么办
  5. 使用Rainbow tables和Ophcrack的组合工具破解Windows密码
  6. Spring的任务调度和邮件发送
  7. lambdaquerywrapper查询指定字段_MongoDB系列 | 高级查询与索引(四)
  8. vue2.0 如何自定义组件(vue组件的封装)
  9. C语言 链式栈和顺序栈的实现
  10. java中抛出异常快捷键_idea中处理异常的快捷键
  11. linux监听apache代码,linux系统使用python监控apache服务器进程脚本分享
  12. LAMP_ 访问控制
  13. you are not allowed to push code to protected branches on this project
  14. Ubuntu下,curl 安装
  15. MySQL数据库下.frm .MYD .MYI损坏恢复操作——筑梦之路
  16. MT6765/MT6762/MT6761芯片平台支持EVS-SWB?
  17. vue 跳转路由后返回上一页还是当前页面,但是路由地址有改变(已解决)
  18. npm 和 cnpm 区别
  19. Android王者荣耀模拟金牌,荣耀战区修改方法 轻松获得省级金牌银牌
  20. ACdream1735 输油管道

热门文章

  1. oracle sql 艺术,Oracle PL/SQL 从if 到 then的“艺术鉴赏”
  2. java socket 一边关闭_java socket - 半关闭
  3. redis一般缓存什么样数据_Redis缓存和MySQL数据一致性方案详解
  4. python有强大吗_python有多强大
  5. mysql bundle.tar_MySQL 5.6 Bundle Tar安装
  6. python截取视频图像_python工具-将视频按帧截取图片(附代码)
  7. 递归回溯最简单易懂的小例子
  8. Linux从入门到精通——Apache
  9. HTML5 Canvas
  10. mysql与hive2.1.1安装和配置