⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cwvt.m

📁 数字信号处理的视频分析中短时傅立叶变化STFT和连续小波变化CWT和离散小波变换DWT的算法源程序,在实际中已应用,
💻 M
字号:
% Project 2% Time-Frequency Representations% Andy Doran% % function coeffs = cwvt(sigin,scale,quiet)%% sigin  = sampled input signal (Should be a row vector)% scale  = number of real, positive scale you want (1:scales)% quiet  = plot suppression%          1 -> suppress all plots%          2 -> suppress wavelet plots only%          3 -> suppress scalogram only% coeffs = scales-by-length(sigin) matrix returning CWT of sigin at%          each scale from 1 to scale%% This function takes an input signal and computes the Continuous Wavelet% Transform at different scales using a sampled Morlet Wavelet%% Morelet Wavelet w(t) = (1/sigma*K)*exp-((sigma*t)^2)*cos(2*pi*fo*t)function coeffs = cwvt(sigin,scale,quiet)sigma = 0.05;    % Morlet Wavelet bandwidthfo = 0.2;        % Center frequency of WaveletK = 1;           % Not sure what this is, so set to 1M = length(sigin);coeffs = zeros(scale,M);for k=1:scale,    t=(-M/2:M/2-1);    % Calculate Morelet Wavelet w=e-(at^2)*cos(2*pi*fo*t)    const = 1/(sigma*K*sqrt(k));    e = exp(-((sigma*t/k).^2));    phase = cos(2*pi*fo*t/k);    w = const*e.*phase;    % Plot wavelet in time domain and frequency domain    if ((quiet ~= 1) & (quiet ~= 2))      figure(3)      if (k == 1)  % Clear plot on initial run-through        clf      end      subplot(3,2,(2*k)-1)      plot(w)      txt = ['Morlet Wavelet at scale ', num2str(k)];      title(txt)      %figure(4)      %if (k == 1)  % Clear plot on initial run-through      %  clf      %end      subplot(3,2,2*k)      plot(abs(fft(w)))      txt = ['Frequency Spectra of Morlet Wavelet at scale ', num2str(k)];      title(txt)   end    % Calculate CWT of sigin using circular convolution    coeffs(k,:)=ifft(fft(w).*fft(sigin));end% Coeffs should be real anyway, this just accounts for numerical error% in circular convolution that may give small imaginary partscoeffs = real(coeffs);% Plot scalogram and check against MATLAB's CWT routineif ((quiet ~= 1) & (quiet ~= 3))  figure(1)  clf  imagesc(coeffs);  axis xy;  txt = ['|C(t,s)| for s = 1 to ' num2str(scale)];  title(txt)  ylabel('s')  xlabel('t')  figure(2)  clf  cwt(sigin,1:scale,'morl','plot');  % Call MATLAB's CWT routine  title('CWT Output from MATLAB')end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -