国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于小波變換的同步壓縮變換原理和Matlab代碼

這篇具有很好參考價(jià)值的文章主要介紹了基于小波變換的同步壓縮變換原理和Matlab代碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

同步壓縮變換原理

作為處理非平穩(wěn)信號(hào)的有力工具,時(shí)頻分析在時(shí)域和頻域聯(lián)合表征信號(hào),是時(shí)間和頻率的二元函數(shù)。傳統(tǒng)的時(shí)頻分析工具主要分為線性方法和二次方法。線性方法受到海森堡測不準(zhǔn)原理的制約,二次方法存在交叉項(xiàng)的干擾。

為了提升時(shí)頻聚集性,逼近理想的時(shí)頻表示,時(shí)頻重排 (Reassignment method, RM)作為一種后處理技術(shù)被提。它在二維的時(shí)頻面上重排時(shí)頻系數(shù),導(dǎo)致其喪失了重構(gòu)信號(hào)的能力。同步壓縮變換作為一種特殊的重排,不僅可以銳化時(shí)頻表示,還能恢復(fù)信號(hào)。因此,同步壓縮變換受到研究學(xué)者的熱愛。

同步壓縮變換主要有兩種框架,一種基于小波變換,另一種基于短時(shí)傅里葉變換。本文中以小波變換為框架,介紹同步壓縮變換。在2011年,Daubechies等人提出了同步壓縮小波變換,作為一種經(jīng)驗(yàn)?zāi)B(tài)分解工具。它的主要思想是將小波變換的系數(shù)重新分配到估計(jì)的瞬時(shí)頻率處。所以,同步壓縮變換的核心是估計(jì)瞬時(shí)頻率。通常,是對(duì)時(shí)頻表示關(guān)于時(shí)間求導(dǎo),估計(jì)信號(hào)的瞬時(shí)頻率。然后,把系數(shù)擠壓到估計(jì)的瞬時(shí)頻率處。盡管,同步壓縮小波變換有很多改進(jìn)形式。但是,萬變不離其宗,都是同樣的套路。重排和同步壓縮變換的主要思想如下,
同步壓縮小波變換,時(shí)頻分析,信號(hào)處理,matlab,時(shí)頻表示,算法
下圖是2011年論文中,一個(gè)諧波信號(hào)的小波變換和同步壓縮小波變換的結(jié)果對(duì)比。左邊是諧波信號(hào)的時(shí)域波形,中間是小波變換,右邊是同步壓縮小波變換的結(jié)果。顯然,小波變換的系數(shù)分布在瞬時(shí)頻率8Hz的周圍,同步壓縮小波變換的系數(shù)就只分布在8Hz處。換句話說,同步壓縮小波變換的時(shí)頻分辨率更高,能量聚集性更高。一般通過瑞利熵來衡量時(shí)頻表示的能量聚集性,但是對(duì)于真實(shí)信號(hào)這并不是合理的選擇。

同步壓縮小波變換,時(shí)頻分析,信號(hào)處理,matlab,時(shí)頻表示,算法

同步壓縮小波變換代碼

主程序

clear ; 
close all ;
clc;



%% fix the seed
initstate(23400) ;
opts = struct();
opts.motherwavelet = 'morlet' ;%morlet,Cinfc
opts.CENTER = 1;
opts.FWHM = 0.2;


fs=2^9;    %采樣頻率
dt=1/fs;    %時(shí)間精度
timestart=0;
timeend=1;
t=(0:(timeend-timestart)/dt-1)*dt+timestart;
t=t';
k1=35;
f1=60;
y=exp((1i)*pi*k1*t.*t+2*pi*1i*f1*t).*(t>=0& t<timeend);


freqlow=0;
freqhigh=128;
alpha=1;
seta=-acot(k1);
f=freqlow:alpha:freqhigh;
e=t(end);



%注意SQCWT中列為尺度,行為時(shí)間
[tfr, tfrsq, tfrtic, tfrsqtic] = sqCWT(t, y, freqlow, freqhigh, alpha, opts);

figure();
imagesc(t,tfrtic,abs(tfr)); 
set(gca,'ydir','normal');
xlabel('Time(s)','FontSize',12,'FontName','Times New Roman');
ylabel('Scales','FontSize',12,'FontName','Times New Roman');
set(gca,'FontSize',16,'FontName','Times New Roman')
set(gca,'linewidth',1);



