自适应奇异值分解(ASVD)局放信号去噪

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%自适应奇异值分解(Adaptive Singular Value Decomposition)去噪%参考文献:Ashtiani M B, Shahrtash S M. Partial discharge de-noising employing adaptive singular value decomposition[J]. IEEE Transactions on Dielectrics & Electrical Insulation, 2014, 21(2):775-782.

function y_denoised=ASVDdenoising(noisydata,k)

if size(noisydata,1)>size(noisydata,2)

noisydata=noisydata';

end

N=length(noisydata);

y_denoised=zeros(N,1);

L=ceil(N/3);

% Y=[];

%

% for j=1:N-L

% Y=[Y;noisydata(j:j+L)]; %HANKEL矩阵,大矩阵时这种构建方式(未事先确定矩阵尺寸)将会严重影响计算速度

% end

Y=HankelMatrixCons(noisydata,L);

[U,S,V]=svd(Y); %奇异值分解

g=diag(S);

g1=sort(g(1:100),'ascend');

g1=g1/g(1)*100;

n=length(g1);

std_g=zeros(n,1);

for j=1:n

if floor(std(g1(1:j)))>0

M=j;

break;

end

end

for j=1:n

std_g(j)=floor(std(g1(1:j)));

end

% subplot(2,1,1)

plot(std_g,'-ro')

if nargin==1

k=input('Input M\n');

% k=M;

end

Y1=U(:,1:(n+1-k))*S(1:(n+1-k),1:(n+1-k))*V(:,1:(n+1-k))';

order=n+1-k;

y_denoised=Subfun1STSVD(U,S,V,order);

% 构建(L*K,K=N-L+1)Hankelj矩阵

function X=HankelMatrixCons(data,L)

N=length(data);

if size(data,2)==N

data=data';

end

X=zeros(L,N-L+1); %创建Hankel矩阵

for j=1:L

X(j,:)=data(j:N-L+j)';

end

% 利用有效阶数提取信号(SVD处理)-对角线平均方式function y=Subfun1STSVD(S,V,D,M)

Num_row=size(S,1); Num_column=size(D,1);

N=Num_row+Num_column-1;

y=zeros(1,N); %数据

Num=zeros(1,N); %每个数据对应的数据个数,最后用于求均值Y3=zeros(Num_row,Num_column);

Y1=S(:,1:M)*V(1:M,1:M)*(D(:,1:M))';

for j=1:Num_row

Y3(j,:)=fliplr(Y1(j,:));

end

k=1;

for j=Num_column-1:-1:-(Num_row-1)

a=diag(Y3,j);

y(k)=sum(a);

Num(k)=length(a);

k=k+1;

end

y=y./Num;

相关文档
最新文档