Matlab数学建模算法之小波神经网络详解

🔗 运行环境:Matlab

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

🔐#### 防伪水印——左手の明天 ####🔐

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天分享matlab数学建模算法——小波分析💗

📆  最近更新:2023 年 12 月 05 日,左手の明天的第 302 篇原创博客

📚 更新于专栏:matlab

🔐#### 防伪水印——左手の明天 ####🔐


一、小波神经网络

小波神经网络(Wavelet Neural Network,简称WNN)是基于小波变换理论构造而成,其原理与反向传播神经网络(BPNN)较为接近。最主要的特征是它的隐含层神经元激活函数为小波基函数,这一特性使其充分利用了小波变换的局部化性质和神经网络的大规模数据并行处理、自学习能力,因而具有较强的逼近能力和较快的收敛速度。

小波神经网络的结构图如下图所示:


二、小波分析

小波分析是一种强大的数学工具,它在信号处理、图像处理、量子力学等领域有着广泛的应用。小波变换是一种将信号分解成不同尺度的成分,以便更好地理解信号的特性的方法。

1、小波变换的定义

小波变换是一种信号分析方法,它可以将信号分解成不同尺度的成分。小波变换的基本思想是将信号投影到一组小波函数上,这组小波函数构成了小波基。小波基的特性是它们在时间和频率上都具有良好的局部性。这意味着小波基可以很好地捕捉信号中的局部特征,无论在高频还是低频部分。

小波变换的定义基于傅里叶变换和伸缩平移运算。它通过将信号与一组小波函数进行内积运算,得到信号在不同尺度下的投影。这些投影可以理解为信号在不同尺度下的细节和概貌。

2、小波变换的性质

小波变换具有一些重要的性质,包括:

(1) 适应性和多分辨率特性:小波变换可以适应不同尺度的信号,并能够同时处理高频和低频部分。这使得小波变换具有多分辨率特性,可以更好地分析信号的细节和概貌。

(2) 方向性和时间-频率局部性:小波基具有方向性和时间-频率局部性,这使得小波变换在处理信号时具有很好的局部性。它可以捕捉信号中的突变和边缘等局部特征,并提供关于这些特征的更多信息。

(3) 冗余性和压缩性:小波变换具有冗余性,这意味着它可以将信号分解成多个层次,每个层次都包含了信号的不同方面的信息。这种冗余性使得小波变换具有很好的压缩性,可以将信号压缩成更小的数据量。

3、小波变换的实现

小波变换的实现通常分为两步:首先是选择合适的小波基,然后是对信号进行小波分解和重构。选择合适的小波基需要考虑信号的特性和应用场景。常用的有小波基包括Daubechies小波基、Haar小波基、Morlet小波基等。

小波分解是将信号分解成多个层次的过程,每个层次都包含了信号的不同方面的信息。常用的有小波分解算法包括二进小波分解、多尺度小波分解等。重构是小波变换的逆过程,它可以根据小波分解的结果将信号恢复成原始形式。

4、小波变换的数学模型

小波变换的数学模型可以通过连续小波变换和离散小波变换表示。连续小波变换是对连续信号进行小波变换,可以用积分来表示。离散小波变换是对离散信号进行小波变换,可以用矩阵运算表示。

4.1 连续小波变换

连续小波变换的数学模型可以表示为:

W(a, b) = ∫f(t)ψ*[ (t-b)/a ] dt

其中,W(a, b)表示小波系数,f(t)表示原始信号,ψ(t)表示小波基函数,a和b分别表示尺度参数和平移参数。

4.2 离散小波变换

离散小波变换的数学模型可以表示为:

W(n, k) = ∑f(m)ψ*[ (m-k)/2^n ] 

其中,W(n, k)表示小波系数,f(m)表示原始信号,ψ(m)表示离散小波基函数,n表示尺度参数,k表示平移参数。

5、matlab实现小波变换

在MATLAB中进行小波分析的步骤如下:

  1. 准备数据:将待分析的信号数据准备好,可以是一个向量或一个矩阵。
  2. 选择小波类型:根据需要选择合适的小波类型,例如Daubechies小波、Haar小波、Morlet小波等。
  3. 进行小波分解:使用MATLAB中的小波分析函数,例如dwt()wavedec2(),对信号数据进行小波分解。这将会将信号分解成多个层次,每个层次都包含了信号的不同方面的信息。
  4. 分析小波系数:对分解后得到的小波系数进行分析,例如可以观察近似系数和细节系数的变化情况,从而得到信号在不同层次上的特征。
  5. 重构信号:如果需要,可以使用idwt()waverec2()函数对信号进行重构,得到原始信号。
  6. 计算相关统计量和特征量:根据需要,可以计算相关统计量和特征量,例如均方差、峰值等,以进一步分析信号的特征。