% 
figure() 
imagesc(t,f, abs(tfrsq)); 
set(gca,'ydir','normal');
xlabel('Time(s)','FontSize',12,'FontName','Times New Roman');
ylabel('Frequency(Hz)','FontSize',12,'FontName','Times New Roman');
set(gca,'FontSize',16,'FontName','Times New Roman')
set(gca,'linewidth',1);

同步壓縮變換核心代碼

function [tfr, tfrsq, tfrtic, tfrsqtic] = sqCWT(t, x, freqlow, freqhigh, alpha, opts);

%
% Synchrosqueezing transform ver 0.5 (2015-03-09)
% You can find more information in 
%	http://sites.google.com/site/hautiengwu/
%
% Example: [~, tfrsq, ~, tfrsqtic] = sqCWT(time, xm, lowfreq, highfreq, alpha, opts);
%	time: 	time of the signal
%	xm: 	the signal to be analyzed
%	[lowfreq, highfreq]: the frequency range in the output time-frequency representation. For the sake of computational efficiency.
%	alpha:	the frequency resolution in the output time-frequency representation
%	opts:	parameters for the CWT analysis. See below
%	tfr/tfrtic:	the CWT and its scale tic
%	tfrsq/tfrsqtic: the SST-CWT and its frequency tic
%
% by Hau-tieng Wu v0.1 2011-06-20 (hauwu@math.princeton.edu)
%		  v0.2 2011-09-10
%		  v0.3 2012-03-03
%		  v0.4 2012-12-12
%		  v0.5 2015-03-09

	%% you can play with these 4 parameters, but the results might not be
	%% that different if the change is not crazy
Gamma = 1e-8;
nvoice = 32;
scale = 2;
oct = 1;

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
noctave = floor(log2(length(x))) - oct;
dt = t(2) - t(1);

    
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    %% Continuous wavelet transform 

[tfr, tfrtic] = CWT(t, x, oct, scale, nvoice, opts) ;
% tfr=tfr';
% tfrtic=tfrtic';
%行時(shí)間,列尺度
Dtfr = (-i/2/pi/dt)*[tfr(2:end,:) - tfr(1:end-1,:); tfr(end,:)-tfr(end-1,:)] ;
% Dtfr=(-1i/2/pi/dt)*[tfr(:,2:end)-tfr(:,1:end-1) tfr(:,end)-tfr(:,end-1)] /(dt);
Dtfr((abs(tfr) < Gamma)) = NaN;
omega = Dtfr./tfr;

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	%% Synchro-squeezing transform

[tfrsq, tfrsqtic] = SQ(tfr, omega, alpha, scale, nvoice, freqlow, freqhigh);
tfr = transpose(tfr) ;
tfrsq = transpose(tfrsq) ;    

end



%=====================================================================
	%% function for CWT-based SST
function [tfrsq, freq] = SQ(tfd, omega, alpha, scale, nvoice, freqlow, freqhigh);
omega = abs(omega);
[n, nscale] = size(tfd);

nalpha = floor((freqhigh - freqlow)./alpha);
tfrsq = zeros(n, nalpha);
freq = ([1:1:nalpha])*alpha + freqlow;
nfreq = length(freq);
	
for b = 1:n             %% Synchro-
    for kscale = 1: nscale       %% -Squeezing

%         qscale = scale .* (2^(kscale/nvoice));
        qscale = scale .* (2^(kscale/nvoice));

        if (isfinite(omega(b, kscale)) && (omega(b, kscale)>0))
            k = floor( ( omega(b,kscale) - freqlow )./ alpha )+1;

            if (isfinite(k) && (k > 0) && (k < nfreq-1))
	        ha = freq(k+1)-freq(k);
                tfrsq(b,k) = tfrsq(b,k) + log(2)*tfd(b,kscale)*sqrt(qscale)./ha/nvoice;
            end
        end
    end
end   
end

小波變換代碼

function [tfr, tfrtic] = newOmega(t, x, oct, scale, nvoice, opts)
%
% Continuous wavelet transform ver 0.1
% Modified from wavelab 85
%
% INPUT:
% OUTPUT:
% DEPENDENCY:
%
% by Hau-tieng Wu 2011-06-20 (hauwu@math.princeton.edu)
% by Hau-tieng Wu 2012-12-23 (hauwu@math.princeton.edu)
%

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%% prepare for the input

if nargin < 6
    opts = struct();
    opts.motherwavelet = 'Cinfc' ;
    opts.CENTER = 1 ;
    opts.FWHM = 0.3 ;
end

if nargin < 5
    nvoice = 32;
end

if nargin < 4
    scale = 2;
end

if nargin < 3
    oct = 1;
end




%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    %% start to do CWT

