数字滤波器设计---FIR 滤波器设计

数字滤波器设计---FIR 滤波器设计

FIR 滤波器与 IIR 滤波器的比较

与无限持续时间冲激响应 (IIR) 滤波器相比,具有有限持续时间冲激响应的数字滤波器(全零或 FIR 滤波器)既有优点又有缺点。

FIR 滤波器具有以下主要优点:

  • 它们可以具有精确的线性相位。

  • 它们始终稳定。

  • 设计方法通常是线性的。

  • 它们可以在硬件中高效实现。

  • 滤波器启动瞬态具有有限持续时间。

FIR 滤波器的主要缺点是,要达到同样的性能水平,其所需阶数远高于 IIR 滤波器。相应地,这些滤波器的延迟通常比同等性能的 IIR 滤波器大得多。

FIR 滤波器概述

FIR 滤波器

滤波器设计方法

描述

滤波器函数

加窗

对指定的矩形滤波器的截断傅里叶逆变换应用加窗

fir1, fir2, kaiserord

多频带(包含过渡带)

对频率范围的子带使用等波纹或最小二乘方法

firls, firpm, firpmord

约束最小二乘

根据最大误差约束,在整个频率范围内最小化平方积分误差

fircls, fircls1

任意响应

任意响应,包括非线性相位和复滤波器

cfirpm

升余弦

具有平滑正弦过渡的低通响应

rcosdesign

线性相位滤波器

除 cfirpm 外,所有 FIR 滤波器设计函数都只设计线性相位滤波器。这些滤波器系数或“抽头”遵循偶数或奇数对称关系。根据这种对称性以及滤波器的阶数 n 是偶数还是奇数,线性相位滤波器(存储在长度为 n +1 的向量 b 中)对其频率响应有一定的固有限制。

线性相位滤波器类型滤波器阶数系数的对称性响应 H(f)、f = 0响应 H(f)、f = 1(奈奎斯特)

I 类

偶数

偶数:

b(k)=b(n+2−k), k=1,...,n+1

无限制

无限制

II 类

奇数

偶数:

b(k)=b(n+2−k), k=1,...,n+1

无限制

H(1) = 0

III 类

偶数

奇数:

b(k)=−b(n+2−k), k=1,...,n+1

H(0) = 0

H(1) = 0

IV 类

奇数

奇数:

b(k)=−b(n+2−k), k=1,...,n+1

H(0) = 0

无限制

线性相位 FIR 滤波器的相位延迟和群延迟在整个频带内相等且恒定。对于 n 阶线性相位 FIR 滤波器,群延迟为 n/2,滤波后的信号延迟 n/2 个时间步(其傅里叶变换的幅值按滤波器的幅值响应进行缩放)。该属性保持通带中信号的波形;也就是说,没有相位失真。

默认情况下,函数 fir1、fir2、firls、firpm、fircls 和 fircls1 都可用于设计 I 类和 II 类线性相位 FIR 滤波器。rcosdesign 只用于设计 I 类滤波器。在给定 'hilbert' 或 'differentiator' 标志的情况下,firls 和 firpm 都可用于设计 III 和 IV 类线性相位 FIR 滤波器。cfirpm 可用于设计任何类型的线性相位滤波器和非线性相位滤波器。

注意

由于 II 类滤波器在奈奎斯特频率(“高”频率)下的频率响应为零,fir1 不用于设计 II 类高通和带阻滤波器。在这些情况下,如果 n 为奇数值,fir1 将阶加 1,并返回 I 类滤波器。

加窗方法

假设一个截止频率为 ω0 弧度/秒的理想的矩形数字低通滤波器。该滤波器在幅值小于 ω0 的所有频率上都具有幅值 1,在幅值介于 ω0 和 π 之间的频率上具有幅值 0。其冲激响应序列 h(n) 为

h(n)=12π∫π−πH(ω)ejωndω=12π∫ω0−ω0ejωndω=sinω0nπn

该滤波器不可实现,因为它的冲激响应是无限的和非因果的。要创建有限持续时间冲激响应,请通过应用加窗来截断它。通过在此截断中保留冲激响应的中心部分,可以获得线性相位 FIR 滤波器。例如,一个低通截止频率 ω0 为 0.4 π 弧度/秒的、长度为 51 的滤波器为