需要注意的是,在进行小波分析前,需要了解小波分析的基本原理和性质,以便更好地选择合适的小波类型和分解方式,以及正确地解释分析结果。

在MATLAB中进行小波分析,我们首先需要了解几个关键函数:

  1. dwt(): 这是进行一维小波单层分解的函数,它采用小波名称作为参数,返回近似系数和细节系数。
  2. wavdec(): 这是进行一维小波多层分解的函数,它可以将信号分解成多个层次。
  3. idwt(): 这是进行小波重构的函数,它采用近似系数和细节系数作为参数,返回重构后的信号。

下面是一个简单的例子,说明如何在MATLAB中使用小波分析:

% 创建信号
x = randn(1,100);
% 选择小波类型
wname = 'db1';
% 进行一维小波分解
[cA,cD] = dwt(x,wname);
% 进行小波重构
X = idwt(cA,cD,wname);

在这个例子中,首先创建了一个随机信号x。然后,选择了Daubechies小波('db1')进行小波分解。分解后,我们得到了近似系数cA和细节系数cD。最后,我们使用idwt()函数进行了小波重构,得到了重构后的信号X

注意:在进行小波重构时,必须使用与分解时相同的小波类型。

二维小波分析在图像处理中特别有用。在MATLAB中,你可以使用wavedec2()函数进行二维小波分解,使用waverec2()函数进行二维小波重构。二维小波分解和重构通常用于图像压缩、去噪等方面。


三、权值训练

小波神经网络(Wavelet Neural Network,简称WNN)是一种结合了小波变换和神经网络的复合体。它的权值训练一般通过以下步骤进行:

  1. 网络初始化:首先,对小波神经网络进行初始化,包括确定网络的结构、小波基函数的类型和参数、权值和阈值等。
  2. 输入数据学习:将已知的输入数据通过小波变换进行分解和重构,通过调整权值和阈值使得网络的输出尽可能接近目标输出。
  3. 误差反向传播:在每个训练周期结束后,计算网络输出和目标输出的误差,并将误差反向传播到网络中,根据误差调整权值和阈值。
  4. 权值更新:根据反向传播的误差,对网络的权值进行更新。一般采用梯度下降法或其他优化算法来更新权值。
  5. 重复学习:重复步骤2-4,直到网络的输出与目标输出之间的误差满足要求,或者达到预设的学习次数。

小波神经网络的权值训练过程与反向传播神经网络类似,都是通过不断调整权值和阈值来最小化网络输出与目标输出之间的误差。但是,小波神经网络的小波基函数具有更好的局部化性质和时频分析能力,因此可以更好地处理具有复杂特征的数据。


四、特征分析

小波神经网络利用小波基函数的性质进行特征分析主要表现在以下几个方面:

  1. 多尺度分析:小波神经网络可以通过多尺度分析,在不同尺度下提取信号的特征。小波基函数可以将信号分解成多个尺度的成分,每个尺度下的成分都包含了信号的不同频率信息和细节信息。
  2. 局部化分析:小波基函数具有局部化性质,可以捕捉信号的局部特征。通过小波神经网络对信号进行分解和重构,可以更好地提取信号中的局部特征,对于信号分类、识别等任务有很大的帮助。
  3. 方向选择性:小波基函数在时频域上具有方向选择性,可以更好地适应信号的变化。通过小波神经网络对信号进行分解和重构,可以更好地适应信号的变化,提高信号处理的准确性和鲁棒性。
  4. 非线性映射:小波基函数具有非线性映射的能力,可以将输入信号映射到高维空间中。通过小波神经网络对输入信号进行学习和映射,可以更好地表示输入信号的特征,提高分类和识别的准确性。

总之,小波神经网络利用小波基函数的性质进行特征分析,可以更好地提取信号的特征,提高信号处理的准确性和鲁棒性。


五、小波基函数

小波基函数是小波分析的核心组成部分,选择合适的小波基函数对于信号处理、图像处理、数值分析等领域的应用非常重要。在选择小波基函数时,需要考虑以下几个因素:

