马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
对一组信号,先作swt分解,再求各层小波变换的模极大值。
要确定信号边沿位置,需要判断模极大值位置,不知道该取哪层的结果?
我是看书里是说“用每一尺度下的小波变换的导数平方和作为判据指标”,值最小的那层即为最优尺度。 但不管用什么信号,最小的总是最后一层。
不知道是不是出错了?
%%信号3:音素信号,AR模型+白噪声
a1=-0.195;
a2=0.95;
n=[1:1024]';
v0=randn(1,1024);
var=(1-a2)/(1+a2)*((1+a2).^2-a1.^2);
v=0.3*v0;
u0=[0,0];
num=1;
den=[1 a1 a2];
Zi=filtic(num,den,u0);
[u,Zf]=filter(num,den,v,Zi);
s=u;
%%方式1. %SWT对信号长度要求 2^k
wf='rbio2.6';
level=6;
[swa,swd]=swt(s,level,wf);
%画各层近似和细节图
figure;
subplot(level,1,1); plot(real(s)); grid on;axis tight;
for i=1:level
subplot(level+1,2,2*(i)+1);
plot(swa(i,: )); axis tight;grid on;xlabel('time');
ylabel(strcat('a ',num2str(i)));
subplot(level+1,2,2*(i)+2);
plot(swd(i,: )); axis tight;grid on;
ylabel(strcat('d ',num2str(i)));
end %for
%画各层细节的模
figure;
for i=1:level
subplot(level+1,1,i);
plot(abs(swd(i,: ))); axis tight;grid on;
ylabel(strcat('abs(d) ',num2str(i)));
end %for
%求每层细节的导数平方和,找到最优尺度
====这步是否出错了?? 我是看书里是说“用每一尺度下的小波变换的导数平方和作为判据指标”,值最小的那层即为最优尺度。
t=1:length(s); %t值不影响af曲线形状。
%t=linspace(-0.9,2,512); %用这个也一样。
af=[];
for i=1:level
af(i)=sum((diff(swd(i,: ))./diff(t)).^2);
end %for
figure; plot(1:level,af,'b',1:level,af,'g.');
[v,p]=max(af);
hold on
plot(p,af(p),'r*');
hold off |