b = 0.4*sinc(0.4*(-25:25));

此处应用的加窗是简单的矩形窗。根据 Parseval 定理,长度为 51 的滤波器在积分最小二乘意义上最接近理想的低通滤波器。以下命令在 FVTool 中显示滤波器的频率响应:

fvtool(b,1)

请注意,下图中显示的 y 轴采用幅值的二次方。您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

响应中会出现振铃和波纹,尤其是在频带边缘附近。这种“吉布斯效应”不会随着滤波器长度的增加而消失,但非矩形窗会减小其幅值。在时域中将信号乘以一个窗函数会使信号在频域中发生卷积或平滑。将长度为 51 的汉明窗应用于滤波器,并使用 FVTool 显示结果:

b = 0.4*sinc(0.4*(-25:25));
b = b.*hamming(51)';
fvtool(b,1)

请注意,下图中显示的 y 轴采用幅值的二次方。您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

使用汉明窗可以大大降低振铃。这一改善以过渡带宽度和最优性为代价:加窗的滤波器需要更长时间从通带下降到阻带,且无法最小化平方误差积分。

标准频带 FIR 滤波器设计:fir1

fir1 使用最小二乘逼近计算滤波器系数,然后通过加窗对冲激响应进行平滑处理。有关加窗及其属性的概述,请参阅加窗法。fir1 类似于 IIR 滤波器的设计函数,因为它用于设计标准频带配置(低通、带通、高通和带阻)条件下的滤波器。

以下语句

n = 50;
Wn = 0.4;
b = fir1(n,Wn);

创建行向量 b,其中包含 n 阶汉明窗滤波器的系数。这是一个低通线性相位 FIR 滤波器,截止频率为 WnWn 是介于 0 和 1 之间的数字,其中 1 对应于奈奎斯特频率,即采样频率的一半。(与其他方法不同,此处 Wn 对应于 6 dB 点。)要获得高通滤波器,只需将 'high' 添加到函数的参数列表中。要获得带通或带阻滤波器,请将 Wn 指定为包含通带边缘频率的二元素向量。为带阻配置追加 'stop'

b = fir1(n,Wn,window) 使用列向量 window 中指定的窗口进行设计。向量 window 的长度必须为 n+1 个元素。如果未指定窗口,fir1 将应用汉明窗。

凯塞窗阶估计.  kaiserord 函数估计滤波器阶数、截止频率和凯塞窗 β 参数,使之满足一组给定的滤波器设定。在给定频带边缘向量和对应的幅值向量以及最大允许波纹的情况下,kaiserord 为 fir1 函数返回适当的输入参数。

多频带 FIR 滤波器设计:fir2

fir2 函数还可用于设计加窗的 FIR 滤波器,但具有任意形状的分段线性频率响应。这与 fir1 不同,后者仅设计具有标准低通、高通、带通和带阻配置的滤波器。

以下命令

n = 50;
f = [0 .4 .5 1];
m = [1  1  0 0];
b = fir2(n,f,m);

返回行向量 b,其中包含 n 阶 FIR 滤波器的 n+1 个系数,其频率幅值特征与向量 f 和 m 给出的频率幅值特征相匹配。f 是频率点的向量,范围从 0 到 1,其中 1 代表奈奎斯特频率。m 是向量,包含 f 中指定点的指定幅值响应。(该函数的对应 IIR 函数是 yulewalk,后者还可基于任意分段线性幅值响应设计滤波器。有关详细信息,请参阅 IIR 滤波器设计。)

具有过渡带的多频带 FIR 滤波器设计

与 fir1 和 fir2 函数相比,firls 和 firpm 函数提供更通用的指定理想滤波器的方法。这些函数用于设计希尔伯特变换器、微分器和其他具有奇数对称系数(III 类和 IV 类线性相位)的滤波器。它们还允许您包括误差没有最小化的过渡或“不重要”区域,并执行最小化的频带相关加权。

firls 函数是 fir1 和 fir2 函数的扩展,它用于最小化指定频率响应和实际频率响应之间误差平方的积分。