5.1 支撑长度(Support Length)

小波基函数的支撑长度是指在一定尺度下,小波基函数的非零部分所覆盖的信号长度。一般来说,支撑长度越长,小波基函数就越能捕捉到信号中的细节和特征,但同时也会增加计算的复杂性和内存消耗。因此,在选择小波基函数时,需要根据应用场景和硬件资源进行权衡。

常见的支撑长度有小波基函数的名称和对应的支撑长度(在MATLAB环境下):

  • Daubechies 2 (db2): 3
  • Daubechies 3 (db3): 4
  • Daubechies 4 (db4): 5
  • Daubechies 5 (db5): 6
  • Daubechies 6 (db6): 7
  • Daubechies 8 (db8): 9
  • Daubechies 12 (db12): 13
  • Daubechies 14 (db14): 15

5.2 紧支撑(Tight Support)

紧支撑是指小波基函数在时间和频率域中的局部化性质,即在小波变换的过程中,只有靠近输入信号的位置才会产生非零系数。选择具有紧支撑的小波基函数可以减少计算量和内存消耗,同时提高信号处理的效率和准确性。

在选择小波基函数时,需要考虑其紧支撑性质。一般来说,Daubechies系列小波基函数具有较好的紧支撑性质。此外,还可以根据应用场景和问题特点来选择具有合适支撑长度和紧支撑的小波基函数。例如,当处理信号的频率成分较为复杂时,可以选择支撑长度较长的小波基函数;当处理信号的时域特征较为重要时,可以选择具有较好紧支撑性质的小波基函数。

总之,选择合适的小波基函数需要考虑支撑长度和紧支撑等因素,同时结合具体的应用场景和问题特点进行选择。在MATLAB环境下,可以使用wfilters函数来查看不同小波基函数的性质和特点,以便选择合适的小波基函数进行应用。


六、小波神经网络实现过程

  • 步骤1:数据准备

首先,我们需要准备用于训练和测试的数据集。数据集应包含输入样本和对应的目标输出。确保数据集经过预处理和归一化处理,便于网络的训练和学习。

  • 步骤2:网络建立

使用MATLAB的神经网络工具箱,我们可以方便地建立小波神经网络。首先,定义网络的拓扑结构和参数配置,包括输入层、隐藏层和输出层的节点数,以及学习率、最大迭代次数等参数。

  • 步骤3:训练网络

使用训练数据集对小波神经网络进行训练。在MATLAB中,可以使用train函数来训练神经网络。通过设置训练选项,可以控制训练过程的细节和收敛性。

  • 步骤4:测试网络

使用测试数据集对训练好的小波神经网络进行测试,以评估其性能和泛化能力。在MATLAB中,可以使用sim函数来模拟网络的响应。通过比较网络的输出和目标输出,可以计算误差和评估网络的性能。

  • 步骤5:应用网络

使用训练好的小波神经网络对新的输入数据进行威胁评估。将新的输入数据输入到网络的输入层,通过隐藏层和输出层的计算,得到威胁评估结果。

以上是一个简单的小波神经网络实现过程。在实际应用中,可能需要根据具体情况进行适当的调整和优化。同时,也可以考虑使用其他工具或框架来实现小波神经网络,如MATLAB的Deep Learning Toolbox、Python的PyWavelets和Scikit-Learn等。


七、MATLAB实现的小波神经网络

以下是一个使用MATLAB实现的小波神经网络代码示例:

% 加载数据集
load iris_dataset
 
% 定义小波神经网络结构
net = newff(input, target, [10 1], {'logsig', 'purelin'}, 'trainlm');
 
% 设置训练参数
net.trainParam.epochs = 100;
net.trainParam.goal = 1e-5;
net.trainParam.show = 10;
net.trainParam.lr = 0.01;
net.trainParam.mc = 0.9;
 
% 训练网络
[net, tr] = train(net, input, target);
 
% 测试网络性能
output = net(input);
perf = perform(net, target, output);

在上述代码中,首先加载了鸢尾花数据集,并定义了一个具有10个隐层节点和1个输出节点的小波神经网络。使用了logsig激活函数作为隐层激活函数,并使用purelin激活函数作为输出层激活函数。然后,设置了网络的训练参数,包括最大迭代次数、目标误差、显示间隔、学习率和动量等。最后,使用train函数训练了网络,并使用perform函数评估了网络的性能。

