你至少应该产生一个输入信号,比如一个正弦信号来做输入进行变换
。。。谁给你的程序啊 这bug也太多了 很多低级bug 我只是改的能运行了
function [WT,FreqBins,Scales]=CWT_Morlet(Sig,WinLen,nLevel)
%continuous Wavelet Transform using Morlet function
%Sig:信号
%WinLen:小波函数在尺度参数a=1时的长度(默认为10)
%nLevel:频率轴划分区间段(默认为1024)
%
%WT:返回的小波变换计算结果
%FreqBins:返回频率轴划分结果(归一化频率,最高频率为0.5)
%Scales:返回与频率轴划分值相对应的尺度划分(频率0.5对应的尺度为1)世大慧
if (nargin==0),
error('At least 1 parameter required!')
end
if (nargin<3),
nLevel=1024
end
if (nargin<2),
WinLen=10
end
Sig=hilbert(real(Sig))%计算信号的解析信号
SigLen=length(Sig)%获取信号的长度
fmax=0.5%设置最高分析频率
fmin=0.005%设置最低分析频率
FreqBins=logspace(log10(fmin),log10(0.5),nLevel)%将频率轴在分析范围内等
%对数坐标划分
Scales=fmax*ones(size(FreqBins))./FreqBins%计搜答算响应的尺度参数
omg0=WinLen/6
WT=zeros(nLevel,SigLen)%分配计算结果的存储单元
wait=waitbar(0,'Under calculation,please wait')
for m=1:nLevel,
waitbar(m/nLevel,wait)
a=Scales(m)%提取尺度参数
t=-round(a*WinLen):1:round(a*WinLen)
Mor1=pi^(-1/4)*exp(1i*2*pi*0.5*t/a).*exp(-t.^2/2/(2*omg0*a)^2)
%计算当前尺度下的小波函数
temp=conv(Sig,Mor1)/sqrt(a) %计算信号与仿迹小波函数的卷积
WT(m,:)=temp(round(a*WinLen)+1:length(temp)-round(a*WinLen))
end
close(wait)
WT=WT/WinLen
%%%%%%运行示例%%%%%%%%%
Fs=100
t=0:1/Fs:2*pi
sig=sin(t)
[WT,FreqBins,Scales]=CWT_Morlet(sig)
小波分析后,你也没处理,组合起来依然是原信号升伏啊。方差不会变的。你用连续小波变换,得到了1:43尺度下的小波基系数组z(i)。如果你指的是在一定分辨率下,该信号在某个尺度上投射的分量的方差。就用z(i)乘以这个小波φ(τ,σ)基。在睁则用STD求方差呗。吵早携欢迎分享,转载请注明来源:内存溢出
评论列表(0条)