firpm 函数实现帕克斯-麦克莱伦算法,该算法使用雷米兹交换算法和切比雪夫逼近理论来设计在指定频率响应和实际频率响应之间具有最佳拟合的滤波器。这种滤波器可最小化指定频率响应和实际频率响应之间的最大误差,从这种意义上而言,它们是最优的滤波器;它们有时被称为 minimax 滤波器。以这种方式设计的滤波器在频率响应方面表现出等波纹特性,因此也称为等波纹滤波器。帕克斯-麦克莱伦 FIR 滤波器设计算法可能是最流行和最广泛使用的 FIR 滤波器设计方法。

firls 和 firpm 的语法相同;唯一的区别体现在最小化方案上。下一个示例说明用 firls 和 firpm 设计的滤波器如何反映这些不同方案。

基本配置

firls 和 firpm 的默认操作模式是设计 I 类或 II 类线性相位滤波器,具体取决于您所需的阶是偶数还是奇数。以下低通示例在 0 到 0.4 Hz 逼近振幅 1,在 0.5 到 1.0 Hz 逼近振幅 0:

n = 20;                    % Filter order
f = [0 0.4 0.5 1];         % Frequency band edges
a = [1  1  0 0];           % Amplitudes
b = firpm(n,f,a);

从 0.4 Hz 到 0.5 Hz,firpm 不执行误差最小化;这是一个过渡带或“不重要”区域。过渡带将您关心的频带中的误差降至最低,但代价是过渡速率变慢。在这种方式下,这些类型的滤波器具有固有折衷,类似于加窗的 FIR 设计。

要将最小二乘与等波纹滤波器设计进行比较,请使用 firls 创建一个类似的滤波器。键入

bb = firls(n,f,a);

并使用 FVTool 比较其频率响应:

fvtool(b,1,bb,1)

请注意,下图中显示的 y 轴采用幅值的二次方。您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

使用 firpm 设计的滤波器表现出等波纹行为。另请注意,firls 滤波器在大部分通带和阻带上都有更好的响应,但在频带边缘(f = 0.4 和 f = 0.5)处,响应不如 firpm 滤波器的响应理想。这表明,firpm 滤波器在通带和阻带上的最大误差较小,事实上,对于该频带边缘配置和滤波器长度来说,这是可能的最小值。

可以将频带视为短频率区间内的线。firpm 和 firls 使用此方案来表示具有任何过渡带的任何分段线性频率响应函数。firls 和 firpm 用于设计低通、高通、带通和带阻滤波器;以下是一个带通示例

f = [0 0.3  0.4  0.7  0.8  1];   % Band edges in pairs
a = [0  0    1    1    0   0];   % Bandpass filter amplitude

从技术上讲,这些 f 和 a 向量定义五个频带:

  • 两个阻带,从 0.0 到 0.3 和从 0.8 到 1.0

  • 一个通带,从 0.4 到 0.7

  • 两个过渡带,从 0.3 到 0.4 和从 0.7 到 0.8

以下为高通和带阻滤波器的示例

f = [0 0.7  0.8  1];            % Band edges in pairs
a = [0  0    1   1];            % Highpass filter amplitude
f = [0 0.3  0.4  0.5  0.8  1];  % Band edges in pairs
a = [1  1    0    0    1   1];  % Bandstop filter amplitude

以下是多频带带通滤波器的示例

f = [0 0.1 0.15 0.25 0.3 0.4 0.45 0.55 0.6 0.7 0.75 0.85 0.9 1];
a = [1  1   0    0    1   1   0    0    1   1   0    0    1  1];

另一种可能的滤波器具有连接通带和阻带的线作为过渡区域;这有助于控制宽过渡区域的“失控”幅值响应:

f = [0 0.4 0.42 0.48 0.5  1];
a = [1 1 0.8 0.2 0 0];   % Passband, linear transition, 
                         %  stopband
权重向量

firls 和 firpm 都允许您有所侧重地将某些频带的误差降至最低。为此,请在频率和振幅向量后指定权重向量。在以下低通等波纹滤波器示例中,阻带中的波纹比通带中的小 10 倍

n = 20;              % Filter order
f = [0 0.4 0.5 1];   % Frequency band edges
a = [1  1   0  0];   % Amplitudes
w = [1 10];          % Weight vector
b = firpm(n,f,a,w);

合法权重向量始终是 f 和 a 向量长度的一半;每个频带只能有一个对应权重。

反对称滤波器/希尔伯特变换器

