二阶滤波算法总结(对RC滤波算法整理的部分修正和完善)

文章目录

  • 1、一阶低通滤波
  • 2、一阶高通滤波
  • 3、二阶低通滤波器
    • 3.1 二阶RC低通滤波器的连续域数学模型
    • 3.2 二阶RC低通滤波器的算法推导
    • 3.3 matlab仿真
  • 4、二阶高通滤波器
    • 4.1 二阶RC高通滤波器的连续域数学模型
    • 4.2 二阶RC高通滤波器的算法推导
    • 4.3 matlab仿真
  • 5、陷波滤波
  • 6、带通滤波器
    • 6.1 带通滤波器的连续域数学模型
    • 6.2 带通滤波器的算法推导
    • 6.3 matlab仿真
  • 参考

写在前面:本文是对《RC滤波器数学公式推导及软件算法实现》的修正和完善,修正主要是针对二阶滤波的修正,并对所有滤波算法进行了matlab算法验证,利用FFT对滤波前和滤波后的信号进行了分析。

1、一阶低通滤波

差分离散表达式:
V o ( k ) = A V i ( k ) + ( 1 − A ) V o ( k − 1 ) V_o(k)=AV_i(k)+(1-A)V_o(k-1) Vo(k)=AVi(k)+(1A)Vo(k1)
其中 T s T_s Ts为采样频率, R C = 1 / 2 π f c RC=1/2\pi f_c RC=1/2πfc,于是已知截至频率,就可以得到系数,也可以由系数求得截至频率。
A = w c T s 1 + w c T s A=\frac{w_c T_s}{1+w_c T_s} A=1+wcTswcTs
上式就是已知截至频率 f c f_c fc,可得系数 A A A

matlab验证代码

% 参数设置
fs = 1000;               % 采样频率 1000 Hz
wc = 2 * pi * 10;        % 截止频率 10 Hz
Ts = 1/fs;               % 采样周期
A = (wc * Ts) / (1 + wc * Ts);  % 计算系数 A% 仿真输入信号 (正弦和噪声信号的叠加)
t = 0:Ts:1-Ts;                   % 离散时间向量
input_signal = sin(2*pi*5*t) + sin(2*pi*50*t) + 0.5*randn(size(t));  % 混合信号: 5 Hz + 50 Hz + 噪声% 初始化输出信号
output_signal = zeros(size(input_signal));% 初始条件设置
output_signal(1) = A * input_signal(1);  % 假设初始输出为 0% 递推公式计算一阶低通滤波器输出
for k = 2:length(input_signal)output_signal(k) = A * input_signal(k) + (1 - A) * output_signal(k-1);
end% FFT 分析
n = length(t);              % 数据点数
f = (0:n-1)*(fs/n);         % 频率向量
input_fft = abs(fft(input_signal));       % 输入信号的 FFT
output_fft = abs(fft(output_signal));     % 输出信号的 FFT% 画图 - 输入输出信号的时域响应
figure;
subplot(2, 1, 1);
plot(t, input_signal);
title('输入信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');subplot(2, 1, 2);
plot(t, output_signal);
title('滤波后信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');% 画图 - 输入输出信号的频域响应
figure;
subplot(2, 1, 1);
plot(f(1:n/2), input_fft(1:n/2));  % 只显示正频率部分
title('输入信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');subplot(2, 1, 2);
plot(f(1:n/2), output_fft(1:n/2));  % 只显示正频率部分
title('滤波后信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');

在这里插入图片描述
在这里插入图片描述
显示滤波前后信号的振幅随时间的变化,滤波后信号的高频噪声明显被抑制 。
FFT 分析显示滤波前信号的频谱具有 5 Hz 和 50 Hz 的显著频率成分,而经过低通滤波后,高频(50 Hz)分量被显著衰减,只剩下低频(5 Hz)的成分

2、一阶高通滤波

差分离散表达式:
V o ( k ) = A V 0 ( k − 1 ) + A ( V i ( k ) − V i ( k − 1 ) ) V_o(k)=AV_0(k-1)+A(V_i(k)-V_i(k-1)) Vo(k)=AV0(k1)+A(Vi(k)Vi(k1))
其中 T s T_s Ts为采样频率, R C = 1 / 2 π f c RC=1/2\pi f_c RC=1/2πfc,于是已知截至频率,就可以得到系数,也可以由系数求得截至频率。
A = 1 1 + w c T s A=\frac{1}{1+w_c T_s} A=1+wcTs1
上式就是已知截至频率 f c f_c fc,可得系数 A A A

