• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: VMD  VMD_test  

资源简介

本文件是变分模态分解(Variational Mode Decomposition,VMD)的VMD_test文件

资源截图

代码片段和文件信息

clear all;
close all;
clc;

% Time Domain 0 to T
T = 1000;
fs = 1/T;
t = (1:T)/T;
freqs = 2*pi*(t-0.5-1/T)/(fs);

% center frequencies of components
f_1 = 2;
f_2 = 24;
f_3 = 288;

% modes
v_1 = (cos(2*pi*f_1*t));
v_2 = 1/4*(cos(2*pi*f_2*t));
v_3 = 1/16*(cos(2*pi*f_3*t));

% for visualization purposes
fsub = {};
wsub = {};
fsub{1} = v_1;
fsub{2} = v_2;
fsub{3} = v_3;
wsub{1} = 2*pi*f_1;
wsub{2} = 2*pi*f_2;
wsub{3} = 2*pi*f_3;

% composite signal including noise
f = v_1 + v_2 + v_3 + 0.1*randn(size(v_1));
f_hat = fftshift((fft(f)));

% some sample parameters for VMD
alpha = 2000;        % moderate bandwidth constraint
tau = 0;            % noise-tolerance (no strict fidelity enforcement)
K = 3;              % 3 modes
DC = 0;             % no DC part imposed
init = 1;           % initialize omegas uniformly
tol = 1e-7;


%--------------- Run actual VMD code

[u u_hat omega] = VMD(f alpha tau K DC init tol);

%--------------- Visualization

% For convenience here: Order omegas increasingly and reindex u/u_hat
[~ sortIndex] = sort(omega(end:));
omega = omega(:sortIndex);
u_hat = u_hat(:sortIndex);
u = u(sortIndex:);
linestyles = {‘b‘ ‘g‘ ‘m‘ ‘c‘ ‘c‘ ‘r‘ ‘k‘};

figure(‘Name‘ ‘Composite input signal‘ );
plot(tf ‘k‘);
set(gca ‘XLim‘ [0 1]);

f

评论

共有 条评论