当用尾部 'h' 或 'Hilbert' 选项调用时,firpm 和 firls 会设计奇对称的 FIR 滤波器,即 III 类(偶数阶)或 IV 类(奇数阶)线性相位滤波器。理想的希尔伯特变换器具有这种反对称属性,且在整个频率范围内振幅为 1。尝试以下逼近希尔伯特变换器,并使用 FVTool 对其绘图:

b = firpm(21,[0.05 1],[1 1],'h');       % Highpass Hilbert
bb = firpm(20,[0.05 0.95],[1 1],'h');   % Bandpass Hilbert
fvtool(b,1,bb,1)

通过这些滤波器,您可以求得信号 x 的延迟希尔伯特变换。

fs = 1000;            % Sampling frequency
t = (0:1/fs:2)';      % Two second time vector
x = sin(2*pi*300*t);  % 300 Hz sine wave example signal
xh = filter(bb,1,x);  % Hilbert transform of x

对应于 x 的分析信号是以 x 为实部、以 x 的希尔伯特变换为虚部的复信号。对于这种 FIR 方法(hilbert 函数的替代方法),您必须将 x 延迟一半滤波器阶数才能创建分析信号:

xd = [zeros(10,1); x(1:length(x)-10)];	    % Delay 10 samples
xa = xd + j*xh;                            % Analytic signal

这种方法不能直接用于奇数阶滤波器,因为奇数阶滤波器需要非整数延迟。在这种情况下,希尔伯特变换中所述的 hilbert 函数可估算解析信号。或者,使用 resample 函数将信号延迟非整数个样本。

微分器

信号在时域中的微分等效于信号的傅里叶变换乘以虚斜坡函数。也就是说,要对信号求导,请将其传递给具有响应 H(ω) = jω 的滤波器。使用 firpm 或 firls 和 'd' 或 'differentiator' 选项逼近理想的微分器(有延迟):

b = firpm(21,[0 1],[0 pi],'d');

对于 III 类滤波器,微分频带不应超过奈奎斯特频率,振幅向量必须反映此变化,以确保斜率正确:

bb = firpm(20,[0 0.9],[0 0.9*pi],'d');

在 'd' 模式下,firpm 在非零振幅频带中对误差加权 1/ω,以最小化最大相对误差。在 'd' 模式下,firls 在非零振幅频带中对误差加权 (1/ω)2。

下图显示上述微分器的幅值响应。

fvtool(b,1,bb,1)
legend('Odd order','Even order','Location','best')

约束最小二乘 FIR 滤波器设计

使用约束最小二乘 (CLS) FIR 滤波器设计函数时,您无需显式定义幅值响应过渡带即可设计 FIR 滤波器。省略过渡带设定的功能在很多情况下都很有用。例如,如果噪声和信号信息一起出现在同一个频带中,可能不清楚严格定义的过渡带应该出现在哪里。同样,如果过渡带的出现仅仅是为了控制滤波器响应中出现的吉布斯现象的结果,则可以省略过渡带设定。有关这种方法的讨论,请参阅 Selesnick、Lang 和 Burrus·[2]。

对于您指定的响应,CLS 方法不定义通带、阻带和过渡区域,而是接受截止频率(对于高通、低通、带通或带阻情况)或者通带和阻带边缘(对于多频带情况)。通过这种方式,CLS 方法可以隐式(而不是显式)定义过渡区域。

CLS 方法的主要特点是它使您能够定义上阈值和下阈值,其中包含幅值响应中允许的最大波纹。在给定此约束的情况下,该方法在滤波器响应的频率范围内(而不是在特定频带上)应用最小二乘误差最小化方法。误差最小化包括理想的矩形响应中的任何不连续区域。另一个好处是,该方法使您能够指定吉布斯现象产生的任意小的峰值。

有两个工具箱函数可实现这种设计方法。

描述

函数

约束最小二乘多频带 FIR 滤波器设计

fircls

低通和高通线性相位滤波器的约束最小二乘滤波器设计

fircls1

有关这些函数的调用语法的详细信息,请参阅函数参考中相应的参考说明。

基本低通和高通 CLS 滤波器设计

最基本的 CLS 设计函数 fircls1 使用这种方法设计低通和高通 FIR 滤波器。例如,假设您要设计一个 61 阶冲激响应滤波器,其截止频率为 0.3(归一化形式)。此外,还需要将约束设计过程的上限和下限定义为:

  • 与 1 的最大通带偏差(通带波纹)为 0.02。

  • 与 0 的最大阻带偏差(阻带波纹)为 0.008。

