Time series decomposition | Matlab implements CPO-VMD to optimize VMD variational mode decomposition time series signal decomposition based on the Crowned Porcupine Optimization Algorithm (CPO)

Time series decomposition | Matlab implements CPO-VMD to optimize VMD variational mode decomposition time series signal decomposition based on the Crowned Porcupine Optimization Algorithm (CPO)

Effect list

Insert image description here

basic introduction

[Original] CPO-VMD [24-year new algorithm]
Crowned Porcupine Optimization Algorithm (CPO) optimizes VMD variational mode decomposition.
Implementation platform: Matlab, with clear Chinese annotations, very suitable for scientific research novices.
Crested Porcupine Optimizer (CPO) was published in January 2024 in Knowledge-Based Systems, a SCI journal in Area 1 of the Chinese Academy of Sciences. No one is currently using it, so it’s perfect for innovation! [Shining] You are the first to use it!
Model running steps:
1. Use the crowned porcupine optimization algorithm to optimize the parameters k and a in VMD, and the fitness function is envelope entropy. The decomposition effect is good, including decomposition effect diagrams, frequency diagrams, convergence curves and other diagrams.
2. The Crowned Porcupine Optimization Algorithm CPO is a new algorithm recently proposed in 24 years, and no one has ever used it. Suitable as an innovation point.
3. With test data included, you can run main directly to generate a picture with one click.

programming

  • Complete source code and data acquisition method. Private message blogger's reply: Matlab implements CPO-VMD based on the Crowned Porcupine Optimization Algorithm (CPO) to optimize VMD variational mode decomposition time series signal decomposition .
[x, y] = size(signal);
if x > y
	C = y;% number of channels
    T = x;% length of the Signal
	signal = signal';
else
	C = x;% number of channels
    T = y;% length of the Signal
end
%---------- Preparations
% Sampling Frequency
fs = 1/T;

% Mirroring
f(:,1:T/2) = signal(:,T/2:-1:1);
f(:,T/2+1:3*T/2) = signal;
f(:,3*T/2+1:2*T) = signal(:,T:-1:T/2+1);
% Time Domain 0 to T (of mirrored signal)
T = size(f,2);
t = (1:T)/T;
% frequencies
freqs = t-0.5-1/T;
% Construct and center f_hat
f_hat = fftshift(fft(f,[],2),2);
f_hat_plus = f_hat;
f_hat_plus(:,1:T/2) = 0;

%------------ Initialization
% Maximum number of iterations 
N = 500;
% For future generalizations: individual alpha for each mode
Alpha = alpha*ones(1,K);
% matrix keeping track of every iterant 
u_hat_plus_00 = zeros(length(freqs), C, K);
u_hat_plus = zeros(length(freqs), C, K);
omega_plus = zeros(N, K);
% initialize omegas uniformly
switch init
	case 1
        omega_plus(1,:) = (0.5/K)*((1:K)-1);
    case 2
        omega_plus(1,:) = sort(exp(log(fs) + (log(0.5)-log(fs))*rand(1,K)));
    otherwise
        omega_plus(1,:) = 0;
end

References

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

Guess you like

Origin blog.csdn.net/kjm13182345320/article/details/135428123