matlab算法验证:

% 参数设置
fs = 1000;               % 采样频率 1000 Hz
wc = 2 * pi * 50;        % 截止频率 50 Hz
Ts = 1/fs;               % 采样周期
A = 1 / (1 + wc * Ts);   % 计算系数 A% 仿真输入信号 (正弦和噪声信号的叠加)
t = 0:Ts:1-Ts;                   % 离散时间向量
input_signal = sin(2*pi*20*t) + sin(2*pi*100*t) + 0.5*randn(size(t));  % 混合信号: 5 Hz + 50 Hz + 噪声% 初始化输出信号
output_signal = zeros(size(input_signal));% 初始条件设置
output_signal(1) = input_signal(1);  % 假设初始输出等于输入% 递推公式计算一阶高通滤波器输出
for k = 2:length(input_signal)output_signal(k) = A * output_signal(k-1) + A * (input_signal(k) - input_signal(k-1));
end% FFT 分析
n = length(t);              % 数据点数
f = (0:n-1)*(fs/n);         % 频率向量
input_fft = abs(fft(input_signal));       % 输入信号的 FFT
output_fft = abs(fft(output_signal));     % 输出信号的 FFT% 画图 - 输入输出信号的时域响应
figure;
subplot(2, 1, 1);
plot(t, input_signal);
title('输入信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');subplot(2, 1, 2);
plot(t, output_signal);
title('滤波后信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');% 画图 - 输入输出信号的频域响应
figure;
subplot(2, 1, 1);
plot(f(1:n/2), input_fft(1:n/2));  % 只显示正频率部分
title('输入信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');subplot(2, 1, 2);
plot(f(1:n/2), output_fft(1:n/2));  % 只显示正频率部分
title('滤波后信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');

在这里插入图片描述
在这里插入图片描述
高通滤波器后信号的低频部分被显著抑制,只保留了高频成分。
通过 FFT 分析,可以看到高频成分(如 100 Hz)被保留,而低频成分(如 20 Hz)被滤除。

3、二阶低通滤波器

在这里插入图片描述

3.1 二阶RC低通滤波器的连续域数学模型

在这里插入图片描述

3.2 二阶RC低通滤波器的算法推导

在这里插入图片描述
在这里插入图片描述

3.3 matlab仿真

% 参数设置
fs = 1000;               % 采样频率 1000 Hz
Ts = 1/fs;               % 采样周期
w0 = 2 * pi * 50;        % 截止频率 10 Hz
xi = 0.707;              % 阻尼系数 (一般取0.707, 即1/sqrt(2))% 计算滤波器系数
b0 = w0^2 * Ts^2;
a0 = w0^2 * Ts^2 + 4 * xi * w0 * Ts + 4;
a1 = 2 * w0^2 * Ts^2 - 8;
a2 = w0^2 * Ts^2 - 4 * xi * w0 * Ts + 4;% 仿真输入信号 (正弦和噪声信号的叠加)
t = 0:Ts:1-Ts;                   % 离散时间向量
input_signal = sin(2*pi*20*t) + sin(2*pi*100*t) + 0.5*randn(size(t));  % 混合信号: 5 Hz + 50 Hz + 噪声% 初始化输出信号
output_signal = zeros(size(input_signal));% 初始条件设置
output_signal(1) = input_signal(1);  % 假设初始输出等于输入
output_signal(2) = input_signal(2);% 递推公式计算二阶低通滤波器输出
for k = 3:length(input_signal)output_signal(k) = (b0/a0) * input_signal(k) + (2*b0/a0) * input_signal(k-1) + (b0/a0) * input_signal(k-2) ...- (a1/a0) * output_signal(k-1) - (a2/a0) * output_signal(k-2);
end% FFT 分析
n = length(t);              % 数据点数
f = (0:n-1)*(fs/n);         % 频率向量
input_fft = abs(fft(input_signal));       % 输入信号的 FFT
output_fft = abs(fft(output_signal));     % 输出信号的 FFT% 画图 - 输入输出信号的时域响应
figure;
subplot(2, 1, 1);
plot(t, input_signal);
title('输入信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');subplot(2, 1, 2);
plot(t, output_signal);
title('滤波后信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');% 画图 - 输入输出信号的频域响应
figure;
subplot(2, 1, 1);
plot(f(1:n/2), input_fft(1:n/2));  % 只显示正频率部分
title('输入信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');subplot(2, 1, 2);
plot(f(1:n/2), output_fft(1:n/2));  % 只显示正频率部分
title('滤波后信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');