要使用 fircls1 逼近此设计问题,请使用以下命令:

n = 61;
wo = 0.3;
dp = 0.02;	
ds = 0.008;
h = fircls1(n,wo,dp,ds);
fvtool(h,1)

请注意,下面显示的 y 轴以幅值平方表示。您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

多频带 CLS 滤波器设计

fircls 使用相同的方法设计具有指定分段常量幅值响应的 FIR 滤波器。在本例中,您可以指定频带边缘的向量和对应的频带振幅向量。此外,您可以指定每个频带的最大波纹量。

例如,假设滤波器调用的设定为:

  • 从 0 到 0.3(归一化):振幅 0,上限 0.005,下限 –0.005

  • 从 0.3 到 0.5:振幅 0.5,上限 0.51,下限 0.49

  • 从 0.5 到 0.7:振幅 0,上限 0.03,下限 –0.03

  • 从 0.7 到 0.9:振幅 1,上限 1.02,下限 0.98

  • 从 0.9 到 1:振幅 0,上限 0.05,下限 –0.05

设计一个冲激响应阶数为 129 的 CLS 滤波器,满足以下设定:

n = 129;
f = [0 0.3 0.5 0.7 0.9 1];
a = [0 0.5 0 1 0];
up = [0.005 0.51 0.03 1.02 0.05];
lo = [-0.005 0.49 -0.03 0.98 -0.05];
h = fircls(n,f,a,up,lo);
fvtool(h,1)

请注意,下面显示的 y 轴以幅值平方表示。您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

加权 CLS 滤波器设计

加权 CLS 滤波器设计可用于设计低通或高通 FIR 滤波器,每个频带中具有误差最小化的相对加权。您可以使用 fircls1 函数指定最小二乘加权函数的通带和阻带边缘,还可指定表示阻带与通带加权比率的常数 k

例如,假设要设计一个冲激响应阶数为 55、归一化截止频率为 0.3 的 FIR 滤波器。还假设最大允许通带波纹为 0.02,最大允许阻带波纹为 0.004。此外,还需要添加以下加权要求:

  • 权重函数为 0.28(归一化)的通带边缘

  • 权重函数为 0.32 的阻带边缘

  • 阻带中的加权误差最小化是通带中的 10 倍

要使用 fircls1 逼近此问题,请键入

n = 55;
wo = 0.3;
dp = 0.02;
ds = 0.004;
wp = 0.28;
ws = 0.32;
k = 10;
h = fircls1(n,wo,dp,ds,wp,ws,k);
fvtool(h,1)

请注意,下面显示的 y 轴以幅值平方表示。您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

任意响应滤波器设计

cfirpm 滤波器设计函数为设计具有任意复响应的 FIR 滤波器提供工具。它与其他滤波器设计函数的不同之处在于如何指定滤波器的频率响应:它接受函数的名称,该函数返回在频率网格上计算的滤波器响应。这种能力使 cfirpm 成为一种高度通用和强大的滤波器设计方法。

这种设计方法可用于生成非线性相位 FIR 滤波器、不对称频率响应滤波器(具有复系数)或更多具有自定义频率响应的对称滤波器。

该设计算法使用扩展的雷米兹交换算法优化切比雪夫(或 minimax)误差来获得初始估计值。如果使用这种交换算法未能获得最佳滤波器,将改用上升-下降算法继续以收敛至最佳解。

多频带滤波器设计

以具有以下特殊频域特征的多频带滤波器为例。

频带

振幅

优化权重

[–1 –0.5]

[5 1]

1

[–0.4 +0.3]

[2 2]

10

[+0.4 +0.8]

[2 1]

5

可以使用预定义的频率响应函数 multiband 设计线性相位多频带滤波器,如下所示:

b = cfirpm(38, [-1 -0.5 -0.4 0.3 0.4 0.8], ...
               {'multiband', [5 1 2 2 2 1]}, [1 10 5]);

对于多频带滤波器的特定情况,我们可以使用类似于 firpm 语法的简化滤波器设计表示法:

b = cfirpm(38,[-1 -0.5 -0.4 0.3 0.4 0.8], ...
              [5 1 2 2 2 1], [1 10 5]);

