马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 lonsvm 于 2014-4-22 15:28 编辑
仿照《尺度- 小波能量谱在滚动轴承故障诊断中的应用》程军圣,一文编写程序。
其中用的小波是自定义小波,想做小波能量谱,但现在遇到的问题是,对自定的小波做连续小波变换报错。
顺便问一句,尺度-小波能量谱的程序到底应该怎么编写?
这是自定义的小波函数,后面程序调用时,总是报错,提示omiga未定义- function [psi,t] = 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>0
复制代码 psi=[psi2 psi1];
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;
- [psi2,x2] = 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);
|