gasload=importdata('load_new.xls');
loaddata=gasload.data.Sheet2;
a=loaddata(:,4);
size(a) %size(a)为1行4列
[c_a,l_a]=wavedec(a,4,'db4');
%对高频部分进行消噪处理,然后再还原信号,
%% 从系数中4层近似(低频)和1,2,3,4层细节(高频)
%信号a的4层近似和1,2,3,4层细节
A4_a=wrcoef('a',c_a,l_a,'db4',4);
D4_a=wrcoef('d',c_a,l_a,'db4',4);
D3_a=wrcoef('d',c_a,l_a,'db4',3);
D2_a=wrcoef('d',c_a,l_a,'db4',2);
D1_a=wrcoef('d',c_a,l_a,'db4',1);
%% 对高频信息进行消噪处理
aThreshold1=thselect(D1_a,'sqtwolog');
aThreshold2=thselect(D2_a,'sqtwolog');
aThreshold3=thselect(D3_a,'sqtwolog');
aThreshold4=thselect(D4_a,'sqtwolog');
aTR=[aThreshold1,aThreshold2,aThreshold3,aThreshold4];
%% 恢复去噪后的各项指标
%SORH是阈值选项,为s时选择软阈值,为h时选择硬阈值
SORH = 's';
%PERF0是恢复和压缩的范数百分比
%'lvd'为允许设置各层的阈值
%'gbl'为固定阈值
% 4为阈值的长度
[wa,CXC,LXC,PERF0,PERF2]=wdencmp('lvd',a,'db4',4,aTR,SORH);
%最后衡量一下去噪的效果,这段代码比较死,可以copy用,用多了就熟悉了。
%% 去噪效果衡量
%SNR越大效果越好,MSE越小越好
%获取各个部分的长度:理论上应该是一样长的
aLength = length(a);
%x=a;
%y=wa;
SqureError = (a-wa).^2;
Squrewa = wa.^2;
waToError = Squrewa./SqureError;
RatioSum = sum(waToError);
ErrorSum = sum(SqureError);
SNR = 10*log10(RatioSum);
MSE = ErrorSum/aLength;
display(['SNR is:',num2str(SNR),'; MSE is:',num2str(MSE)])
%最后,对比一下去噪前后的信号:
figure(2);
subplot(2,1,1);
plot(a);
title('原始信号曲线')
subplot(2,1,2);
plot(wa);
title('消噪后的信号曲线')
%放在一张图上
figure(3);
plot(a,'r');
plot(wa,'b');
%整体思路byzhaoyuxia
%因为要消噪,所以要有阈值,阈值是根据具体信号得到的,
%所以先小波分解,然后提前具体信号,然后计算阈值,最后进行消噪。评价消噪效果
对负荷数据进行小波去噪,整理
最新推荐文章于 2023-04-18 11:25:27 发布