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

news2024/11/19 9:36:20

文章目录

  • 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.coloradmin.cn/o/2161978.html

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

相关文章

要大爆发的AI Agent是什么?(软件测试人员需要掌握)

什么是AI Agent? AI Agent 是一种软件程序,可以与环境交互,收集数据,并使用数据执行自主任务以实现预定目标。即人类设定目标,AI Agent 独立选择实现这些目标所需的最佳行动。 简单来说,AI Agent是一个能够…

复选框选择示例【JavaScript】

这段代码实现的功能是一个简单的复选框示例,它可以进行全选、反选和取消选中操作。 实现功能: 1. 全选:当点击标签"全选"旁边的复选框时,该页面上所有具有"item"类的复选框都会被选中(或者取消选…

七种修复错误:由于找不到msvcr110.dll 无法继续执行的方法

当你在运行某些程序时遇到“找不到msvcr110.dll”的错误提示,这通常意味着你的系统缺少了Microsoft Visual C 2012 Redistributable包中的一个重要文件。这个DLL文件是Microsoft Visual C Redistributable的一部分,用于支持许多使用Visual C编写的软件和…

回答网友的一个SQL问题

网友问: CODE NAME 1 A 1 B 如何得到下面的值,该如何写SQL CODE NAME 1 AB 1 AB 俺的回答: declare t table(code varchar(50),name varchar(50)) insert into t(code,name) select 1,A union select…

【Pleiades卫星】

Pleiades卫星 Pleiades卫星是法国研制的高分辨率光学成像卫星,旨在满足民用和国防领域对高分辨率地球观测数据的需求。以下是对Pleiades卫星的详细介绍: 一、基本概况 名称:Pleiades,中文名称为昴宿星卫星。研制国家&#xff…

数电学习基础(逻辑门电路+)

1.逻辑门电路 1.1逻辑门电路的简介 1.1.1各种逻辑门电路的简介 基本概念 (1)实现基本逻辑运算和常用逻辑运算的电路称为逻辑门电路,简称门电路。逻辑门电路是组成各种数字电路的基本单元电路。将构成门电路的元器件制作一块半导体芯片上再…

Allegro视频去除走线的小方块

走线出现小方块图如下: 其实这种情况并不影响PCB生产和布线的联通性,只是多少会影响美观和性能,在Allegro视频中去除的方法比较简单,是由模块复用以后,没有打散模块引起的。只要我们将模块的打散即可。具体操作如下:…

stm32 gpio I/O模式以及iic访问

1&#xff0c;硬件补充连接原理图引脚 #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH(up to 1 MB) base address in the alias region */ #define CCMDATARAM_BASE ((uint32_t)0x10000000) /*!< CCM(core coupled mem…

球体检测系统源码分享

球体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

元素循环分析再添新成员:铜、钼、镍、钴、硒微量元素数据库注释

微量营养元素&#xff08;例如Fe、Cu、Mo、Ni等&#xff09;是光合作用、呼吸作用、生物大分子合成、氧化还原平衡、细胞生长和免疫系统功能等微生物驱动过程的重要调节因子。虽然生物体需要少量的微量营养元素&#xff0c;但缺乏微量营养元素会严重限制生物体的生长和生物过程…

快手IP归属地怎么设置别的地方

在当今数字化时代&#xff0c;社交媒体平台如快手已成为人们日常生活中不可或缺的一部分。快手通过显示用户的IP归属地&#xff0c;增加了信息的透明度和互动性。然而&#xff0c;有些用户可能出于个人需求或特定情境&#xff0c;希望将自己的IP归属地设置为别的地方。本文将深…

前端开发必须了解的css知识

文本过长省略显示 单行 .ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }多行 方法一&#xff1a; .ellipsis {overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 3;word-break: break-all; }方法二&#xff1a; .ellipsis {ove…

分布式锁总结1 - 为什么需要分布式锁?

目录 1. 最基本的业务逻辑是&#xff1a; 2. 高并发场景下常见的缓存问题 2.1问题一 缓存穿透 : 一直查询不存在的数据 解决方案 : 短暂缓存null结果 2.2 问题二 缓存雪崩 : 大量key同时过期大量请求直击数据库 解决方案 : 在原有的过期时间上加一个随机的值&#xff0c;…

国联安基金前置机用朝天椒USB Server实现了虚拟化

国联安基金近期上线了朝天椒USB Server产品&#xff0c;影响了虚拟化进程的物理前置机逐步退出了历史舞台&#xff0c;实现了虚拟化&#xff0c;通过USB服务器&#xff0c;虚拟机中也能网络识别各个前置机系统的认证U盾。 一、背景 国联安基金在金融业务运营过程中&#xff0c…

进度条QProgressBar

进度条控价&#xff0c;用来只是任务的完成情况 值 包括当前值、最大值、最小值 // 获取和设置当前值 int value() const; void setValue(int);// 获取和设置最大值 int maximum() const; void setMaximum(int);// 获取和设置最小值 int minimum() const; void setMinimum(i…

Datawhale X 南瓜书 task01学习笔记

机器学习三观 机器学习工程领先理论 what:什么是机器学习? 机器学习定义&#xff1a;研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科PS:深度学习指的是&#xff1a;神经网络那一类学习算法&#xff0c;因此是机器学习的子集把深度学习单列出来…

Linux网络命令:用于请求和配置网络地址的命令dhclient详解

目录 一、概述 二、功能描述 三、基本使用 1. 命令格式 2. 常用选项 3. 获取帮助 ​编辑 4. 基本操作 四、工作原理 1. 发送DHCP请求 2. 接收DHCP响应 3. 请求IP地址 4. 确认IP地址 5. 配置网络接口 五、功能特点 六、配置文件 七、常用命令和示例 1、启动…

spring boot项目对接人大金仓

先确认一下依赖 第一 是否引入了mybatis-plus多数据源&#xff0c;如果引入了请将版本保持在3.5.0以上 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynam…

自闭症寄宿学校陕西:提供综合发展的教育环境

星贝育园&#xff1a;自闭症儿童的综合发展摇篮 在自闭症儿童教育的广阔领域里&#xff0c;寄宿制学校以其独特的康复环境和全方位的支持体系&#xff0c;为这些特殊的孩子点亮了希望之灯。广州的星贝育园自闭症儿童寄宿制学校&#xff0c;正是这样一所充满爱心与专业的机构&a…

【软件测试】详解测试中常用的几种测试方法

目录 一、集成测试二、 系统测试三、验收测试四、回归测试 总结 一、集成测试 术语 集成测试是继组件测试之后的又一个层次。集成测试假定交给这个层次的测试对象已经经过了组件测试&#xff0c;并且任何组件内部的缺陷都已经尽可能地被纠正。 集成 开发人员、测试人员和专…