dt = t(2)-t(1);
n = length(x);
    %% assume the original signal is on [0,L].
    %% assume the signal is on [0,1]. Frequencies are rescaled to \xi/L
xi = [(0:(n/2)) (((-n/2)+1):-1)]; xi = xi(:);
xhat = fft(x);

noctave = floor(log2(n)) - oct;
tfr = zeros(n, nvoice .* noctave);
kscale = 1;

tfrtic = zeros(1, nvoice .* noctave);
for jj = 1 : nvoice .* noctave
    tfrtic(jj) = scale .* (2^(jj/nvoice));
end

for jo = 1:noctave	% # of scales
    for jv = 1:nvoice

    	qscale = scale .* (2^(jv/nvoice));
    	omega =  xi ./ qscale ;            

        if strcmp(opts.motherwavelet, 'morse');
            
			error('To use Morse wavelet, you have to download it...') ;
	                
        elseif strcmp(opts.motherwavelet, 'Cinfc');

            tmp0 = (omega-opts.CENTER)./opts.FWHM;
            tmp1 = (tmp0).^2-1;

            windowq = exp( 1./tmp1 );
            windowq( find( omega >= (opts.CENTER+opts.FWHM) ) ) = 0;
            windowq( find( omega <= (opts.CENTER-opts.FWHM) ) ) = 0;

        elseif strcmp(opts.motherwavelet, 'morlet')

            windowq = 4*sqrt(pi)*exp(-4*(omega-0.69*pi).^2)-4.89098d-4*4*sqrt(pi)*exp(-4*omega.^2);

        elseif strcmp(opts.motherwavelet, 'gaussian');

            psihat = @(f) exp( -log(2)*( 2*(f-opts.CENTER)./opts.FWHM ).^2 );
            windowq = psihat(omega);


        elseif strcmp(opts.motherwavelet, 'meyer');  %% Meyer

            windowq = zeros(size(omega));
            int1 = find((omega>=5./8*0.69*pi)&(omega<0.69*pi));
            int2 = find((omega>=0.69*pi)&(omega<7./4*0.69*pi));
            windowq(int1) = sin(pi/2*meyeraux((omega(int1)-5./8*0.69*pi)/(3./8*0.69*pi)));
            windowq(int2) = cos(pi/2*meyeraux((omega(int2)-0.69*pi)/(3./4*0.69*pi)));

        elseif strcmp(opts.motherwavelet, 'BL3');    %% B-L 3

            phihat = (2*pi)^(-0.5)*(sin(omega/4)./(omega/4)).^4; phihat(1) = (2*pi)^(-0.5);
            aux1 = 151./315 + 397./840*cos(omega/2) + 1./21*cos(omega) + 1./2520*cos(3*omega/2);
            phisharphat = phihat.*(aux1.^(-0.5));

            aux2 = 151./315 - 397./840*cos(omega/2) + 1./21*cos(omega) - 1./2520*cos(3*omega/2);
            aux3 = 151./315 + 397./840*cos(omega) + 1./21*cos(2*omega) + 1./2520*cos(3*omega);
            msharphat = sin(omega/4).^4.*(aux2.^(0.5)).*(aux3.^(-0.5));
            windowq = phisharphat.*msharphat.*exp(i*omega/2).*(omega>=0);

	end

        windowq = windowq ./ sqrt(qscale);

        what = windowq .* xhat;

        w = ifft(what);
        tfr(:,kscale) = transpose(w);
        kscale = kscale+1;

    end

    scale = scale .* 2;

end


%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    %% calculate the constant for reconstruction
    %% TODO: calculate Rpsi for other mother wavelets
xi = [0.05:1/10000:10];
    
if strcmp(opts.motherwavelet, 'gaussian');   %% Gaussian (not really wavelet)

    psihat = @(f) exp( -log(2)*( 2*(f-opts.CENTER)./opts.FWHM ).^2 );
    windowq = psihat(xi);
    Rpsi = sum(windowq./xi)/10000;


elseif strcmp(opts.motherwavelet, 'morlet');

    windowq = 4*sqrt(pi)*exp(-4*(xi-0.69*pi).^2)-4.89098d-4*4*sqrt(pi)*exp(-4*xi.^2);
    Rpsi = sum(windowq./xi)/10000;

elseif strcmp(opts.motherwavelet, 'Cinfc');

    tmp0 = (xi - opts.CENTER)./opts.FWHM;
    tmp1 = (tmp0).^2-1;

    windowq = exp( 1./tmp1 );
    windowq( find( xi >= (opts.CENTER+opts.FWHM) ) ) = 0;
    windowq( find( xi <= (opts.CENTER-opts.FWHM) ) ) = 0;
    Rpsi = sum(windowq./xi)/10000;
 
