## 二、部分源代码

`clcclear allclose allfs = 20e3;                  % 采样频率fn = 3e3;                   % 固有频率y0 = 5;                      % 位移常数g = 0.1;                     % 阻尼系数T = 0.01;                   % 重复周期N = 4096;                  % 采样点数NT = round(fs*T);      % 单周期采样点数t = 0:1/fs:(N-1)/fs;      % 采样时刻t0 = 0:1/fs:(NT-1)/fs;  % 单周期采样时刻K = ceil(N/NT)+1;       % 重复次数y = [];for i = 1:K    y = [y,y0*exp(-g*2*pi*fn*t0).*sin(2*pi*fn*sqrt(1-g^2)*t0)];endy = y(1:N);Yf = fft(y);                % 频谱y5 = awgn(y,0.5,'measured'); % Add white Gaussian noisey10 = awgn(y,1,'measured'); % Add white Gaussian noisey15 = awgn(y,5,'measured'); % Add white Gaussian noise%%信噪比=0.5--------------------------------------------mse12=MSE(y5,xdy12);PSNR12=PSNR(y5,xdy12);st=sprintf('经软阈值函数去噪后的均方差=%.2f，信噪比=%.2f',mse12,PSNR12);disp(st)st=sprintf('经半软阈值函数去噪后的均方差=%.2f，信噪比=%.2f',mse13,PSNR13);disp(st)figure(1);subplot(511);plot(t,y);axis([0,inf,-4,5]);title('原始信号');xlabel('时间e(s)');ylabel('幅度')subplot(512);plot(t,y5);axis([0,inf,-4,5]);title('加入0.5db高斯白噪声的信号');xlabel('时间e(s)');ylabel('幅度')subplot(513);plot(t,xdy11);axis([0,inf,-4,5]);title('经硬阈值函数处理后的信号');xlabel('时间e(s)');ylabel('幅度')subplot(514);plot(t,xdy12);axis([0,inf,-4,5]);title('经软阈值函数处理后的信号');xlabel('时间e(s)');ylabel('幅度')subplot(515);plot(t,xdy13);axis([0,inf,-4,5]);title('经半软阈值函数处理后的信号');xlabel('时间e(s)');ylabel('幅度')function X = denh(x, wname, n, thr)%硬阈值[C, S] = wavedec2(x, n, wname);                     %进行小波分解dcoef = C( prod(S(1, :)) + 1 : end);                %高频部分系数ind = find( abs(dcoef) < thr) + prod(S(1, :));      %小于阈值thr的系数C(ind)=0;                                %   直接置零a=0.6;ind = find( abs(dcoef) >= thr) + prod(S(1, :));     %大于阈值thr的系数C(ind) = C(ind);                                                    %按照公式处理                                                    function X = denr(x, wname, n, thr)% 软阈值[C, S] = wavedec2(x, n, wname);                     %进行小波分解dcoef = C( prod(S(1, :)) + 1 : end);                %高频部分系数ind = find( abs(dcoef) < thr) + prod(S(1, :));      %小于阈值thr的系数C(ind) = 0;                                         %   直接置零`

## 四、matlab版本及参考文献

1 matlab版本

2014a

2 参考文献

[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社，2015.

[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社，2020.

[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社，2018.