在这里插入图片描述
在这里插入图片描述
滤波后信号的时域响应相比于输入信号的噪声平滑很多 , 通过 FFT 分析可以观察到 100 Hz 的高频成分被衰减,而 20 Hz 的低频成分保留。

4、二阶高通滤波器

在这里插入图片描述

4.1 二阶RC高通滤波器的连续域数学模型

在这里插入图片描述

4.2 二阶RC高通滤波器的算法推导

在这里插入图片描述
在这里插入图片描述

4.3 matlab仿真

% 参数设置
fs = 1000;               % 采样频率 1000 Hz
Ts = 1/fs;               % 采样周期
w0 = 2 * pi * 50;        % 截止频率 10 Hz
xi = 0.707;              % 阻尼系数 (一般取0.707, 即1/sqrt(2))% 计算滤波器系数
b0 = 4;
a0 = w0^2 * Ts^2 + 4 * xi * w0 * Ts + 4;
a1 = 2 * w0^2 * Ts^2 - 8;
a2 = w0^2 * Ts^2 - 4 * xi * w0 * Ts + 4;% 仿真输入信号 (正弦和噪声信号的叠加)
t = 0:Ts:1-Ts;                   % 离散时间向量
input_signal = sin(2*pi*20*t) + sin(2*pi*100*t) + 0.5*randn(size(t));  % 混合信号: 5 Hz + 50 Hz + 噪声% 初始化输出信号
output_signal = zeros(size(input_signal));% 初始条件设置
output_signal(1) = input_signal(1);  % 假设初始输出等于输入
output_signal(2) = input_signal(2);% 递推公式计算二阶高通滤波器输出
for k = 3:length(input_signal)output_signal(k) = (b0/a0) * input_signal(k) - (2*b0/a0) * input_signal(k-1) + (b0/a0) * input_signal(k-2) ...- (a1/a0) * output_signal(k-1) - (a2/a0) * output_signal(k-2);
end% FFT 分析
n = length(t);              % 数据点数
f = (0:n-1)*(fs/n);         % 频率向量
input_fft = abs(fft(input_signal));       % 输入信号的 FFT
output_fft = abs(fft(output_signal));     % 输出信号的 FFT% 画图 - 输入输出信号的时域响应
figure;
subplot(2, 1, 1);
plot(t, input_signal);
title('输入信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');subplot(2, 1, 2);
plot(t, output_signal);
title('滤波后信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');% 画图 - 输入输出信号的频域响应
figure;
subplot(2, 1, 1);
plot(f(1:n/2), input_fft(1:n/2));  % 只显示正频率部分
title('输入信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');subplot(2, 1, 2);
plot(f(1:n/2), output_fft(1:n/2));  % 只显示正频率部分
title('滤波后信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');

在这里插入图片描述
在这里插入图片描述
滤波后信号的时域响应中,低频部分被显著衰减 ,通过 FFT 分析,可以观察到高频部分的保留以及低频部分的衰减 。

5、陷波滤波

陷波滤波器其实就是带阻滤波器。
这里只提供matlab算法验证,详细公式推导前看《陷波滤波器的数学模型推导及算法实现》