else
	
	fprintf('Normalization is not implemented for Other mother wavelets, like BL3 and Meyer\n') ;	
  
end


tfr = tfr ./ Rpsi;


end

實(shí)驗(yàn)結(jié)果

第一個(gè)為小波結(jié)果,第二個(gè)為同步壓縮小波變換結(jié)果。同步壓縮小波變換將小波系數(shù)擠壓到瞬時(shí)頻率處,所以它具有更加聚集的能量。小波變換的瑞利熵結(jié)果為13.1316,同步壓縮小波變換的瑞利熵結(jié)果為8.8856。
同步壓縮小波變換,時(shí)頻分析,信號(hào)處理,matlab,時(shí)頻表示,算法同步壓縮小波變換,時(shí)頻分析,信號(hào)處理,matlab,時(shí)頻表示,算法

[1] 何周杰. 同步變換理論、方法及其在工程信號(hào)分析中的應(yīng)用[D].上海交通大學(xué), 2020.
[2] ] I. Daubechies, J. Lu, H.-T. Wu, Synchrosqueezed wavelet transforms: an empirical mode decomposition-like tool, Appl. Comput. Harmon. Anal. 30 (2) (2011)243–261.文章來源地址http://www.zghlxwxcb.cn/news/detail-568602.html

到了這里,關(guān)于基于小波變換的同步壓縮變換原理和Matlab代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 135基于matlab的經(jīng)驗(yàn)小波變換(EWT)的自適應(yīng)信號(hào)處理方法

    135基于matlab的經(jīng)驗(yàn)小波變換(EWT)的自適應(yīng)信號(hào)處理方法

    基于matlab的經(jīng)驗(yàn)小波變換(EWT)的自適應(yīng)信號(hào)處理方法.其核心思想是通過對(duì)信號(hào)的Fourier譜進(jìn)行自適應(yīng)劃分,建立合適的小波濾波器組來提取信號(hào)不同的成分,EWT1D和EWT2D方法。程序已調(diào)通,可直接運(yùn)行。 135matlab信號(hào)處理EWT (xiaohongshu.com)

    2024年01月17日
    瀏覽(23)
  • 從傅里葉變換,到短時(shí)傅里葉變換,再到小波分析(CWT),看這一篇就夠了(附MATLAB傻瓜式實(shí)現(xiàn)代碼)

    從傅里葉變換,到短時(shí)傅里葉變換,再到小波分析(CWT),看這一篇就夠了(附MATLAB傻瓜式實(shí)現(xiàn)代碼)

    本專欄中講了很多時(shí)頻域分析的知識(shí),不過似乎還沒有講過時(shí)頻域分析是怎樣引出的。 所以本篇將回歸本源,講一講從傅里葉變換→短時(shí)傅里葉變換→小波分析的過程。 為了讓大家更直觀得理解算法原理和推導(dǎo)過程,這篇文章將主要使用圖片案例。 頻譜分析可以告訴我們一

    2024年01月16日
    瀏覽(27)
  • 基于小波時(shí)頻圖和2D-CNN的滾動(dòng)軸承故障檢測

    基于小波時(shí)頻圖和2D-CNN的滾動(dòng)軸承故障檢測

    目錄 一、研究思路 ?1、基于小波時(shí)頻圖和CNN的滾軸故障診斷方法的研究思路如下: 二、數(shù)據(jù)集介紹與數(shù)據(jù)處理 ? 1、數(shù)據(jù)集介紹 2、數(shù)據(jù)集分割與合并 3、數(shù)據(jù)集分析 三、小波時(shí)頻圖導(dǎo)出 四、CNN網(wǎng)絡(luò)的構(gòu)建和測試 1、CNN網(wǎng)絡(luò)構(gòu)建 ?2、訓(xùn)練參數(shù)的優(yōu)化 4、訓(xùn)練結(jié)果 ?1、基于小

    2023年04月19日
    瀏覽(19)
  • matlab小波變換、離散小波變換函數(shù)使用

    matlab小波變換、離散小波變換函數(shù)使用

    matlab中,連續(xù)小波變換、離散小波變換函數(shù)使用比較復(fù)雜,最近做了個(gè)總結(jié)。 參考1:https://www.jianshu.com/p/56733f6c0a10 參考2:小波變換工具箱(7頁)-原創(chuàng)力文檔 參考3:《Matlab信號(hào)處理》 沈再陽,清華大學(xué)出版社,第8章 注意:以下所有函數(shù)均為matlab 2020a環(huán)境中測試,更早的版

    2024年02月02日
    瀏覽(27)
  • 【語音隱寫】基于matlab小波變換結(jié)合奇異值分解DWT-SVD音頻數(shù)字水印嵌入提取(含PSNR NC)【含Matlab源碼 3889期】

    【語音隱寫】基于matlab小波變換結(jié)合奇異值分解DWT-SVD音頻數(shù)字水印嵌入提?。ê琍SNR NC)【含Matlab源碼 3889期】

    ?博主簡介:熱愛科研的Matlab仿真開發(fā)者,修心和技術(shù)同步精進(jìn),Matlab項(xiàng)目合作可私信。 ??個(gè)人主頁:海神之光 ??代碼獲取方式: 海神之光Matlab王者學(xué)習(xí)之路—代碼獲取方式 ??座右銘:行百里者,半于九十。 更多Matlab仿真內(nèi)容點(diǎn)擊?? Matlab圖像處理(進(jìn)階版) 路徑規(guī)劃

    2024年02月21日
    瀏覽(25)
  • Matlab實(shí)現(xiàn)小波變換

    文章和代碼以及樣例圖片等相關(guān)資源,已經(jīng)歸檔至【Github倉庫:digital-image-processing-matlab】或者公眾號(hào)【AIShareLab】回復(fù) 數(shù)字圖像處理 也可獲取。 Haar、尺度和小波函數(shù); 比較函數(shù)wavefast 和函數(shù)wavedec2 的執(zhí)行時(shí)間; 小波的方向性和邊緣檢測。 Haar、尺度和小波函數(shù) 使用haar 濾波

    2024年02月07日
    瀏覽(26)
  • 9-1小波變換 小波分解和重構(gòu)(matlab程序)

    9-1小波變換 小波分解和重構(gòu)(matlab程序)

    1. 簡述 ? ? ?? 一、小波處理信號(hào)的一般過程 1)取樣:這是一個(gè)預(yù)處理步驟。若信號(hào)連續(xù),那么必須以能夠捕獲原信號(hào)必要細(xì)節(jié)的速率取樣。不同的應(yīng)用決定了不同的取樣率。如:原信號(hào)的細(xì)節(jié)頻率為20kHz,由Nyquist采樣定理,此時(shí)的取樣率至少應(yīng)為細(xì)節(jié)頻率的兩倍,即40kH

    2024年02月11日
    瀏覽(26)
  • Matlab小波變換-音頻去噪

    Matlab小波變換-音頻去噪

    小波變換-音頻去噪 使用小波變換進(jìn)行音頻去噪,實(shí)驗(yàn)環(huán)境:Matlab 推薦課程:數(shù)字信號(hào)處理(北京交通大學(xué) 陳后金) 第八章內(nèi)容 B站鏈接:https://www.bilibili.com/video/BV1at411Q75D?p=101 (慕課上也有) 一、原音頻加噪 二、sym8小波去噪 也不一定非選這個(gè)sym8,也可以選其他的小波,matl

    2024年02月11日
    瀏覽(29)
  • Matlab 透視變換 原理及其代碼實(shí)現(xiàn)

    Matlab 透視變換 原理及其代碼實(shí)現(xiàn)

    透視變換本質(zhì) :將一個(gè)圖像投影到新的視平面 透視變換思路: 將二維坐標(biāo)系轉(zhuǎn)換為三維坐標(biāo)系。 將三維坐標(biāo)系投影到新的二維坐標(biāo)系。 該過程屬于非線性變換過程,一個(gè)菱形在經(jīng)過非線性變換后得到一個(gè)四邊形,但是不在平行。 透視變換又可以稱為投影變換,仿射變換屬

    2024年02月04日
    瀏覽(20)
  • 類EMD的“信號(hào)分解方法”及MATLAB實(shí)現(xiàn)(第八篇)——離散小波變換DWT(小波分解)

    類EMD的“信號(hào)分解方法”及MATLAB實(shí)現(xiàn)(第八篇)——離散小波變換DWT(小波分解)

    在之前的系列文章里,我們介紹了EEMD、CEEMD、CEEMDAN、VMD、ICEEMDAN、LMD、EWT,我們繼續(xù)補(bǔ)完該系列。 今天要講到的是小波分解,通常也就是指離散小波變換(Discrete Wavelet Transform, DWT)。在網(wǎng)上有一些介紹該方法的文章,但是總感覺不夠通俗或不夠透徹,希望讀完這篇能讓你有

    2024年02月07日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包