function main()
clc;clear all;close all;
%用Mexihat函数作为样本输入和输出
x=0:0.03:3; %样本输入值
c=2/(sqrt(3).*pi.^(1/4));
d=1/sqrt(2);
u=x/2-1;
targ=d.*c.*exp(-u.^2/2).*(1-u.^2);  % 目标函数的样本输出值
eta=0.02;aerfa=0.735; %赋予网络学习速率和动量因子初始值
%初始化输出层和隐层的连接权wjh和隐层和输出层的连接权.
%假设小波函数节点数为H,样本数为P,输出节点数为J,输入节点数为I.
H=15;P=2;I=length(x);J=length(targ);
b=rand(H,1);a=rand(H,1); %初始化小波参数
whi=rand(I,H);wjh=rand(H,J); %初始化权系数;
b1=rand(H,1);b2=rand(J,1);%阈值初始化;
p=0;
Err_NetOut=[];%保存的误差;
flag=1;count=0;
while flag>0
flag=0;
count=count+1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xhp1=0;
for h=1:H
    for i=1:I
        xhp1=xhp1+whi(i,h)*x(i);
    end
ixhp(h)=xhp1+b1(h);
xhp1=0;
end
for h=1:H
oxhp(h)=fai((ixhp(h)-b(h))/a(h));
end
ixjp1=0;
for j=1:J
  for h=1:H
      ixjp1=ixjp1+wjh(h,j)*oxhp(h);
  end
ixjp(j)=ixjp1+b2(j);
ixjp1=0;
end
for i=1:J
oxjp(i)=fnn(ixjp(i));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wuchayy=1/2*sumsqr(oxjp-targ);
Err_NetOut=[Err_NetOut wuchayy];%保存每次的误差;
%求解小波网络运用BP算法,各参数每次学习的调整量
for j=1:J
detaj(j)=-(oxjp(j)-targ(j))*oxjp(j)*(1-oxjp(j));
end
for j=1:J
  for h=1:H
      detawjh(h,j)=eta*detaj(j)*oxhp(h);
  end
end
detab2=eta*detaj;
sum=0;
for h=1:H
  for j=1:J
      sum=detaj(j)*wjh(h,j)*diffai((ixhp(h)-b(h))/a(h))/a(h)+sum;
  end
detah(h)=sum;
sum=0;
end
for h=1:H
  for i=1:I
      detawhi(i,h)=eta*detah(h)*x(i);
  end
end
detab1=eta*detah;
detab=-eta*detah;
for h=1:H
detaa(h)=-eta*detah(h)*((ixhp(h)-b(h))/a(h));
end
%引入动量因子aerfa,加快收敛速度和阻碍陷入局部极小值.
wjh=wjh+(1+aerfa)*detawjh;
whi=whi+(1+aerfa)*detawhi;
a=a+(1+aerfa)*detaa';
b=b+(1+aerfa)*detab';
b1=b1+(1+aerfa)*detab1';
b2=b2+(1+aerfa)*detab2';
%本算法采用的是样本逐个处理而不是数据批处理
p=p+1;
if p~=P
flag=flag+1;
else
if Err_NetOut(end)>0.008
flag=flag+1;
else
figure;
plot(Err_NetOut);
xlabel('网络学习的次数');ylabel('网络输出的误差');
title('网络学习误差曲线','fontsize',20,'color',[0 1 1],'fontname','隶书');
end
end
if count>6000
figure(1);
subplot(1,2,1)
plot(Err_NetOut,'color','b','linestyle','-','linewidth',2.2,...
'marker','^','markersize',3.5);
xlabel('网络学习的次数');ylabel('网络输出的误差');
title('误差曲线','fontsize',20,'color',[1 1 1],'fontname','隶书');
subplot(1,2,2)
handle1=plot(x,targ,'color','r','linestyle','--','linewidth',2.2,...
'marker','p','markersize',3.5);
hold on
handle1=plot(x,oxjp,'color','g','linestyle','-.','linewidth',2.2,...
    'marker','d','markersize',3.5);
xlabel('样本输入值');ylabel('样本目标值与网络输出值');
title('目标值与网络输出值比较','fontsize',20,'color',[1 1 1],'fontname','隶书');
legend('样本目标值','网络仿真值');
break;
end
end
function y3=diffai(x)  %子程序
y3=-1.75*sin(1.75*x).*exp(-x.^2/2)-cos(1.75*x).*exp(-x.^2/2).*x;
function yl=fai(x)  %子程序
yl=cos(1.75.*x).*exp(-x.^2/2);
function y2=fnn(x)  %子程序
y2=1/(1+exp(-x));

