资源简介
关于morlet小波的一个matlab代码,又注释,仅供参考
代码片段和文件信息
function wcoefs = mymorletcwt(SigScalesfcfb)
%============================================================%
% Continuous Wavelet Transform using Morlet function
%%%%%%%%%%%%%%%%%%%%%%%%输入%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sig: 输入信号
% Scales: 输入的尺度序列
% fc: morlet小波中心频率 (默认为2)
% fb: morlet小波带宽参数 (默认为2)
%%%%%%%%%%%%%%%%%%%%%%%%输出%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% wcoefs: morlet小波变换计算结果
%============================================================%
if (nargin <= 1)
error(‘At least 2 parameters required‘);
end;
if (nargin < 4)
fb = 2;
elseif (nargin < 3)
fc = 2;
end;
wavsupport=8; % 默认morlet小波的支撑区为[-88]
nLevel=length(Scales); % 尺度的数目
SigLen = length(Sig); % 信号的长度
wcoefs = zeros(nLevel SigLen); % 分配计算结果的存储单元
for m = 1:nLevel % 计算各尺度上的小波系数
a = Scales(m); % 提取尺度参数
t = -round(a*wavsupport):1:round(a*wavsupport); % 在尺度a的伸缩作用下,此时小波函数的支撑区会变为[-a*wavsupa*wavsup],采样频率为1Hz
Morl = fliplr((pi*fb)^(-1/2)*exp(i*2*pi*fc*t/a).*exp(-t.^2/(fb*a^2))); % 计算当前尺度下的小波函数,按小波变换的定义这里需要倒置
temp = conv(SigMorl) / sqrt(a); % 计算信号与当前尺度下小波函数的卷积
d=(length(temp)-SigLen)/2; % 由于卷积计算所得结果的长度可能远远大于原信号,只需提取按原信号的长度提取中间部分的系数
first = 1+floor(d); % 区间的起点
wcoefs(m:)=temp(first:first+SigLen-1);
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1784 2011-06-13 20:58 mymorletcwt.m
文件 1435 2011-06-13 20:59 mymorletcwt_exp.m
- 上一篇:振动课程MATLAB代码
- 下一篇:柴油发电机matlab模型
评论
共有 条评论