信噪比与错误指数matlab,关于信噪比不符合理论值的问题
在求解信噪比时,加30db的高斯白噪声后所求得的信噪比不是30。而且理论上软阈值去噪效果应该是最好的,但是软阈值去噪后得到的信噪比却比其他方法要小,而且所有求得的信噪比数值都很小。我也在论坛里看到过类似的情况,但是自己还是没能解决,希望得到给位的指点教导,非常感谢!
clear all; clc; close all;
fs=8000; %语音信号采样频率为8000
xx=wavread('lw.wav');
x1=xx(:,1);%取单声道
t=(0:length(x1)-1)/8000;
y1=fft(x1,2048);
f=fs*(0:1023)/2048;
figure(1)
plot(t,x1) %做原始语音信号的时域图形
figure(2)
plot(f,abs(y1(1:1024))) %做原始语音信号的FFT频谱图
y=awgn(x1',30); %加30db的高斯白噪声
snr=SNR_singlech(x1,y')%求得信噪比
figure(3)
plot(t,y) %做加噪语音信号的时域图形
[c,l]=wavedec(y,3,'db1');%多尺度一维分解
%用db1小波对信号进行3层分解并提取系数
a3=appcoef(c,l,'db1',3);
%a2=appcoef(c,l,'db1',2);
%a1=appcoef(c,l,'db1',1);
d3=detcoef(c,l,3);
d2=detcoef(c,l,2);
d1=detcoef(c,l,1);
%对信号进行强制去噪
dd3=zeros(1,length(d3));
dd2=zeros(1,length(d2));
dd1=zeros(1,length(d1));
c1=[a3 dd3 dd2 dd1];
y3=waverec(c1,l,'db1');%多尺度小波变换重构
snr=SNR_singlech(x1,y3')%求得信噪比 均方误差
figure(4);
plot(t,y3);
title('强制消噪后语音信号');
%默认阀值去噪
[thr,sorh,keepapp]=ddencmp('cmp','wp',y);
y4=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp);
snr=SNR_singlech(x1,y4')%求得信噪比
figure(5);
plot(t,y4);
title('默认阈值消噪后信号');
%软阀值去噪
thr1=thselect(d1,'rigrsure');%阈值获取,使用Stein的无偏风险估计原理
thr2=thselect(d2,'rigrsure');
thr3=thselect(d3,'rigrsure');
sd1=wthresh(d1,'s',thr1);
sd2=wthresh(d1,'s',thr2);
sd3=wthresh(d1,'s',thr3);
c2=[a3 sd3 sd2 sd1];
y5=waverec(c2,l,'db1');%多尺度重构
snr=SNR_singlech(x1,y5')%求得信噪比
figure(6);
plot(t,y5);
title('给定阈值(软)消噪后语音信号');
%进行硬阈值处理
hd1=wthresh(d1,'h',thr1);
hd2=wthresh(d2,'h',thr2);
hd3=wthresh(d3,'h',thr3);
c3=[a3 hd3 hd2 hd1];
y6=waverec(c3,l,'db1');
snr=SNR_singlech(x1,y6')%求得信噪比
figure(7);
plot(t,y6);
title('给定阈值(硬)消噪后语音信号');
另:
function snr=SNR_singlech(I,In)
% 计算信噪比函数
% I :原始信号
% In:染噪信号
snr=0;
Ps=sum(sum((I-mean(mean(I))).^2));%signal power
Pn=sum(sum((I-In).^2)); %noise power
snr=10*log10(Ps/Pn);
2013-5-14 17:12 上传
点击文件名下载附件
391.91 KB, 下载次数: 3649
lw.wav
信噪比与错误指数matlab,关于信噪比不符合理论值的问题相关推荐
- 【高阶累积量】基于高阶累积量的信噪比盲估计法的matlab仿真
1.软件版本 matlab2013b 2.系统描述 所谓高阶统计量,通常是指信号的高阶矩,高阶累积量等信号统计信息的统称.在这些高阶统计量中,高阶累积量具有十分重要的重用,不同阶数的累积量可以反映出信 ...
- matlab saveas使用报错:错误使用 matlab.graphics.internal.name (line 101)
clear addpath('D:\matlab program'); Im = imread('lena512color.bmp'); imshow(Im); saveas(gcf,'save.bm ...
- matlab 求信噪比
clear all;clc;% 实信号求信噪比 % X= sqrt(2)*sin(0:pi/1000000:6*pi); %产生正弦信号 % Y = awgn(X,14,'measured'); %加 ...
- ofdm 误码率 matlab,OFDM不同信噪比下的误码率matlab源码
clear; clc; s = rng(211); % 设置RNG状态的可重复性 numFFT = 1024; % FFT点的数量 numRBs = 50; ...
- 输出信噪比公式_如何计算信号的信噪比
展开全部 如何计算信号的信噪比 1.在仿真实验中要产生具有某个信62616964757a686964616fe58685e5aeb931333365653766噪比的混合信号样本zt.这时,先求出不含 ...
- 信噪比如何计算?如何产生固定信噪比的带噪信号?
文章目录 一.信号的基础知识 1.1 信号能量的计算 1.1.1 有穷区间能量 1.1.2 无穷区间能量 1.2 信号功率的计算 1.3 信号的分类 二.信噪比 2.1 信噪比的定义及计算 2.2 几 ...
- matlab错误原因,matlab常见错误分析
这里是几个Matlab的小提示,基本上是我使用Matlab时碰到并解决了的问题,希望能使别人不要再碰钉子走弯路了.如果有建议或发现其中有错误,请与我联系. 循环变量 由于历史的原因,程序员们总是使用i ...
- lyapunov指数 matlab计算_Matlab学习笔记1——B站台大课
1.Matlab调出某一视窗 菜单栏layout里面找 2.Matlab作为Calculator (1)ans 是计算结果 (2)计算规则:先*/再+-,合理使用(),从内往外写 (3)一些特殊输入 ...
- matlab用solve解方程错误提示,MATLAB中使用solve解决方程组的问题
希望使用MATLAB的solve函数解出一个带有虚数的方程组,但是一直提示计算错误,要么就是算不出来结果,希望大佬们能帮帮忙 程序如下: syms a1 a2; a=[a1 a2]; C11=3.06 ...
最新文章
- JavaScript对象
- javaScript 实现多选框全选/反选及批量删除
- 一个操作内表的函数’CTVB_COMPARE_TABLES’
- NET中使用Memcached的相关资源整理
- 【算法学习】网络流模板……
- LINUX下载编译pcre
- 你的计算机无法启动一键还原,电脑一开机就进入dos之家的一键还原硬盘版,无法进入系统...
- mysql centos 配置文件路径_Centos7 查看Mysql配置文件
- 【元胞自动机】基于元胞自动机模拟地铁火灾疏散模型matlab代码
- 大牛直播SDK-Windows RTMP/RTSP/本地FLV播放器使用说明...
- 双非本科地信前端面试题目
- springBoot2学习
- UVA10859 placin glampposts(放置街灯)
- 微信聊天记录备份:当前网络状况复杂和连接失败的解决办法
- WIN10环境英伟达9系显卡tensorflow安装记录及调试过程 CUDA8.0+tensorflow-gpu1.4+CuDNN6.0
- 判断Checkbox选中两种方法
- LWIP-TCP Server连接两次之后无法连接问题
- hbase创建solr索引的超时问题
- 基于思科模拟器进行子网划分
- 用Bootstrap实现mansory网格瀑布流布局插件
热门文章
- OpenCV中的透视变换介绍
- 第十三篇:上下文无关语法 Context-Free Grammar
- 5 个用 Python 编写 web 爬虫的方法
- bash shell的一些基本概念
- 1.1.2 ADO.NET模型
- YSlow使用指南_最新2.0使用指南中文版
- cygwin安装hadoop过程中出现的2个问题
- cloudera之hadoop-0.20.1+152.tar.gz 安装出现找不到JAVA_HOME问题的解决办法
- java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !
- matplotlib中文文档_python绘图库——Matplotlib及Seaborn使用(入门篇1)