尺度-小波能量谱程序的问题,求解答!
本帖最后由 lonsvm 于 2014-4-22 15:28 编辑仿照《尺度- 小波能量谱在滚动轴承故障诊断中的应用》程军圣,一文编写程序。
其中用的小波是自定义小波,想做小波能量谱,但现在遇到的问题是,对自定的小波做连续小波变换报错。
顺便问一句,尺度-小波能量谱的程序到底应该怎么编写?
这是自定义的小波函数,后面程序调用时,总是报错,提示omiga未定义function = pulse(LB,UB,N,sigma,omiga)
%自定义小波函数
%sigma改变变换尺度,omiga改变振荡周期
t = linspace(LB,UB,N); %参考morlet小波的形式写的
t1=t(1:1:N/2-1); %函数分段,t<0
psi1=exp(-sigma*omiga.*t1).*sin(omiga.*t1);
t2=t(N/2:1:end); %t>0psi=;
end %为什么这两行总是自动被取消了。
将其添加到小波工具箱
clc
clear all
close all
% 创建一个第4类型的小波
familyName = 'Mywave_Pulse';%小波全名
familyShortName = 'puls'; %小波简称,缩写名,不大于4个字母的字符串
familyWaveType= 4;%小波类型
familyNums = ''; %只有一个小波,序列号留空
fileWaveName = 'pulse'; %创建小波的函数文件名
familyBounds = [-4 4]; %定义有效支撑集
% 将新创建的小波添加到matlab中
wavemngr('add',familyName,familyShortName,familyWaveType,...
familyNums,fileWaveName,familyBounds);
% 查看自定义小波是否创建成功.
wavemngr('read')用自定义小波,执行小波连续变换。 用morl小波,和shannon小波可以执行。自定义出错。
%调用编写的小波基函数pulse.m,已用add_custom_wave.m文件将其添加到小波族函数中
clc; clear;close all;
lb = -4; ub = 4;
n=100;
sigma=0.1 ; omiga=7;
= pulse(lb,ub,n,sigma,omiga); %自定义小波-脉冲小波
figure(1);
plot(x2,psi2); title('me');grid on;
load sumsin; x = sumsin;
scales = 1:64;
%x=load('org_1.txt');%1024
wname='morl';
figure(2)
coefs1 = cwt(x,scales,wname,'plot');
wname='shan1-1.5';
figure(3)
coefs2 = cwt(x,scales,wname,'plot');
wname='puls';
figure(4)
coefs = cwt(x,scales,wname,'plot');以下是出错信息。
??? Input argument "omiga" is undefined.
Error in ==> pulse at 18
psi1=exp(-sigma*omiga.*t1).*sin(omiga.*t1);
??? Input argument "omiga" is undefined.
Error in ==> pulse at 18
psi1=exp(-sigma*omiga.*t1).*sin(omiga.*t1);
{:{39}:}{:{39}:} {:{08}:}
有大神帮我看看吗 {:{39}:} {:{39}:}
页:
[1]