999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種長序列小波變換快速算法的DSP實現

2008-04-12 00:00:00呂新華何川平李早華潘明忠
現代電子技術 2008年9期

摘 要:由于小波變換算法的復雜性,直接計算小波變換耗時較長,微機和通用的微處理器在運算速度上難以實現小波變換的實時性要求。定點DSP具有低功耗、高性能的特點,本文結合TI公司的16位定點DSP,將小波變換快速算法用C語言開發,詳細說明了小波變換快速算法在定點DSP上的具體實現,解決了小波變換實時、高精度處理的要求,大大提高了小波變換的運算效率。

關鍵詞:小波變換;數字信號處理器;快速算法;圓周卷積

中圖分類號:TP301.6 文獻標識碼:B

文章編號:1004-373X(2008)09-132-03

Implementation of Long Sequence Wavelet Transform Based on DSP

LV Xinhua,HE Chuanping,LI Zaohua,PAN Mingzhong

(Naval 91669 Unit,Haikou,571100,China)

Abstract:Due to the complexity of the wavelet transformation algorithm,the processing velocity of computer and general microprocessor can hardly meet its real-time requirements.Based on the 16-bit fixed point DSP who has low power consumption and high performance presented by TI Company,this article explains the detailed realization process of the wavelet transformation algorithm so as to meet the real-time and high resolution processing requirement in the wavelet transformation algorithm.

Keywords:wavelet transform;digital signal processor;fast algorithm;cyclic convolution

1 引 言

由于小波變換具有良好的時頻分析特性,已經廣泛應用于各種信號分析領域。由于小波變換算法的復雜性,如果直接計算小波變換,所需內存較大,耗時較長。盡管當今處理器芯片運算速度得到了大幅度的提高,但仍然在實時性上不能滿足要求。為了簡化計算過程,人們相繼設計了一系列的快速算法來計算小波變換,以降低其運算次數[1]。

小波變換在大多數具體應用中主要是在線信號的實時分析處理,微機和通用的微處理器在運算速度上難以適應信號實時、高精度處理的要求。數字信號處理器(DSP)就是為了適應這種需求而開發的。美國TI公司是全球最大的DSP供應商,其生產的TMS320C55x系列16位定點DSP芯片具有低功耗、高性能等特點,具有廣泛的應用領域,本文應用該系列DSP芯片,將文獻[2]提出的小波變換快速算法用C語言開發加以實現,解決了小波變換實時、高精度處理的要求。

2 小波分解過程的DSP實現

小波分解過程中算法實現的數據結構存儲和尋址方式如圖1所示。

圖1 算法實現的數據結構存儲和尋址方式

小波分解過程中C語言算法實現的偽代碼如下:

for(LayerID=1;LayerID<=LAYER_NUM;LayerID++)//小波多層分解

