wigner-ville.m

来自「此程序是计算wigner-ville分布、伪wigner-ville分布和平滑伪」· M 代码 · 共 90 行

M
90
字号
%产生两分量信号
sig=fmconst(128,0.15)+amgauss(128).*fmconst(128,0.4);

%显示
figure(1);
plot(real(sig),'LineWidth',2);
xlabel('时间 t');
ylabel('幅值 A');

%计算Wigner-Ville分布
figure(2);
[tfr,t,f]=tfrwv(sig);
contour(t,f,tfr);
xlabel('时间 t');
ylabel('频率 f');

%计算伪Wigner-Ville分布
[tfr,t,f]=tfrpwv(sig);
figure(3)
contour(t,f,abs(tfr));
xlabel('时间 t');
ylabel('频率 f');

%计算平滑伪Wigner-Ville分布
[tfr,t,f]=tfrspwv(sig);
%显示
figure(4)
contour(t,f,abs(tfr));
xlabel('时间 t');
ylabel('频率 f');




N=128;
%生成四分量信号
t1=N/4; 
t2=3*N/4; 
t3=t1; 
t4=t2; 
f1=0.15; 
f2=f1; 
f3=0.35; 
f4=f3; 
t=1:N; 
T=sqrt(2*N);
sig1=amgauss(N,t1,T).*fmconst(N,f1,t1);  
sig2=amgauss(N,t2,T).*fmconst(N,f2,t2);  
sig3=amgauss(N,t3,T).*fmconst(N,f3,t3);  
sig4=amgauss(N,t4,T).*fmconst(N,f4,t4);  
sig=sig1+sig2+sig3+sig4;
%时域波形
figure(5)
plot(1:N,real(sig));
xlabel('时间 t');
ylabel('实部幅值 A');
%频率上下限
fmin=0.05; 
fmax=0.45; 

%计算尺度图
[tfr,t,f]=tfrscalo(sig,t,16,fmin,fmax,N); 
Max=max(max(tfr));
V=[0.1 0.3 0.5 0.7 0.9]*Max;
figure(6)
contour(t,f,tfr,V);
xlabel('时间 t');
ylabel('频率 f'); 
%计算affine类平滑伪Wigner分布
%%设置参数
Np=8;
Ng0=round(fliplr(linspace(2,N/10,Np/2-1)));
Nh0=round(linspace(N/4,3*N/4,Np/2-1));
[tfr,t,f]=tfrspaw(sig,t,0,Nh0(1),Ng0(1),fmin,fmax,N,1);
Max=max(max(tfr));
V=[0.1 0.3 0.5 0.7 0.9]*Max;
figure(7)
contour(t,f,tfr,V);
xlabel('时间 t');
ylabel('频率 f'); 
%计算Wigner-Ville分布
[tfr,t,f]=tfrwv(sig);
Max=max(max(tfr)); 
V=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]*Max;
figure(8)
contour(t,f,tfr,V);
axis([1 N fmin fmax]);
xlabel('时间 t');
ylabel('频率 f');

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?