① Matlab中小波包分解程序代碼不會,小波包能量分析,好的回答瘋狂加分!!跪求呀!!
T=wpdec(y,5,'db40');
%對信號y進行小波包分解,層數為5,得到的T為小波樹,plot一下就可看到
a10=wprcoef(T,[1,0]);
%a10是對節點[1,0]進行重構後得到的信號。貌似沒有對那一層重構這一說法吧,只能是對某層的某個節點進行重構。節點的編號你可以從小波樹中看出來
這是我的做法,不過用的是小波包分解。不知對你有沒有用
② matlab小波包程序
t = wpdec(x,3,'db1','shannon');改為T = wpdec(x,3,'db1','shannon');
plot(t)改為plot(T);
rcfs = wprcoef(t,[2 1]);改為rcfs = wprcoef(T,[2 1]);
變數名除非用於遞歸,不要前後重復使用。後面的t只是部分覆蓋了開頭的內t所以會出現問題。容
希望對你能有所幫助。
③ 小波變換的matlab程序: wavename='cmor5-2';
使用MATLAB設計小波變換程序中的若干問題3[轉貼]使用MATLAB設計小波變換程序中的若干問題仍需探討的問題:為什麼使用PNG存儲經小波變換後的重構圖像變大?我曾在清華大學的多媒體課程的教師答疑中寫了「老師:尊重事實:DB9閾值10的PNG文件就是比原文件大」和「續一:尊重事實:DB9閾值10的PNG文件就是比原文件大」,在林老師的鼓勵和指導下,我進行了繼續試驗、分析,與劉趙璧(Anna)同學進行了探討,並得到了Lily(姓名還不知道)同學的幫助,同時同學們也做了各自不同的實驗,現在的實驗結果可以說基本上比較明確,那就是有些圖像就是會變大,這與圖像的種類、紋理等密切相關。林老師曾經鼓勵我去研究一下PNG的壓縮方法,無奈我資質不夠,至今在這方面的進展不大。由於臨近期末考試,作業也要抓緊,所以我暫且將沒有搞明白的內容擱置,待寒假期間再進行,希望對這些問題有各種看法也有興趣研究的同學對此發表意見。以下是我最近試驗、分析和閱讀到的一些相關信息。試驗結果我首先根據老師第三章的Haar矩陣演算法推演出DB9的系數矩陣,並實現了分解重構及閾值處理程序,對幾種照片進行了比較,然後使用3.1節的simplecmp進行了相同照片的實驗,結果相當一致。細小差別是因為我的程序對邊界的擴展與MATLAB不一樣,在設置閾值後引起了邊界上小部分不一致造成的。表一:真彩色圖像百合花的處理結果閾值PngHaar(Mat/Mine)0數Haat(Mat/Mine)PNGDb9(MAT/Mine)0數Db9(MAT/Mine)95973/95973095973/9597327524/2426895973/9597327/9574552/74292135838/136063101882/101992167412/1656621051976/51504163423/16374198411/98861199200/1957302032474/32346180167/18026792295/93660220629/217214從對比表中我們能夠看到2個程序的結果相當一致,因此,我不再給出兩種程序的對比,而是使用simplecmp直接處理的結果說明。將百合花圖像使用[I,map]=rgb2ind(x,255);轉換成為彩色圖像處理,在將偽彩色圖像轉換為連續變換的灰度圖像(如2.4常見問題中討論的方法)進行處理:表二:百合花的偽彩色圖像和處理後的灰度(gray)圖像的處理結果閾值PngHaar(Index/Gray)0數Haar(Index/Gray)PNDb9(Index/Gray)0數Db9(Index/Gray)48535/43235048535/432356096/743048535/4323518/22553207/364509473/4362660362/499277009/528521058025/2360213362/5434464916/4781313202/658812060193/1434721948/6003966020/4601424468/73494其他偽彩色與進行加工的灰度圖的結果與此完全一致,這也就說明了如果偽彩色文件的色板不是單調性遞增就不適合小波分解。「essfromdarktolight..」。我對Facets進行同樣的實驗,結果與此一致。這種處理的結果可以從圖像象素值的連續性來理解。這是處理與不處理的圖像的中間一行的數據圖。另外,不連續的圖像質量在壓縮後會被極大地破壞圖2偽彩色文件變化前後的第128行數據的連續性情況對比分析多種試驗圖片基本能夠反映類似的結果,雖然IndexedColorimage有時令Haar小波的分解重構圖像出現增大現象,單經過處理之後,這種現象就會消失。然而對於DB9可以看到無論真彩色還是處理後的灰度圖像都在閾值510處超過原始圖像的大小,能不能因此得出DB9不適合進行圖像壓縮的結論呢?有一些同學確實這樣認為,但我認為這種觀點因為忽略了如何利用小波進行壓縮和還原的過程,這也正是第四章老師為我們講述的那些編碼演算法而造成的。在推薦材料[1]中也有類似的說明。圖3、JPEG2000的基本結構看一下上圖就可以明白為什麼PNG不能衡量小波壓縮的效率問題。上圖的圖像原始數據首先經過正變換(ForwardTransform)就是小波變換的得到小波系數,變換的小波系數經過閾值處理後進行量化,編碼後得到壓縮的圖像文件JPEG2000,如果你沒有JPEG2000的顯示程序,那麼你就不能看到它。它的顯示程序就是由解碼器從壓縮數據中解出編碼,進行反量化,得到小波系數,再實施逆變換(InverseTransform)就是小波系數重構。最終得到圖像的原始數據。因此衡量小波變換的效率是應該看你選擇的小波能不能分解出適合「編碼器」壓縮的小波系數,這種編碼器不是PNG的LZ77,因為LZ77壓縮小波分解系數的效率不是最好的。這種高效編碼器在第四章可以找到。那麼我們存儲PNG文件的目的是什麼呢?我認為壓縮與去噪(de-noising)是同一種方法的兩種提法。他們都使用了設置閾值的方法。我們可以仔細分析經過重構的PNG圖片的質量來體會這種消除噪音的效果,也可以評定小波壓縮後的圖片的視覺質量,同時PNG的文件大小也可以讓我們從LZ77演算法的本質來理解小波變換壓縮後的重構圖像的內容變化情況。比如,我們可以從表2中的灰度圖像在haar變換取閾值20時出現塊狀象素,文件大小變為14347,而db9卻為46014,超過原始的PNG大小,但並不出現塊狀而是具有波狀的特徵。這本身說明了採用Harr小波壓縮或去噪後重構的圖像中相同的『串』增多,便於PNG方式壓縮,而db9則在相同閾值的情況下不會象Haar那樣製造『馬賽克』,說明了它的平滑性,這也能幫助我們理解小波的特性。當然,當閾值繼續增加後,超過某一界限,即使DB9也仍然會使PNG文件大小減小。這本身也就是由雙尺度(Dyadic)小波變換的兩種濾波器決定的。低通濾波結果相當於平均值,高通濾波結果相當於差值,差值能夠保證重構圖像的細節部分丟失最小,如果差值部分被閾值略去的過多,細節就會越來越少,平均意義的值約來越多,直到多到某一個臨界值時(該圖像的閾值取到40),重構的圖像也可能出現較多的相同數字串,這就會提高PNG的壓縮結果。下圖是我對Haar(藍色)小波取閾值為20,db9(紅色)小波閾值取40時第128行1:32列的數據曲線與原始數據(黑色)曲線的對比。可以看出也db9在閾值=40時出現了較多的平均值,但比haar在閾值=20時的曲線要少的多。圖4、haar(藍色)和db9(紅色)壓縮後重構圖像的第128行,1:32列的數據曲線不過,MATLAB給我們提供了量化的方法來決定如何選取閾值。在HELPWaveletToolbox:AdvanceConcepts:中提到了幾種利用「熵」的概念來衡量如何選取合適的分解級。感興趣的同學還可以參看wentropy,wdcbm2,wpdec的幫助。文獻[1]中也提到了衡量壓縮質量的客觀化方法MSE,PNSR並指出小波的重構濾波器的長度越長,形狀越規則越能夠提供良好的壓縮性能。上面對PNG的討論因為沒有足夠的演算法分析和程序解讀,同時也沒有準確的試驗數據,因此只能作為猜測。但衡量小波壓縮效率的方法我堅持認為不能以PNG文件大小來解說,如果採用圖像文件大小來衡量,應該以JPEG2000來衡量。
④ 誠求關於matlab小波分析的源程序代碼
你好,我也在同matlab做小波分析,可以交流一下吧,1024961077
⑤ 急求!!! 利用MATLAB計算小波系數的程序,要求如下:
給你灶燃兩個程序語句,橡辯雀你試試吧
D=detcoef2O,C,S,N)實現提取小波分解高頻系數
[C,S]是信號的二維小波分解結構,尺度N必須為正整數且1<=N<=size(S,1)-2, O取值為'v'(h或d),當O為'h『表示提取水平方向細數,為v時梁早表垂直方向 為d時提取斜線方向。
A=appcoef2(C,S,'wname',N)用於提取二維小波分解的低頻系數。N為尺度同上,希望對你有所幫助
⑥ 你好,你那有小波包分解重構求能量譜的matlab程序么,這方面我還是沒怎麼弄通,能幫下么
應該有,在我電腦上呢,給你推薦一本書《小波分析與MATLAB實現》,MATLAB7.0版的,上森培慶面就有這小波分解的MATLAB程序,很全的,你去找找看吧,我這程序不知道放中純在什麼地方此握了
⑦ 小波神經網路的matlab程序
你這個程序錯處較多,如fai,fnn,oxhp,沒有定義,不能運行。
⑧ 關於小波變換的Matlab編程
這是一個帶參數的函數 根據下面的參數校驗可以看出你應該是直接點運行了吧 所以報錯了
你至少應該產生一個輸入信號,比如一個正弦信號來做輸入進行變換
。。。誰給你的程序啊 這bug也太多了 很多低級bug 我只是改的能運行了
function [WT,FreqBins,Scales]=CWT_Morlet(Sig,WinLen,nLevel)
%continuous Wavelet Transform using Morlet function
%Sig:信號
%WinLen:小波函數在尺度參數a=1時的長度(默認為10)
%nLevel:頻率軸劃分區間段(默認為1024)
%
%WT:返回的小波變換計算結果
%FreqBins:返回頻率軸劃分結果(歸一化頻率,最高頻率為0.5)
%Scales:返回與頻率軸劃分值相對應的尺度劃分(頻率0.5對應的尺度為1)
if (nargin==0),
error('At least 1 parameter required!');
end;
if (nargin<3),
nLevel=1024;
end
if (nargin<2),
WinLen=10;
end
Sig=hilbert(real(Sig));%計算信號的解析信號
SigLen=length(Sig);%獲取信號的長度
fmax=0.5;%設置最高分析頻率
fmin=0.005;%設置最低分析頻率
FreqBins=logspace(log10(fmin),log10(0.5),nLevel);%將頻率軸在分析范圍內等
%對數坐標劃分
Scales=fmax*ones(size(FreqBins))./FreqBins;%計算響應的尺度參數
omg0=WinLen/6;
WT=zeros(nLevel,SigLen);%分配計算結果的存儲單元
wait=waitbar(0,'Under calculation,please wait');
for m=1:nLevel,
waitbar(m/nLevel,wait);
a=Scales(m);%提取尺度參數
t=-round(a*WinLen):1:round(a*WinLen);
Mor1=pi^(-1/4)*exp(1i*2*pi*0.5*t/a).*exp(-t.^2/2/(2*omg0*a)^2);
%計算當前尺度下的小波函數
temp=conv(Sig,Mor1)/sqrt(a); %計算信號與小波函數的卷積
WT(m,:)=temp(round(a*WinLen)+1:length(temp)-round(a*WinLen));
end;
close(wait);
WT=WT/WinLen;
%%%%%%運行示例%%%%%%%%%
Fs=100;
t=0:1/Fs:2*pi;
sig=sin(t);
[WT,FreqBins,Scales]=CWT_Morlet(sig);
⑨ 怎樣在matlab中自己編寫一個小波的程序
怎樣在matlab中自己編寫一個小波的程序
a1.a2,d2,d1是ca1,ca2,cd1,cd2這些小波系數的重構。ca1,ca2,cd1,cd2是小波系數,它們的數據點數隨分解層次的增大而減少,這就難以與原陸神扮始信號對比分析,通早灶常會經過重構變為與原始信號個數相同的a1.a2,d2,d1,從物理意義上講,只有a1.a2,d2,d1才是有實際量綱的信號,瞎槐ca1,ca2,cd1,cd2是沒有量綱和物理意義的。
⑩ 求提取小波系數的matlab程序
% 裝載leleccum信號
load leleccum;
s = leleccum(1:3920);
% 用db1小波函數對信號進行三尺度小波分解
[C,L]=wavedec(s,2,'db1');
figure(1);
plot(s);
title('leleccum原始信號');
% 提取尺度1的低頻系數
cA1 = appcoef(C,L,'db1',1); %用小波分解框架野斗[C.L]計算1層低頻系數的近似值,小波基為db1
% 提取尺度2的低頻系數
cA2 = appcoef(C,L,'db1',2);
figure(2);
subplot(2,1,1);
plot(cA1);
title('尺度1的低頻系數');
subplot(2,1,2);
plot(cA2);
title('尺度頌讓磨2的低頻系數');
% 提取尺度1的高滑橡頻系數
cD1 = detcoef(C,L,1); %用小波分解框架[C.L]計算1層高頻系數的近似值,小波基為db1
% 提取尺度2的高頻系數
cD2 = detcoef(C,L,2);
figure(3);
subplot(2,1,1);
plot(cD1);
title('尺度1的高頻系數');
subplot(2,1,2);
plot(cD2);
title('尺度2的高頻系數');