与 firpm 一样,频带边缘向量被传递给 cfirpm。该向量定义执行优化的频带;请注意,有两个过渡带,从 –0.5 到 –0.4 和从 0.3 到 0.4。

采用上述任一方法,您都可以获得频率响应,并在 FVTool 中使用线性刻度绘制响应:

fvtool(b,1)

请注意,下面显示的数据范围是 (-pi,pi)

此多频带滤波器具有复数响应,这是预期的结果,因为频域不对称。您也可以从 FVTool 工具栏中选择绘制冲激响应,如下所示。

减少延迟的滤波器设计

假设要设计一个具有半奈奎斯特截止频率的 62 抽头低通滤波器。如果我们为 lowpass 滤波器设计函数指定一个负偏移值,则该设计的群延迟偏移会明显小于标准线性相位设计的群延迟偏移。此滤波器设计的计算如下:

b = cfirpm(61,[0 0.5 0.55 1],{'lowpass',-16});

由此产生的幅值响应为

fvtool(b,1)

y 轴采用幅值平方,您可以通过右键点击轴标签并从菜单中选择幅值平方来进行此设置。

滤波器的群延迟显示偏移已从 N/2 减小到 N/2-16(即从 30.5 到 14.5)。然而,现在通带区域中的群延迟不再平坦。要创建此图,请点击工具栏上的群延迟响应按钮。

如果我们将此非线性相位滤波器与有精确的 14.5 个样本的群延迟的线性相位滤波器进行比较,得到的滤波器的阶数为 2*14.5,即 29。使用 b = cfirpm(29,[0 0.5 0.55 1],'lowpass') 时,29 阶滤波器的通带和阻带波纹要大得多。这些比较可以帮助您决定哪种滤波器更适合特定的应用。

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

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

相关文章

关于Android Studio 同步Gradle失败的解决方案

(1)打开Android Studio的Settings找到Gradle的目录 (2)打开本地文件目录,找到对应的gradle版本,可以通过Index of /gradle/ 下载gradle压缩包。把目录中gradle-7.0.2-bin\一堆字符\ 下 的.lck 和.part文…

数据管理系统-week1-文件系统、数据库和数据库管理系统

文章目录 前言一、 文件系统文件系统的限制 二、 数据库系统三、 数据库管理系统参考文献 前言 一、 文件系统 对于更高级的数据处理应用程序来说,基于数据块的持久存储逻辑模型过于简单数据块序列被划分为称为文件的数据块的可变子序列,与文件相关的名…

香港云服务器用于跨境电商外贸

港作为国际金融中心和互联网枢纽,具有非常发达的网络基础设施和优质的网络连接。这意味着在香港租用云服务器,外贸企业可以享受到高速稳定的网络连接,确保数据传输的安全和稳定性。这对于外贸企业来说至关重要,因为他们需要频繁地…

html+css+javascript打造网页内容浮动导航菜单

1需求分析 前段时间把“圳品”信息发布到网站上了,内容包括四大块: 按分布区域统计分析按产品类别统计分析按认定时间统计分析河池市“圳品”清单 导致网页很长,有同事反映说查看起来不是很方便,于是决定加上一个网页内容浮动导…

视通科技新品发布:4K30分布式编解码一体机,高性价比之选!

随着信息技术的日新月异,各领域对于音视频传输、控制和显示等方面的需求呈现出爆发式的增长。这种需求的增长源于多种因素,包括但不限于高清视频的普及,实时音视频通信的广泛应用,以及各种显示设备的升级换代。 在这样的背景下&a…

大数据治理——为业务提供持续的、可度量的价值(一)

目录 大数据治理——为业务提供持续的、可度量的价值... 1 概述... 2 大数据治理系列... 2 第一部分:大数据治理统一流程模型概述和明确元数据管理策略... 2 第二部分:元数据集成体系结构... 15 第三部分:实施元数据管理... 25 第四部…

基于ubuntu22.04手动安装openstack——2023.2版本(最新版)的问题汇总

前言:基本上按照openstack官方网站动手可以搭建成功(如有需要私信发部署文档)。 但是任然有些小问题,所以汇总如下。 第一个问题 问题: ubuntu搭建2023.2版本neutorn报错,ERROR neutron.plugins.ml2.driv…

传奇GOM引擎微端连接不上如何解决