% 参数设置
fs = 1000;               % 采样频率 1000 Hz
Ts = 1/fs;               % 采样周期
w_n = 2 * pi * 50;       % 陷波频率 50 Hz
B = 2 * pi * 20;         % 带宽 (单位: rad)
depth = 0.05;             % 深度 (在范围 -sqrt(2)/2 到 sqrt(2)/2 之间) 越小效果越好% 计算 k_1 和 k_2
k1 = sqrt((1 - sqrt(1 + (B^2 / w_n^2))) / (4 * (depth)^2 - 2));
k2 = k1 * depth;% 计算滤波器系数
a_1 = w_n^2 * Ts^2 + 4 * Ts * k1 * w_n + 4;
a_2 = 2 * w_n^2 * Ts^2 - 8;
a_3 = w_n^2 * Ts^2 - 4 * Ts * k1 * w_n + 4;
b_1 = w_n^2 * Ts^2 + 4 * Ts * k2 * w_n + 4;
b_2 = 2 * w_n^2 * Ts^2 - 8;
b_3 = w_n^2 * Ts^2 - 4 * Ts * k2 * w_n + 4;% 生成测试信号 (正弦和噪声信号的叠加)
t = 0:Ts:1-Ts;                   % 离散时间向量
input_signal = sin(2*pi*20*t) +sin(2*pi*50*t)+ sin(2*pi*100*t) + 0.5*randn(size(t));  % 混合信号: 20 Hz + 100 Hz + 噪声% 初始化输出信号
output_signal = zeros(size(input_signal));% 初始条件设置
output_signal(1) = input_signal(1);  
output_signal(2) = input_signal(2);% 递推公式计算陷波滤波器输出
for n = 3:length(input_signal)output_signal(n) = (b_1/a_1) * input_signal(n) + (b_2/a_1) * input_signal(n-1) + (b_3/a_1) * input_signal(n-2) ...- (a_2/a_1) * output_signal(n-1) - (a_3/a_1) * output_signal(n-2);
end% FFT 分析
n = length(t);              % 数据点数
f = (0:n-1)*(fs/n);         % 频率向量
input_fft = abs(fft(input_signal));       % 输入信号的 FFT
output_fft = abs(fft(output_signal));     % 输出信号的 FFT% 画图 - 输入输出信号的时域响应
figure;
subplot(2, 1, 1);
plot(t, input_signal);
title('输入信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');subplot(2, 1, 2);
plot(t, output_signal);
title('滤波后信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');% 画图 - 输入输出信号的频域响应
figure;
subplot(2, 1, 1);
plot(f(1:n/2), input_fft(1:n/2));  % 只显示正频率部分
title('输入信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');subplot(2, 1, 2);
plot(f(1:n/2), output_fft(1:n/2));  % 只显示正频率部分
title('滤波后信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');

在这里插入图片描述
在这里插入图片描述
通过 FFT 分析,可以观察到50Hz部分的衰减,而20Hz和100Hz得到了保留。

6、带通滤波器

在这里插入图片描述
在这里插入图片描述

6.1 带通滤波器的连续域数学模型

在这里插入图片描述
在这里插入图片描述

6.2 带通滤波器的算法推导

在这里插入图片描述

6.3 matlab仿真

% 参数设置
fs = 1000;                % 采样频率 1000 Hz
Ts = 1/fs;                % 采样周期
f_0 = 70;                 % 中心频率 50 Hz
BW = 2 * pi * 20;         % 带宽 20 Hz
k = 0.5;                    % 增益常数  % 计算角频率和品质因数
omega_0 = 2 * pi * f_0;
Q = omega_0 / BW;% 计算数字滤波器系数
b_0 = 2 * Ts * k * BW;
a_2 = 4 - 2 * BW * Ts + omega_0^2 * Ts^2;
a_1 = 2 * Ts^2 * omega_0^2 - 8;
a_0 = 4 + 2 * BW * Ts + Ts^2 * omega_0^2;% 生成测试信号 (正弦和噪声信号的叠加)
t = 0:Ts:1-Ts;                   % 离散时间向量
input_signal = sin(2*pi*20*t) + sin(2*pi*70*t) + sin(2*pi*120*t) + 0.5*randn(size(t));  % 混合信号: 20 Hz + 50 Hz + 100 Hz + 噪声% 初始化输出信号
output_signal = zeros(size(input_signal));% 初始条件设置
output_signal(1) = input_signal(1);  
output_signal(2) = input_signal(2);% 递推公式计算带通滤波器输出
for n = 3:length(input_signal)output_signal(n) = (b_0/a_0) * input_signal(n) + (b_0/a_0) * input_signal(n-2) ...- (a_1/a_0) * output_signal(n-1) - (a_2/a_0) * output_signal(n-2);
end% FFT 分析
n = length(t);              % 数据点数
f = (0:n-1)*(fs/n);         % 频率向量
input_fft = abs(fft(input_signal));       % 输入信号的 FFT
output_fft = abs(fft(output_signal));     % 输出信号的 FFT% 画图 - 输入输出信号的时域响应
figure;
subplot(2, 1, 1);
plot(t, input_signal);
title('输入信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');subplot(2, 1, 2);
plot(t, output_signal);
title('滤波后信号 (时域)');
xlabel('时间 (s)');
ylabel('振幅');% 画图 - 输入输出信号的频域响应
figure;
subplot(2, 1, 1);
plot(f(1:floor(n/2)), input_fft(1:floor(n/2)));  % 只显示正频率部分
title('输入信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');subplot(2, 1, 2);
plot(f(1:floor(n/2)), output_fft(1:floor(n/2)));  % 只显示正频率部分
title('滤波后信号 (频域)');
xlabel('频率 (Hz)');
ylabel('幅度');