八、小波神经网络应用场景

小波神经网络在许多应用场景上表现较好,以下是其中几个例子:

  1. 信号处理:小波神经网络可以用于信号压缩、分类、识别与诊断,去污等。在医学成像方面,可以减少B超、CT、核磁共振成像的时间,提高解析度等。
  2. 图像处理:小波神经网络在图像处理方面也有广泛的应用,包括图像压缩、分类、识别、去噪等。
  3. 信号分析:小波神经网络可以用于边界的处理与滤波、时频分析、信噪分离与提取弱信号、求分形指数、信号的识别与诊断以及多尺度边缘侦测等。
  4. 工程技术:小波神经网络在工程技术等方面也有应用,包括电脑视觉、电脑图形学、曲线设计、湍流、远端宇宙的研究与生物医学方面。

此外,小波神经网络还可以应用于模式识别、非线性映射、优化设计等领域。总之,小波神经网络具有广泛的应用前景,可以在不同领域中发挥其优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/233809.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux6-配置网络、源码包的编译和安装

配置 linux 网络 配置主机名 修改/etc/hostname 配置文件,永久配置主机名 [rootlocalhost ~]# vim /etc/hostname svr7.tedu.cn [rootlocalhost ~]# cat /etc/hostname svr7.tedu.cn [rootlocalhost ~]# reboot #重启生效命令行永久修改主机名 [rootlocalhost ~…

vivado时序方法检查11

TIMING-47 &#xff1a; 同步时钟之间的伪路径、异步时钟组或仅最 大延迟数据路径约束 在 <clock_group> 与 <clock_group> 这两个时钟之间设置了 <message_string> 时序约束 &#xff08; 请参阅 VivadoIDE 的“ Timing Constraint ”窗口中的约束位…

Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

整合,降价,官司……2023休闲零食行业大变局

休闲零食行业正从暗战走向明战。 11月27日&#xff0c;宁波广源聚亿投资有限公司&#xff08;以下简称“广源聚亿”&#xff09;因被投企业宜春赵一鸣食品科技有限公司&#xff08;以下简称“赵一鸣”&#xff09;在双方合作期内&#xff0c;刻意隐瞒公司重大事项&#xff0c;…

什么叫应用加速,什么情况需要用到应用加速

应用加速的定义 应用加速依赖节点之间的高速通道、转发集群及智能路由技术&#xff0c;实现各地用户的就近接入&#xff0c;通过高速通道直达源站区域&#xff0c;帮助业务解决用户访问卡顿或者延迟过高的问题。使用高速网络和全球范围内的节点技术&#xff0c;确保传输时间和…

1829_org-mode的标记语法

org-mode的标记语法 Grey 全部学习汇总&#xff1a; GitHub - GreyZhang/g_org: my learning trip for org-mode 如果用org-mode来做笔记&#xff0c;现在看起来还是有一些短板让我觉得不是很方便。不过&#xff0c;我发现采用这种方式整理信息的时候会有较为深度的思考。因…

flstudio21.3完整高级版怎么下载?有哪些新功能

flstudio高级版是一款适用于广泛领域的音频编辑软件。它支持多通道混音器和VST插件&#xff0c;包括数百种乐器和效果插件。它还为您提供了一个乐谱编辑器&#xff0c;需要对不同乐器的节奏进行必要的编辑。Flstudio具有许多内置电子合成声音&#xff0c;可提供更广泛的电子声音…

MySQL - 表达式With as 语句的使用及练习

目录 8.1 WITH AS 的含义 8.2 WITH AS语法的基本结构如下&#xff1a; 8.3 练习题1 8.4 牛客练习题 8.1 WITH AS 的含义 WITH AS 语法是MySQL中的一种临时结果集&#xff0c;它可以在SELECT、INSERT、UPDATE或DELETE语句中使用。通过使用WITH AS语句&#xff0c;可以将一个查…

荒野大镖客emp.dll文件丢失怎么办?6种有效修复方法教你如何解决问题

在计算机运行软件游戏的使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到emp.dll&#xff0c;无法继续执行代码”。这个问题的出现往往会导致程序无法正常运行&#xff0c;给用户带来困扰。本文将详细介绍emp.dll丢失的原因、对电脑的影响以…

