(1)小波模極大值重構(gòu) MATLAB代碼_天天向上_新浪博客
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)七星關(guān)區(qū),十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
function
[signal,swa,swd,ddw,wpeak]=wave_peak(points,level,Lo_D,Hi_D,Lo_R,Hi_R,offset)
%
該函數(shù)用于讀取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;
% 信號的小波變換,按級給出概貌和細節(jié)的波形
[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()函數(shù)將字符串轉(zhuǎn)化成整數(shù)型并輸出。
atoi (表示 ascii to integer)是把字符串轉(zhuǎn)換成整型數(shù)的一個函數(shù),應(yīng)用在計算機程序和辦公軟件中。int atoi(const char *nptr) 函數(shù)會掃描參數(shù) nptr字符串,會跳過前面的空白字符(例如空格,tab縮進)等。
如果 nptr不能轉(zhuǎn)換成 int 或者 nptr為空字符串,那么將返回 0 。特別注意,該函數(shù)要求被轉(zhuǎn)換的字符串是按十進制數(shù)理解的。atoi輸入的字符串對應(yīng)數(shù)字存在大小限制(與int類型大小有關(guān)),若其過大可能報錯-1。
擴展資料:
C語言常用函數(shù):
1、int abs(int i)
返回整型參數(shù)i的絕對值。
2、double cabs(struct complex znum)
返回復(fù)數(shù)znum的絕對值。
3、double fabs(double x)
返回雙精度參數(shù)x的絕對值。
4、long labs(long n)
返回長整型參數(shù)n的絕對值。
5、double exp(double x)
返回指數(shù)函數(shù)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’)
說明:該函數(shù)為一維連續(xù)小波分析函數(shù),其中coefs為連續(xù)小波變換后的返回系數(shù)Wf(a,b)矩陣,系數(shù)以行方向存儲在矩陣中。
[例6-14]對MATLAB中所帶有的noissin信號進行連續(xù)小波變換,尺度a分別為0.12,0.24,0.48,1.2,2,4,6,8,10,小波函數(shù)用db3,請求出連續(xù)小波變換后的系數(shù)。程序:
load noissin;%裝載信號
s=noissin(1:100)
ls=length(s);%計算信號點的個數(shù)ls
%對s進行一維連續(xù)小波變換,把返回系數(shù)存到矩陣w中
w=cwt(s,[12.12,10.24,15.48,1.2,2:2:10],‘db3’,‘plot’)
Xlabel(‘時間’);
Ylabel(‘變換尺度’);
Title(‘對應(yīng)于尺度a=0.12,0.24…小波變換系數(shù)的絕對值’);
執(zhí)行程序后,返回矩陣為一個9×1000矩陣。在此為節(jié)省篇幅,我們不將結(jié)果打印出來,讀者可自己上機運行該程序觀察結(jié)果。
圖6-41 一維離散小波變換dwt
1、switch函數(shù)只能對整數(shù)類型的變量進行枚舉,而字符串類型不屬于整型變量。因此,必須對字符串進行轉(zhuǎn)化。根據(jù)不同的字符串比較結(jié)果,執(zhí)行不同的操作。
2、例程:
假如有這幾個固定的字符串"string1","string2",..."stringn",可以做這種變換:
char?str[100]="..."http://假設(shè)已經(jīng)賦值了
int?i=0;
char?str1[]="string1",str2[]="string2",str3[]="string3";//可以任意設(shè)
if(strcmp(str,str1)==0)//比較,如果str數(shù)組中存的剛好是字符串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;
}