在这里插入图片描述
在这里插入图片描述
给定信号是20Hz、70Hz、120Hz以及噪声信号组成,带通滤波器中心频率为70Hz,经过带通滤波器后的信号通过FFT分析对比,20Hz和120Hz的信号进行了衰减,保留了70Hz信号。

参考

【1】基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程):
https://blog.csdn.net/black_sneak/article/details/129629485
【2】【学习笔记】matlab进行数字信号处理(三)数字滤波技术:https://blog.csdn.net/weixin_42853410/article/details/114407188?share_token=2D1ED73C-F87F-4B9D-BCEF-9AFEE203C6C9&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share 【学习笔记】matlab进行数字信号处理(三)数字滤波技术_信号滤波技术 - 今日头条
【3】RC低通滤波器截止频率公式推导:
https://blog.csdn.net/zwc475793240/article/details/122432824
【4】一阶RC高通滤波器详解(仿真+matlab+C语言实现):
https://bbs.huaweicloud.com/blogs/314645
【5】滤波器——二阶低通滤波器:
https://blog.csdn.net/qq_53043199/article/details/136071435#:~:text=%E6%9C%AC%E6%96%87%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E4%BA%86%E4%BA%8C
【6】数字二阶低通滤波器公式推导及代码实现
https://blog.csdn.net/qq_26988431/article/details/100779047#:~:text=%E4%BA%8C%E9%98%B6%E4%BD%8E%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E5%8F%AF
【7】陷波滤波器(Notch Filter)的离散化设计:
https://blog.csdn.net/u013581448/article/details/116743786?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4-116743786-blog-105431862.235v38pc_relevant_anti_t3&spm=1001.2101.3001.4242.3&utm_relevant_index=7
【8】A Better Way to Think About a Notch Filter | Control Systems in Practice
https://www.youtube.com/watch?v=tpAA5eUb6eo

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

白杨SEO:从小红书、抖音图文再到小绿书,为什么现在制作图文内容搞SEO搜索精准流量更容易?

前言:为什么想到写这个?上周参加了一个杭州公司游学,发现大家现在做SEO精准流量都在用图文方式来搞了,还有做小绿书也越来越多了,所以分享给大家,看完对大家有一些启发。 文章大纲: 1、图文是什…

2024年AI技术爆发的元年,用对工具,让你副业比主业赚得多!

大家好,我是强哥 文字的力量不容小觑,或许你没有多好的文笔,或许你已经很久没有拿笔写字了,但是没关系,我们有工具! AI时代的到来,不会用工具,那你可就OUT了 如果你觉得文字不能赚…

产业报告丨2024中国AI大模型场景探索及产业应用调研报告(附下载)

前言 AI大模型是指在机器学习和深度学习领域中,采用大规模参数(至少在一亿个参数以上)的神经网络模型,AI大模型在训练过程中需要依赖大量的算力和高质量的数据资源。2024年,AI大模型的行业应用与技术发展正有效提升千…

2024年 AI大模型我该买一张什么卡?

有钱啥也不用说,买张最贵的就是了。对囊中羞涩的我还说,我该买张什么样的显卡呢? 我的旧显卡RTX1060 6G,满负荷消耗功率110多瓦,几乎达到设计最大TDP,周日时拿了朋友的RTX3060Ti 8G,发现是锁算…

Kaggle-狗种类的识别(Pytorch框架)基本图像识别流程

狗类别实现过程 一. 将数据集按标签分类,将标签转换为数字表示,并制作数据集 二. 搭建网络框架,inception,或者ResNet 三. 选择优化函数,训练模型 数据集制作 首先分析数据集,题中已经很明确告诉有120 种…

【2024W32】肖恩技术周刊(第 10 期):太阳神鸟

周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率,每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

LeetCode 刷题基础Ⅰ -- 基础语法

c 基础语法,LeetCode 刷题用 学习网站一、顺序结构基本数据类型① 整型 int② 长整型 long③ 浮点型 double④类型转换 输入输出① getchar 吸收回车符② 数学函数③ 最大值的定义 二、选择结构① switch 三、数组① 初始化② 输入③ 方法 四、结构体① 自定义结构体…

UE5地图白屏/过曝/非常亮の解决方法

