注释并解释以下代码:function [Image,Psnr]=WaveletDenoising(x,n,wname,image,a) %函数功能: % y=WaveletDenoising(x,n,wname) % 选择一副图像,加上不同程度的高斯噪声,对带噪图像进行小波分解, % 对小波系数进行阈值处理再利用处理后的结果重构原图像 %输入参数: % x----输入的噪声图像 % n----小波分解的层数 % wname----小波基函数 % a----折中系数 %输出参数: % Image----原图像去噪后重构的图像 % Sndz----峰值信噪比 [c,s]=wavedec2(x,n,wname); %进行3层小波分解 for i=1:3 %获取各层各高频分量在c向量中的坐标 if i==1 num(i,1)=s(i,1)*s(i,2)+1; num(i,2)=num(i,1)+s(i+1,1)s(i+1,2); num(i,3)=num(i,2)+s(i+1,1)s(i+1,2); step(i)=s(i+1,1)s(i+1,2); else num(i,1)=num(i-1,3)+s(i,1)s(i,2); num(i,2)=num(i,1)+s(i+1,1)s(i+1,2); num(i,3)=num(i,2)+s(i+1,1)s(i+1,2); step(i)=s(i+1,1)s(i+1,2); end end C=c; for j=1:101 b(j)=0.01(j-1); %折中系数取0到1中的两位小数进行比较 for i=1:3 [H,V,D]=detcoef2('a',c,s,i); %提取第i层各高频系数 B=[H V D]; [M,N]=size(B); for k=1:M for w=1:N sigma=median(abs(B(k,w)))/0.6745;%噪声方差 end end th=sigmasqrt(2log10(MN)); ch=c(1,num(4-i,1):num(4-i,2)+step(4-i)-1);%对各高频系数进行阈值处理 C(1,num(4-i,1):num(4-i,2)+step(4-i)-1)=ThresholdProcessing(ch,th,b(j));%阈值处理函数 cv=c(1,num(4-i,2):num(4-i,2)+step(4-i)-1); C(1,num(4-i,2):num(4-i,2)+step(4-i)-1)=ThresholdProcessing(cv,th,b(j)); cd=c(1,num(4-i,3):num(4-i,2)+step(4-i)-1); C(1,num(4-i,3):num(4-i,2)+step(4-i)-1)=ThresholdProcessing(cd,th,b(j)); end ReImage(:,:,j)=waverec2(C,s,wname);%重构图像 [a1,b1]=size(image);%计算峰值信噪比 sqr=double(image) - double(ReImage(:,:,j)); mse= sum(sum( sqr.^2 ))/(a1b1); PSNR(j)= 10log10( 255255 / mse ); end %返回输出值 a=a+1; [Ma,Mn]=max(PSNR); if a==0 Psnr=Ma; Image=ReImage(:,:,b(Mn)*100); else Image=ReImage(:,:,a); Psnr=PSNR(a); end end