力扣思维题/经典面试题——下一个排序

https://leetcode.cn/problems/next-permutation/description/ 字节面试题&#xff0c;非常经典的逻辑思维题 1、找到第一个下降点&#xff0c;说明这个点可以变得稍微大一点以至于让整个排列变得更加大 为什么&#xff0c;仔细想想&#xff0c;后面都是倒序了怎么都不可能变得…

Blender学习--制作带骨骼动画的机器人

1. 首先创建一个机器人模型 时间关系&#xff0c;这部分步骤有时间补充 2. 然后为机器人创建一副骨架 时间关系&#xff0c;这部分步骤有时间补充 3.骨骼绑定 切换到物体模式&#xff0c;选中机器人头部&#xff0c;Shift选中骨骼&#xff0c;切换到姿态模式&#xff0c;&am…

Linux系统调试课:I2C tools调试工具

文章目录 一、如何使用I2C tools测试I2C外设1、I2C tools概述: 2、下载I2C tools源码:3、编译I2C tools源码: 4、i2cdetect 5、i2cget 6、i2cdump

校园圈子系统丨交友丨地图找伴丨二手市场等功能丨源码交付支持二开丨APP小程序H5三端交付!

校园圈子系统是一款专为校园生活设计的智能应用&#xff0c;拥有丰富多样的功能模块&#xff0c;提供全方位的服务。无论您是师生还是校友&#xff0c;我们都为您打造了一个与校园紧密相连的交流平台。 通过校园圈子系统&#xff0c;您可以方便地浏览校内最新动态&#xff0c;包…

【BUG】微信小程序扫码获取不到scene参数的bug修复

问题描述&#xff1a; 扫码后获取不到scene&#xff0c;必须点击“重新进入小程序”才可以 错误原因&#xff1a; 微信小程序的二维码扫描分为两种情况&#xff1a; 冷启动&#xff1a;当用户首次扫描二维码或在后台无该小程序运行实例时打开小程序&#xff0c;此时可以通过…

PAD平板签约投屏-高端活动的选择

传统的现场纸质签约仪式除了缺乏仪式感之外还缺少互动性&#xff0c;如果要将签约的过程投放到大屏幕上更是需要额外的硬件设备成本。相比于传统的纸质签约仪式&#xff0c;平板现场电子签约的形式更加的新颖、更富有科技感、更具有仪式感。 平板签约投屏是应用于会议签字仪式的…

12.9_黑马数据结构与算法笔记Java

目录 057 多路递归 e03 杨辉三角2 thinking&#xff1a;二维数组的动态初始化&#xff1f; 057 多路递归 e03 杨辉三角3 058 链表 e01 反转单向链表1 058 链表 e01 反转单向链表2 058 链表 e01 反转单向链表3 递归 058 链表 e01 反转单向链表4 为什么是returnn1呢&…

【51单片机系列】独立按键介绍

本文是关于独立按键的介绍及使用。首先介绍了按键&#xff0c;包括什么是按键及使用按键时如何实现软件消抖。然后使用proteus仿真实现独立按键控制LED指示灯的操作。 之前的LED、蜂鸣器、数码管中IO口都是作为输出使用&#xff0c;这里通过独立按键实验介绍IO口作为输入的使用…

GPIO的使用--滴答定时器--pir人体红外传感器

目录 一、滴答定时器的使用与原理 1、定义 2、原理 &#xff08;1&#xff09;向上计数​编辑 &#xff08;2&#xff09;向下计数 &#xff08;3&#xff09; 代码流程 a、配置滴答时钟唤醒频率 b、滴答时钟中断函数 &#xff08;4&#xff09;结果 3、优化-->寄存…

CSK6环境搭建

前期准备 开发板测试 &#xff08;1&#xff09;根据这个视频教程来进行测试&#xff1a;示例工程快速上手 Ubuntu环境搭建 &#xff08;1&#xff09;聆思官方推荐使用Linux开发&#xff0c;因此我于是采用VMware搭建Ubuntu的方式进行开发。不清楚Ubuntu搭建的请看&#xff1…

用友U8 Cloud 多处反序列化RCE漏洞复现

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友U8 Cloud存在多处(TableInputOperServlet、LoginServlet 、FileTransportServlet、CacheInvokeServlet、ActionHandlerServlet、Servle…