怎麼用matlab實現小波變換急

2021-03-03 20:34:04 字數 2549 閱讀 5472

1樓:

[yc,ys]=wavedec2(y,2,'db1');

y為要分解的影象矩陣

,2為分解的層數,『db1'為採用的小波基返回兩個矩陣yc和ys。yh2=detcoef2('h',yc,ys,2);這是提取出影象2層分解後的水平分量,h改v是垂直分量,h該d是對角分量。細節分量用另外一個方法提取。

怎樣用matlab進行小波變換

2樓:很低調

那就要看你的資料儲存格式是什麼樣式的,如果是txt的,用load函式進行匯入;如果是xls的,可以用xlsread函式進行匯入

怎樣用matlab做影象的離散小波變換?

3樓:匿名使用者

用matlab自帶的小波工具箱~圖形化介面比較方便

要不直接用裡面現成的函式也成

關於小波變換的matlab程式設計

4樓:匿名使用者

這是一個帶引數的函式 根據下面的引數校驗可以看出你應該是直接點執行了吧 所以報錯了

你至少應該產生一個輸入訊號,比如一個正弦訊號來做輸入進行變換

。。。誰給你的程式啊 這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;

endif (nargin<2),

winlen=10;

endsig=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);

5樓:lucky布布

為什麼我按照答案執行還是有根樓主一樣的error??

6樓:示怡賴晗雨

呵呵,這個程式

是告訴你用morlet小波進行連續小波變換時的程式,相當於是matlab中的底層程式,function

[wt,freqbins,scales]=cwt_morlet(sig,winlen,nlevel);這個是定義了這樣的一個函式,其中sig,winlen,nlevel這幾個變數為輸入變數,分別指訊號,訊號的長度以及分解的層數。wt,freqbins,scales這些為輸出變數,分別指小波變換的係數,頻率以及尺度。就是對訊號sig進行nlevel層小波變換。

在實際使用的時候,只要把輸入量給定,然後直接呼叫這個函式[wt,freqbins,scales]=cwt_morlet(sig,winlen,nlevel)。就可以得到輸出結果。

怎麼用matlab實現小波變換,怎麼用matlab實現小波變換???急!!!

含噪聲的源三角波與正弦波的組合 利用db5小波對訊號進行7層分解 生產正弦訊號 clc close all clear all n 1000 t 1 n sig1 sin 0.3 t 生成三角形波形 sig2 1 500 1 500 1 500 sig2 501 n 1000 501 1000 50...

matlab中離散小波變換的預設擴充套件模式是怎麼樣的

參考dwtmode和wextend 函式滴幫助文件,預設擴充套件模式是sym,所以這圖貌似沒錯,db2濾波器組的確是4個數,卷積後得10個數,儲存偶數序號滴5數,即z2這列,z4這列,z10這列,既為dwt後小波係數結果,不知你是 有出入,又如何個出入?怎麼用matlab實現小波變換?急!yc,ys...

求用matlab做小波變換影象增強,用離散小波變換,閾值函式用軟閾值,硬閾值,和這種閾值三種方法

matlab中文論壇 你一搜一大把 我就不一一找了 怎麼用matlab實現小波變換?急!小波變換的閾值函式影象去噪原理?matlab怎麼用小波包進行影象去噪 小波影象去噪的方法大概分為3類 1 基於小波變換摸極大值原理 2 基於小波變換系數的相關性回 3 基於小波閾值的去噪答。基於小波閾值的去噪方法...