✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
⛳️ 运行结果
一、研究背景
- 分数阶微积分的兴起 :分数阶微积分作为传统整数阶微积分的拓展,近年来在众多领域展现出独特优势。与整数阶微积分相比,它能更精准地刻画具有记忆和遗传特性的复杂系统。在物理、化学、生物医学、工程等领域,许多现象无法用整数阶微积分准确描述,而分数阶微积分提供了更强大的数学工具。例如,在粘弹性材料研究中,分数阶导数可有效描述材料的应力 - 应变关系,因其能捕捉材料对过去历史状态的依赖性。
- 信号处理的需求 :在信号处理领域,随着技术发展,对信号特征提取和分析的精度要求不断提高。传统整数阶导数在处理复杂信号时存在局限性,难以充分挖掘信号中的隐藏信息。而分数阶导数能够捕捉信号的非局部特性和长期依赖性,为信号处理提供新的视角。例如,在生物医学信号处理中,脑电图(EEG)和心电图(ECG)信号包含丰富的生理信息,分数阶导数有助于提取这些信号的细微特征,辅助疾病诊断。
二、高斯函数与 Caputo - Fabrizio 分数阶导数
- 高斯函数 :高斯函数因其良好的数学性质和广泛的物理意义,在信号处理中应用广泛。其表达式为
编辑
- Caputo - Fabrizio 分数阶导数 :Caputo - Fabrizio 分数阶导数是分数阶导数的一种定义形式,与其他分数阶导数定义相比,它在处理实际问题时具有一些独特优势。其定义基于指数核函数,这使得在求解分数阶微分方程时,相较于传统的基于幂律核的分数阶导数,计算过程可能更简便,且在描述具有有限记忆特性的系统时更为合适。例如,在一些涉及材料老化或生物系统动态变化的问题中,Caputo - Fabrizio 分数阶导数能够更好地反映系统对近期历史状态的依赖性。
三、基于高斯函数的 Caputo - Fabrizio 分数阶导数闭式表达式推导
- 理论基础 :推导基于高斯函数的 Caputo - Fabrizio 分数阶导数闭式表达式,需要综合运用分数阶微积分理论、高斯函数的数学性质以及相关的积分变换方法(如拉普拉斯变换)。通过对 Caputo - Fabrizio 分数阶导数定义式与高斯函数进行积分运算,并利用拉普拉斯变换的性质,将时域中的复杂积分转化为频域中的代数运算,从而简化计算过程。
- 推导过程 :首先,根据 Caputo - Fabrizio 分数阶导数的定义,对高斯函数进行分数阶求导运算。在运算过程中,利用高斯函数的导数性质以及指数函数的积分特性,逐步化简积分表达式。然后,通过巧妙的变量代换和数学变换,结合拉普拉斯变换对积分进行求解。经过一系列严格的数学推导和化简,最终得到基于高斯函数的 Caputo - Fabrizio 分数阶导数的闭式表达式。这个闭式表达式为进一步研究高斯函数在分数阶微积分框架下的性质以及在信号处理中的应用提供了基础。
四、在信号处理中的应用
- 特征提取 :在信号处理中,基于高斯函数的 Caputo - Fabrizio 分数阶导数闭式表达式可用于提取信号的独特特征。由于分数阶导数能够捕捉信号的非局部和长期依赖特性,结合高斯函数的平滑和局部化特性,可以有效地提取信号中的细节信息。例如,在语音信号处理中,通过计算语音信号与基于高斯函数的 Caputo - Fabrizio 分数阶导数的卷积,能够突出语音信号中的特定频率成分和相位变化,有助于语音识别和情感分析。
- 滤波与降噪 :该闭式表达式还可应用于信号的滤波与降噪。将其作为滤波器的核函数,与噪声污染的信号进行卷积运算。高斯函数的平滑特性能够抑制高频噪声,而 Caputo - Fabrizio 分数阶导数的非局部特性可以在降噪的同时保留信号的重要结构信息。例如,在图像去噪中,基于此闭式表达式设计的滤波器能够在去除高斯噪声的同时,更好地保留图像的边缘和纹理细节,相较于传统的整数阶导数滤波器,能够提供更清晰、更准确的图像恢复效果。
编辑
编辑
编辑
编辑
📣 部分代码
function [out1,out2, out3] = fracmexihat(LB,UB,N,label)
%MEXIHAT Mexican hat wavelet.
% [PSI,X] = MEXIHAT(LB,UB,N) returns values of
% the Mexican hat wavelet on an N point regular
% grid in the interval [LB,UB].
% Output arguments are the wavelet function PSI
% computed on the grid X.
%
% This wavelet has [-5 5] as effective support.
%
% See also WAVEINFO.
if nargin < 4,
label = 'fmxh2.00';
if nargin < 3,
N = 168;
if nargin < 2,
UB = 8;
if nargin < 1,
LB = -5;
end
end
end
end
%[LB,UB,N,label] = deal(varargin{:});
ind = strncmpi('fmxh',label,4);
if isequal(ind,1) label(1:4) = []; end
nu = str2double(deblank(label));
if isempty(nu) error('** fmxh: Invalid wavelet number!'); end
if (nu <= 0) || (nu > 6)
error('** fmxh: Invalid value for nu **')
end
% Prepare some variables : Mean, StDev and out2
mu = 10; %(UB - LB)/2;
sigma = 1; %(UB - LB)/2/5; % due 5 * sigma
out2 = linspace(LB,UB,N);
t = out2 + mu;
% Set a default value for nu+v = 2
%if nargin < 5, nu = 2; end
%% Obtain parameters for the calculation of (0 < nu < 1)-order derivative
nux = nu - floor(nu);
alpha = nux./(1 - nux);
par1 = -(t - mu - sigma^2.*alpha/2).*alpha;
par3 = (mu/sigma + sigma.*alpha)/sqrt(2);
par2 = t/sigma/sqrt(2) - par3;
% Explicit PseudoGaussian Integrals (mu - x)
fcn = @(x, a1, t1) exp(-(x.*x - 2*x.*(mu+sigma^2.*a1)+mu^2+2*sigma^2.*a1.*t1)/2/sigma^2);
% for K = 1 : m
Y = nan(1,N);
for ic = 1 : N,
Y(1,ic) = integral(@(x) fcn(x,alpha,t(1,ic)), 0, t(1,ic));
end
% Obtain the fractional part
K1 = sqrt(1/2/pi)*(1+alpha);
Df1 = K1.*(exp(par1-par2.^2)-exp(par1-par3.^2))/sigma;
Df2 = K1.*alpha.*Y/sigma;
Df = Df1-Df2;
% Find first and second ordinary derivatives
dG1 = (exp(-(mu - t).^2/(2*sigma^2)).*(2*mu - 2*t))/(2*sigma^3*sqrt(2*pi));
dG2 = -(exp(-(mu - t).^2/(2*sigma^2)).*(- mu^2 + 2*mu*t + sigma^2 - t.^2))/sigma^5/sqrt(2*pi);
dG3 = -(exp(-(mu - t).^2/(2*sigma^2)).*(mu - t).*(- mu^2 + 2*mu*t + 3*sigma^2 - t.^2))/sigma^7/sqrt(2*pi);
dG4 = (exp(-(mu - t).^2/(2*sigma^2)).*(mu^4 - 4*mu^3*t - 6*mu^2*sigma^2 + 6*mu^2*t.^2 + 12*mu*sigma^2*t - 4*mu*t.^3 + 3*sigma^4 - 6*sigma^2*t.^2 + t.^4))/sigma^9/sqrt(2*pi);
dG5 = (exp(-(mu - t).^2/(2*sigma^2)).*(mu - t).*(mu^4 - 4*mu^3*t - 10*mu^2*sigma^2 + 6*mu^2*t.^2 + 20*mu*sigma^2*t - 4*mu*t.^3 + 15*sigma^4 - 10*sigma^2*t.^2 + t.^4))/sigma^11/sqrt(2*pi);
dG6 = -(exp(-(mu - t).^2/(2*sigma^2)).*(- mu^6 + 6*mu^5*t + 15*mu^4*sigma^2 - 15*mu^4*t.^2 - 60*mu^3*sigma^2*t + 20*mu^3*t.^3 - 45*mu^2*sigma^4 + 90*mu^2*sigma^2*t.^2 - 15*mu^2*t.^4 + 90*mu*sigma^4*t - 60*mu*sigma^2*t.^3 + 6*mu*t.^5 + 15*sigma^6 - 45*sigma^4*t.^2 + 15*sigma^2*t.^4 - t.^6))/sigma^13/sqrt(2*pi);
% Find the high order fractional derivative
switch floor(nu)
case 1
dy = (alpha + 1)*dG1 - alpha*Df;
case 2
dy = (alpha + 1)*((-alpha)*dG1 + dG2) + (- alpha)^2*Df;
case 3
dy = (alpha + 1)*((-alpha)^2*dG1 + (-alpha)*dG2 + dG3) + (- alpha)^3*Df;
case 4
dy = (alpha + 1)*((-alpha)^3*dG1 + (-alpha)^2*dG2 + (-alpha)*dG3 + dG4) + (- alpha)^4*Df;
case 5
dy = (alpha + 1)*((-alpha)^4*dG1 + (-alpha)^3*dG2 + (-alpha)^2*dG3 + (-alpha)*dG4 + dG5) + (- alpha)^5*Df;
case 6
dy = (alpha + 1)*((-alpha)^5*dG1 + (-alpha)^4*dG2 + (-alpha)^3*dG3 + (-alpha)^2*dG4 + (-alpha)*dG5 + dG6) + (- alpha)^6*Df;
end
% Compute values of the Mexican hat wavelet.
out1 = -dy;
out1 = out1/(max(out1));
out3 = dy/max(dy);
🔗 参考文献
J. M. Cruz-Duarte, J. Rosales-Garcia, C. R. Correa-Cely, A. Garcia-Perez, and J. G. Avina-Cervantes, “A closed form expression for the Gaussian–based Caputo–Fabrizio fractional derivative for signal processing applications,” Communications in Nonlinear Science and Numerical Simulation, vol. 61, pp. 138–148, 2018, doi: 10.1016/j.cnsns.2018.01.020.
🍅往期回顾扫扫下方二维码