{數據邊界延拓程序模塊;

pTemp1=pSrc-M+1;//臨時指針指到延拓后數據的源頭

/*應用長序列快速卷積的重疊保留法計算擴展后數據和分解濾波器組的卷積*/

for(i=1;i<=SegNum;i++)//開始分段

{從源數據區搬送數據到計算區的程序模塊;

用圓周卷積計算線性卷積的程序模塊;

將計算區的結果保存到目標區的程序模塊;

pTemp1=pTemp1-M+1;//臨時指針指向下一個分段的數據起始點}

SrcLen=(SrcLen+M-1)/2;//下一級分解的源數據長度

/*為下一層分解做準備*/

pTemp2=pSrc; pSrc=pDest; pDest=pTemp2;//交換數據指針,即交換數據源區和目標區

pSrcEnd=pSrc+SrcLen+M-1; }

下面分別對偽代碼中各個子程序模塊的具體實現進行分析。

2.1 邊界延拓模塊

數據邊界延拓程序模塊的實現[3]:

定義一個數據地址指針pSrc始終指向載入的源數據頭地址,即pSrc=Layer1Data+M-1,在源數據的首尾各對稱延拓M-1個點。該模塊的C語言實現代碼如下:

for(i=M-1;i>=1;i--)

*(pSrc-i)=*(pSrc+i-1);//前導數據擴展M-1個

pTemp1=pSrc+SrcLen;//臨時指針指到最后一個數據并出界一個

for(i=0;i

*(pTemp1+i)=*(pTemp1-i-1);//尾部數據擴展M-1個

2.2 數據搬移模塊

從源數據區搬送數據到計算區的程序模塊實現:定義一個臨時地址指針pTemp1指向擴展后的數據首地址,即:pTemp1=pSrc-M+1,SegNum為長序列分段數,將數據從數據源區分段搬送到計算區,并將16 b數據擴展為32 b,通過對虛部填零,組成復數輸入數據數組signal,該模塊C語言實現代碼如下(i為分段標記,N為分段圓周卷積長度):

if(i!=SegNum)//除最后一段外的每一段

{for(j=0;j

{signal[j]=*(pTemp1++);signal[j+1]=0;//實部擴展為32bit

signal[j+2]=0;signal[j+3]=0;}//虛部為0,也擴展為32bit}

else //最后一段后面不足的補0

{for(j=0;j

{if(pTemp1==pSrcEnd) //沒數據了,臨時指針不動

{signal[j]=0;signal[j+1]=0; }

else//還有數據,臨時指針繼續向后移動

{signal[j]=*(pTemp1++);signal[j+1]=0;}

signal[j+2]=0;signal[j+3]=0;} //虛部為0,并擴展為32bit

2.3 基于圓周卷積的線性卷積模塊

用圓周卷積計算signal和分解濾波器組dec_filter的線性卷積out_buffer,該模塊的C語言實現代碼如下[4]

cfft32_SCALE((LDATA *)signal,N);

cbrev32((LDATA *)signal,(LDATA *)signal,N);//計算分段信號的FFT

for (j=0;j<2*N;j=j+2)//計算復數的點乘運算

{x1=((long)signal[2*j]*(long)dec_filter[j])1;

x2=((long)signal[2*j+2]*(long)dec_filter[j+1])1;

x3=((long)signal[2*j+2]*(long)dec_filter[j])1;

x4=((long)signal[2*j]*(long)dec_filter[j+1])1;

out_buffer[j]=x1-x2;

out_buffer[j+1]=x3+x4;}

cifft32_NOSCALE(out_buffer,N);

cbrev32(out_buffer,out_buffer,N);[JY]//計算分段輸出的IFFT

2.4 結果保存模塊

將計算區的結果保存到目標區的程序模塊實現:將out_buffer去掉前面M-1個復數,后面N-M+1個復數只取實部,即只取低頻分量,對取出的實部乘以比例系數,這里采用的是小數乘法,然后再取前16 b,將結果存到數據存儲目標區Layer2Data2,定義目標區存儲的首地址指針為pDest=Layer2Data+M-1,然后定義臨時數據指針pTemp2=pDest,該模塊C語言實現代碼如下:

for(j=(M-1)*2;j

{LTemp1=out_buffer[j];//實部

LTemp2[WB]=((LTemp116)*Factor1[LayerID-1])2;//計算高16 b,乘比例系數再乘2,加上小數乘法

[DW] 左移1位,共移2位

LTemp3=(long)(((unsigned long)(LTemp1 0x0000ffffL) * Factor1[LayerID-1])(16-1));//計算低16位,無符號乘法

*(pTemp2++)=(LTemp2+LTemp3)16;//往目標區保存結果 }

將保存在目標區內的數據減采樣一半,仍舊保存在目標區內,該模塊的C語言代碼如下:

pTemp2=pDest;//臨時指針回復到目標區的源頭

for(L=1;L

*(pTemp2++)=*(pDest+L);

3 小波重構過程的DSP實現

首先對數據源區要重構的低頻、高頻數據分量進行上采樣,將上采樣后的數據存到另外一個目標數據緩沖區,該模塊的C語言程序代碼如下:

pTemp2=pDest;//臨時指針指向目標區,作為重構數據的起點

for(L=0;L

{*(pTemp2++)=0;//奇數位置插入0值

*(pTemp2++)=*(pSrc+L);}

*(pTemp2)=0;//尾部多補一個0

交換數據指針,將計算結果存到另一區,對上采樣后的數據進行邊界延拓,然后應用重疊保留法計算擴展后的數據和重構濾波器組的線性卷積,這兩個模塊的實現同分解過程。惟一有所區別的是,在保存數據時,每一層重構時的第一個分段前面要去掉的個數要多一點,模塊的C語言代碼如下:

if(i==1) //i為分段標記

SaveBegin=(M-1+Trim)*2;//第一個分段要多丟掉一些

else

SaveBegin=(M-1)*2;//其他分段丟掉的數據(16bit)個數

for(j=SaveBegin;j

{ …… }

4 結 語

由于小波變換算法的復雜性,微機和通用的微處理器在運算速度上難以實現小波變換的實時性要求。定點DSP具有低功耗、高性能的特點,本文結合TI公司的16位定點DSP說明了小波變換快速算法的具體實現,解決了小波變換實時、高精度處理的要求。

參 考 文 獻

[1]Mallat S.A Theory for Multi-resolution Signal Decomposition:The Wavelet Representation[J].IEEE Transaction on Pattern Analysis and Machine Intelligence,1989,11(4): 674-693.

[2]呂新華.一種長序列小波變換的快速實現方法[J].數據采集與處理,2006,21(1):86-89.

[3]呂新華.小波變換Mallat算法實現中的邊界延拓研究[J].天津理工大學學報,2006,22(2):14-17.

[4]虞湘賓.長序列信號快速相關與卷積的算法研究[J].電路與系統學報,2001,6(4):78-83.

作者簡介 呂新華 男,1976年出生,湖北十堰人,碩士。主要從事數字信號處理研究。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 57pao国产成视频免费播放| 亚洲欧美成人网| 色妞www精品视频一级下载| 91亚洲精选| 综合五月天网| 人妖无码第一页| 99久久免费精品特色大片| 国产亚洲精品无码专| 无码丝袜人妻| 欧美综合区自拍亚洲综合天堂| 91精品国产自产在线老师啪l| 奇米精品一区二区三区在线观看| 免费不卡视频| 国产香蕉在线| 2024av在线无码中文最新| 国产精品片在线观看手机版| 日本在线欧美在线| 亚洲成人黄色在线观看| 国产激爽大片在线播放| 看av免费毛片手机播放| 小13箩利洗澡无码视频免费网站| 九九九国产| 狠狠五月天中文字幕| 亚洲日韩AV无码一区二区三区人 | 99久久精彩视频| 久996视频精品免费观看| 国产玖玖玖精品视频| 中文字幕在线视频免费| 青草91视频免费观看| 一本大道无码高清| 日韩少妇激情一区二区| 777午夜精品电影免费看| 日韩福利在线视频| 高清码无在线看| 久精品色妇丰满人妻| 日韩色图区| 中文字幕在线看视频一区二区三区| 亚洲国产黄色| 热伊人99re久久精品最新地| 2021亚洲精品不卡a| 伊人大杳蕉中文无码| 青青草91视频| 欧美国产综合色视频| 亚洲精品无码不卡在线播放| 午夜无码一区二区三区在线app| 又爽又大又光又色的午夜视频| 在线观看欧美国产| 成人日韩精品| 强奷白丝美女在线观看| 久久99国产视频| 亚洲欧美日韩中文字幕在线一区| 国产女人在线视频| 久久久久国产一级毛片高清板| 97超爽成人免费视频在线播放| 成人福利视频网| 国产超薄肉色丝袜网站| 欧美啪啪网| 国产一区二区人大臿蕉香蕉| 国产成人av大片在线播放| 全部无卡免费的毛片在线看| 区国产精品搜索视频| 国产女人18毛片水真多1| 美女无遮挡拍拍拍免费视频| 久久这里只精品国产99热8| 毛片大全免费观看| 亚洲精品欧美重口| 国产 在线视频无码| 亚洲av无码成人专区| 日韩免费毛片| 亚洲第一区精品日韩在线播放| 欧美激情伊人| 国产成人高清精品免费软件| 亚洲无限乱码一二三四区| 东京热av无码电影一区二区| 亚洲精品无码专区在线观看| 国产日韩精品欧美一区灰| 久热re国产手机在线观看| 中文字幕永久视频| 日韩乱码免费一区二区三区| 久久久久免费看成人影片 | 国产精品网曝门免费视频| 国产三级a|