重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
(1)小波模极大值重构 MATLAB代码_天天向上_新浪博客
创新互联主要从事成都做网站、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务七星关区,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
function
[signal,swa,swd,ddw,wpeak]=wave_peak(points,level,Lo_D,Hi_D,Lo_R,Hi_R,offset)
%
该函数用于读取ecg信号,找到小波变换模极大序列
warning off;
ecgdata=load('ecg.txt');
%需要分析的信号,自己加
plot(ecgdata(1:points)),grid on,axis
tight,axis([1,points,-50,300]);
signal=ecgdata(1:points)'+offset;
% 信号的小波变换,按级给出概貌和细节的波形
[swa,swd] =
swt(signal,level,Lo_D,Hi_D);
figure;
subplot(level,1,1);
plot(real(signal)); grid on;axis tight;
for i=1:level
subplot(level+1,2,2*(i)+1);
plot(swa(i,:)); axis
tight;grid on;xlabel('time');
ylabel(strcat('a
',num2str(i)));
subplot(level+1,2,2*(i)+2);
plot(swd(i,:)); axis
tight;grid on;
ylabel(strcat('d ',num2str(i)));
end
%求小波变换的模极大值及其位置
ddw=zeros(size(swd));
pddw=ddw;
nddw=ddw;
posw=swd.*(swd0);
pdw=((posw(:,1:points-1)-posw(:,2:points))0);
pddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))0);
negw=swd.*(swd0);
ndw=((negw(:,1:points-1)-negw(:,2:points))0);
nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))0);
ddw=pddw|nddw;
ddw(:,1)=1;
ddw(:,points)=1;
wpeak=ddw.*swd;
wpeak(:,1)=wpeak(:,1)+1e-10;
wpeak(:,points)=wpeak(:,points)+1e-10;
%按级给出小波变换模极大的波形
figure;
for i=1:level
subplot(level,1,i);
plot(wpeak(i,:)); axis tight;grid
on;
ylabel(strcat('j= ',num2str(i)));
end
注:运行此程序时一定要将待处理信号添加进去,程序中的红色部分。
追问:
ecgdata=load('ecg.txt');
c语言中,可以使用atoi()函数将字符串转化成整数型并输出。
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。
如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1。
扩展资料:
C语言常用函数:
1、int abs(int i)
返回整型参数i的绝对值。
2、double cabs(struct complex znum)
返回复数znum的绝对值。
3、double fabs(double x)
返回双精度参数x的绝对值。
4、long labs(long n)
返回长整型参数n的绝对值。
5、double exp(double x)
返回指数函数ex的值。
6、double frexp(double value,int *eptr)
返回value=x*2n中x的值,n存贮在eptr中。
7、double ldexp(double value,int exp)
返回value*2exp的值。
8、double log(double x)
返回logex的值。
9、double log10(double x)
返回log10x的值。
10、double pow(double x,double y)
返回x^y的值。
参考资料来源:百度百科-atoi
(1)coefs=cwt(s,scales,‘wname’)
(2)coefs=cwt(s,scales,‘wname’,‘plot’)
说明:该函数为一维连续小波分析函数,其中coefs为连续小波变换后的返回系数Wf(a,b)矩阵,系数以行方向存储在矩阵中。
[例6-14]对MATLAB中所带有的noissin信号进行连续小波变换,尺度a分别为0.12,0.24,0.48,1.2,2,4,6,8,10,小波函数用db3,请求出连续小波变换后的系数。程序:
load noissin;%装载信号
s=noissin(1:100)
ls=length(s);%计算信号点的个数ls
%对s进行一维连续小波变换,把返回系数存到矩阵w中
w=cwt(s,[12.12,10.24,15.48,1.2,2:2:10],‘db3’,‘plot’)
Xlabel(‘时间’);
Ylabel(‘变换尺度’);
Title(‘对应于尺度a=0.12,0.24…小波变换系数的绝对值’);
执行程序后,返回矩阵为一个9×1000矩阵。在此为节省篇幅,我们不将结果打印出来,读者可自己上机运行该程序观察结果。
图6-41 一维离散小波变换dwt
1、switch函数只能对整数类型的变量进行枚举,而字符串类型不属于整型变量。因此,必须对字符串进行转化。根据不同的字符串比较结果,执行不同的操作。
2、例程:
假如有这几个固定的字符串"string1","string2",..."stringn",可以做这种变换:
char str[100]="..."//假设已经赋值了
int i=0;
char str1[]="string1",str2[]="string2",str3[]="string3";//可以任意设
if(strcmp(str,str1)==0)//比较,如果str数组中存的刚好是字符串string1,下面同理,
i=1;
else if(strcmp(str,str2)==0)
i=2;
else if(strcmp(str,str3)==0)
i=3;
else
i=4;
//这样就映射出来了,用i的值,来映射不同的str
switch(i)
{
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
case 4:
...
break;
dafault:
....
break;
}