Gom传奇引擎的微端连不上的原因可能有很多,比如网络问题、服务器配置问题、版本兼容性问题等。1.检查网络连接:首先要确保你的网络连接稳定。如果遇到网络问题,比如网络延迟过高,可能会导致你无法连接到服务器。建议使用稳定的网络…

Linux-基础知识

1.快捷键 ctrlc 强制停止 ctrld 退出或登出 history 查看历史命令(!/ctrlr输入内容去匹配历史命令) 光标移动快捷键 ctrla,跳到命令开头 ctrle,跳到命令结尾 ctrl键盘左键,向左跳一个单词 ctrl键盘右键&…

Maven打包引入本地依赖包

Maven打包引入本地依赖包 SpringBoot 工程,Maven 在构建项目时,如何引入本地 Jar 包? 适合场景: 引用的依赖不在 Maven 仓库第三方公司提供的 SDK 包Maven 内网离线开发引入被定制改动过的 Jar 包 解决方法: 在 I…

数据分析实战 | KNN算法——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型改进 十一、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接:https://dow…

共享变量可见性问题以及解决方案

文章目录 1. 简介2. 解决方案 1. 简介 首先在了解可见性问题之前我们首先需要给出Java 内存模型的定义(JMM),java讲内存模型抽象为两个部分,主存以及工作内存,主 存也就是所有线程所共享的一段存储空间,工…

Netty--NIO(Non-blocking IO)基础--三大组件

NIO(Non-blocking IO)是一种非阻塞的IO模型,它通过引入Channel和Selector的概念,使得一个线程能够管理多个通道,从而提高了IO操作的效率。本文将介绍NIO的三大组件:Channel、Buffer、以及Selector&#xff…

GEE:遥感影像二值化

作者:CSDN @ _养乐多_ 在Google Earth Engine(GEE)中,图像二值化是将图像中的像素值转换为二进制(0或1)的过程。这通常用于将连续的遥感图像转换为只有两个值的二值图像,以突出图像中的特定特征或区域。 结果如下图所示,将NDVI图像中,大于0.3的值设置为1(黑色),小…

SQL 算数函数

AVG() 求数值列的平均值。 具体计算过程:其通过对表中行数计数并计算特定数值列的列值之和,求得该列的平均值。 语法: SELECT AVG(column_name) FROM table_name; 当参数 column_name 列中的数据均为空时,结果会返回 NULL。 …

Ubuntu(WSL2) mysql8.0.31 源码安装

要在 Ubuntu 上使用调试功能安装 MySQL 8.0 的源码,可以按照以下详细步骤进行操作: 1. 更新系统 首先,确保你的 Ubuntu 系统是最新的。运行以下命令更新系统软件包: sudo apt update sudo apt upgrade 2. 下载 MySQL 源码 访…

【ATTCK】MITRE Caldera -引导规划器

一、Caldera 概念 在详细介绍新的引导式规划器之前,我们先回顾一下与 Caldera 相关的概念的一些定义。 能力是 Caldera 可以执行的最小原子动作。对手由一组能力组成。例如,旨在发现和泄露感兴趣的文件的对手可能具有发现文件、创建暂存目录、将发现的文…

Visual Studio 2019下编译OpenCV 4.7 与OpenCV 4.7 contrib

一、环境 使用的环境是Win10,Visual Studio 2019,Cmake3.28,cdua 11.7,cudnn 8.5,如果只是在CPU环境下使用,则不用安装CUDA。要使用GPU处理,安装好CUDA之后,要测试安装的CUDA是否能用。不能正常使用的话,添加一下系统…

基于vue的cron表达式组件——vue-crontab插件

前言: vue 的 cron 组件,支持解析/反解析 cron 表达式,生成最近五次的符合条件时间,依赖 vue2 和 element-ui 效果图: 一、下载安装依赖插件 npm install vcrontab 二、引用方式 //全局引入 import vcrontab f…

CKA认证模块②-K8S企业运维和落地实战

CKA认证模块②-K8S企业运维和落地实战 Pod高级实战-Pod生命周期-启动钩子,停止钩子 Pod生命周期完整流程介绍 容器钩子; 容器探测; Pod重启策略; Pod的终止过程; Init容器; 初始化容器最佳实践 初始化容器与主容器区别是? init容器没有readinessProbe… [rootk8s-mast…