今天遇到一个问题 , 新建项目 , 打开虚幻第三人称地图的默认关卡 , 发现白屏 , 啥也看不见 猜测可能是虚幻编辑器的bug , 造成白屏的原因应该是场景过曝了 记录一下解决方案 第一种解决方法 找到场景中的 后期处理体积 (PostProcessVolume) 直接删掉 或者找到 细节面板中 -…

【Transformers基础入门篇5】基础组件之Datasets

文章目录 一、简介二、Datasets基本使用2.1 加载在线数据集(load_dataset)2.2 加载数据集某一项任务(load_dataset)2.3 按照数据集划分进行加载(load_dataset)2.4 查看数据集(index and slice&a…

数据库课程 CMU15-445 2023 Fall Project-2 Extendible Hash Index

0 实验结果 tips:完成项目的前提不需要一定看视频 1 数据结构:扩展哈希 解释下这张图: 图中header的最大深度2,directory最大深度2,桶的容量2。 最开始的时候只有一个header。 插入第一个数据,假设这个数据对应的哈希…

洛汗2保姆级辅助教程攻略:VMOS云手机辅助升级打怪!

在《洛汗2》中,玩家将进入一个充满魔幻色彩的西方世界,体验多种族文明的兴衰与冒险。为了更好地享受这款由普雷威(Playwith)开发的角色扮演动作手游,使用VMOS云手机将是一个明智的选择。VMOS云手机专为游戏打造了定制版…

基于SSM的“在线CRM管理系统”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“在线CRM管理系统”的设计与实现(源码数据库文档开题报告) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 总体功能模块图 登录页面 后台管理页面 产品信息页面 客…

JSP(Java Server Pages)基础使用二

简单练习在jsp页面上输出出乘法口诀表 既然大家都是来看这种代码的人了&#xff0c;那么这种输出乘法口诀表的这种简单算法肯定是难不住大家了&#xff0c;所以这次主要是来说jsp的使用格式问题。 <%--Created by IntelliJ IDEA.User: ***Date: 2024/7/18Time: 11:26To ch…

consul注册中心与容器自动发现实战

consul简介 Consul 是 HashiCorp 公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案&#xff0c;不再需要依赖其它工具&#xff08;比如 ZooKeeper 等&#xff0…

拾色器的取色的演示

前言 今天&#xff0c;有一个新新的程序员问我&#xff0c;如何确定图片中我们需要选定的颜色范围。一开始&#xff0c;我感到对这个问题很不屑。后来&#xff0c;想了想&#xff0c;还是对她说&#xff0c;你可以参考一下“拾色器”。 后来&#xff0c;我想关于拾色器&#…

动态规划11,完全背包模板

NC309 完全背包 问题一&#xff1a;求这个背包至多能装多大价值的物品&#xff1f; 状态表示&#xff1a;经验题目要求 dp[i][j] 表示 从前i个物品中挑选&#xff0c;总体积不超过j&#xff0c;所有选法中&#xff0c;能选出来的最大价值。 状态转移方程 根据最后一步的状态&a…

C语言 typedef - C语言零基础入门教程

目录 一.typedef 简介 二.typedef 实战 1.typedef 定义基本数据变量 2.typedef 定义结构体 A.常规定义结构体B.typedef 定义结构体C.结构体使用 typedef 和不使用 typedef 区别 3.typedef 定义函数指针 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础…

【2024W33】肖恩技术周刊(第 11 期):猴哥,我好急啊!

周刊内容: 对一周内阅读的资讯或技术内容精品&#xff08;个人向&#xff09;进行总结&#xff0c;分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率&#xff0c;每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

YOLOv9改进 | 特征融合篇,YOLOv9添加iAFF(多尺度通道注意力模块),二次创新RepNCSPELAN4结构,提升小目标检测能力

摘要 特征融合,即来自不同层或分支的特征的组合,是现代网络架构中无处不在的一部分。虽然它通常通过简单的操作(如求和或拼接)来实现,但这种方式可能并不是最佳选择。在这项工作中,提出了一种统一且通用的方案,即注意力特征融合(Attentional Feature Fusion),适用于…

C++ std::any升级为SafeAny

std::any测试 #include <any>class A { public:int8_t a; };int main(int argc, char* argv[]) {std::any num((int8_t)42);auto a std::any_cast<A>(num);return 0; }异常&#xff1a; 0x00007FFA9385CD29 处(位于 test.exe 中)有未经处理的异常: Microsoft C 异…