求MATLAB求信噪比的方法~急急急~!

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:16:59
我现在在做设计,题目是《基于小波分析的滤波》,现在造了一个三角波,高频正弦波和白噪声的叠加信号,程序入下:

x1=0:5:8000-5;
x2=4*sin(5*x1);
subplot(321);plot(x2);
title('高频正弦信号');
axis([0 2000 -4 4]);

T=40;
k=2;
n=0:0.1:0.5*T-0.01;
y1=[k*n k*(T/2-n)];
y1=[y1 y1 y1 y1];
subplot(322);plot(y1);
title('三角波信号');

s1=x2+y1;
subplot(323);plot(s1);
title('叠加信号');
axis([0 2000 0 50]);

z=wgn(1,1600,0.0001);
subplot(324);plot(z);
title('白噪声信号');

s2=x2+y1+z;
subplot(325);plot(s2);
title('含白噪声信号的叠加信号');
axis([0 2000 0 50]);
然后将含噪信号进行小波分解,滤波。我的想法是用不同的阈值选择法(Sqtwolog,rigrsure,Heursure,Minimax和软、硬阈值)进行小波分解,滤波,然后求去每种方法的信噪比和(SNR)和均方误差(MSE),问题在于:不知道怎么在MATLAB中实现对SNR和MSE的求取,希望高手给出具体的程序和方法,特别是关键程序语句~急啊~
最好能有能运行的程序 ~谢谢~

直接使用CFTOOL工具箱
命令行输入cftool即可,然后选择拟合类型
x=[6.69:0.02:7.53];
y=[4.2,3.7,3.3,2.95,2.63,2.33,2.11,1.87,1.65,1.47,1.32,1.17,1.04,0.925,0.82,0.735,0.653,0.582,0.52,0.462,0.412,0.366,0.325,0.289,0.258,0.23,0.205,0.182,0.162,0.145,0.129,0.115,0.102,0.091,0.081,0.072,0.064,0.057,0.051,0.0455,0.0403,0.036,0.032];
直接输入cftool进入曲线拟合工具箱界面“Curve Fitting tool”
(1)点击“Data”按钮,弹出“Data”窗口;
(2)利用X data和Y data的下拉菜单读入数据x,y,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;
(3)点击“Fitting”按钮,弹出“Fitting”窗口;
(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,选择类型Power:幂逼近,有2种类型,a*x^b 、a*x^b + c

function p = MSE(im , imr ) % mse - % % im原始图像 % imr 恢复图像 % Copyright (c) 2004 Gabriel Peyr? m=(im-imr).^2; p=sum(sum(m)); p=p/size(im,1)^2;

function p = psnr(x,y) % psnr - compute the Peack Signal to Noise Ratio, defined by : % PSNR(x,y) = 10*log10( max(max(x),max(y))^2 / |x-y|^2 ). % % p = psnr(x,y); mse % % Copyrigh