音频进阶学习二十四——IIR滤波器设计方法

文章目录

  • 前言
  • 一、滤波器设计要求
    • 1.选频滤波器种类
    • 2.通带、阻带、过度带
    • 3.滤波器设计指标
  • 二、IIR滤波器的设计过程
    • 1.设计方法
    • 2.常见的模拟滤波器设计
      • 1)巴特沃斯滤波器(Butterworth Filter)
      • 2)切比雪夫滤波器(Chebyshev Filter)
      • 3)椭圆滤波器(Elliptic Filter)
    • 3.三种滤波器设计对比
  • 三、matlab代码
    • 1.巴特沃斯滤波器(Butterworth Filter)
    • 2.切比雪夫滤波器(Chebyshev Filter)
    • 3.椭圆滤波器(Elliptic Filter)
  • 总结


前言

本章内容会先介绍滤波器的指标。设计一个IIR滤波器需要考虑到它的通带、阻带和过渡带,以及它的应用场景。随后再介绍设计IIR滤波器的方法和流程。

其中在设计数字滤波器时,需要考虑它的通带截止频率和阻带截止频率。而数字滤波器的设计方法时是依靠逼近模拟滤波器的方式实现,所以本文中会介绍三种常见的模拟滤波器,通过这三种模拟滤波器可以设计出在计算机中应用的数字滤波器。

|版本声明:山河君,未经博主允许,禁止转载


一、滤波器设计要求

1.选频滤波器种类

在音频进阶学习十四——滤波器的种类和实现方式总已经对于滤波器的种类做了介绍,这里复习一下:

选频滤波器种类原理作用
低通滤波器(Low-Pass Filter, LPF)允许低频信号通过,阻止高频信号如从含噪声的信号中去除高频噪声
高通滤波器(High-Pass Filter, HPF)允许高频信号通过,阻止低频信号如去除信号中的低频干扰,如电力线噪声
带通滤波器(Band-Pass Filter, BPF)允许某一频段范围内的信号通过,抑制其他频段的信号如在通信系统中提取特定频段的信号
带阻滤波器(Band-Stop Filter, BSF)阻止某一频段的信号通过,而允许其他频段信号通过如去除50 Hz或60 Hz的电源噪声
全通滤波器(All-Pass Filter)允许所有频率的信号通过,但会改变它们的相位而不是幅度主要用于调整信号的相位响应

对于这几种滤波器可以以下图表示出来,其中左边高的地方允许频率通过,而右边方框内的是允许频率通过,其中两个红线以内的是一个周期内部的表现。
在这里插入图片描述
对于理想滤波器而言,系统的冲激响应应该是非因果和无限长的,而这种基本上是不可实现的,所以在数字滤波器中,是允许幅度响应存在一定范围内的误差,并且存在过度使得幅度响应变化更平滑。

2.通带、阻带、过度带

我们知道滤波器是一个系统,而滤波器作用的本质就是通过其冲激响应函数对输入信号进行卷积,从而得到输出信号。上文中对于幅度响应的误差的表述,在滤波器的频率响应中使用通带、阻带和过渡带来表征,它们帮助定义滤波器如何处理信号的不同频率成分。
结合图像表示
在这里插入图片描述

  • 通带
    • 定义:通带是指滤波器允许信号通过的频率范围。在这个频率范围内,信号几乎没有衰减,或者衰减非常小。
    • δ p \delta_p δp是通带峰波纹值, ω p \omega_p ωp是通带截止频率
    • 特征:在通带内,信号的幅度几乎保持不变。对于低通滤波器,通带是低频范围;对于高通滤波器,通带是高频范围;对于带通滤波器,通带是位于两个截止频率之间的频率范围。
  • 过度带
    • 定义:过渡带是指从通带到阻带的过渡区域,也就是说,是滤波器频率响应发生明显变化的区域。例如上图中 [ δ s , δ p ] [\delta_s,\delta_p] [δs,δp]之间。
    • 特征:过渡带的宽度决定了滤波器的频率响应变化的速率。过渡带越宽,滤波器的设计越简单;过渡带越窄,滤波器的设计越复杂。
  • 阻带
    • 定义:阻带是指滤波器显著衰减或完全阻止信号通过的频率范围。在这个范围内,信号的幅度衰减很大。例如上图中的 [ 0 , δ s ] [0,\delta_s] [0,δs]区间内。
    • δ s \delta_s δs是阻带峰波纹值, ω s \omega_s ωs是阻带截止频率
    • 特征:在阻带内,信号的幅度几乎被完全抑制。对于低通滤波器,阻带是高频范围;对于高通滤波器,阻带是低频范围;对于带通滤波器,阻带是位于两个截止频率外的频率范围。

值得注意的是: ω \omega ω Ω \Omega Ω的归一化处理,即 ω = 2 π f Ω \omega=\frac{2\pi f}{\Omega} ω=Ω2πf,例如采样率是 16 k H z 16kHz 16kHz,截止频率是 500 H z 500Hz 500Hz,那么 ω p = 2 π 5 × 1 0 2 16 × 1 0 3 = 0.0625 π \omega_p=\frac{2\pi 5\times 10^2}{16\times 10^3}=0.0625\pi ωp=16×1032π5×102=0.0625π

3.滤波器设计指标

滤波器设计的主要目标是使其满足特定的性能要求,不同的应用场景和要求会导致不同的滤波器设计指标。常见的滤波器设计指标包括:

  • 截止频率
    • 定义:滤波器区分通带和阻带的频率点,通常称为截止频率。对于低通滤波器,截止频率是信号通过的最高频率;对于高通滤波器,则是信号通过的最低频率;对于带通和带阻滤波器,则有两个截止频率。
    • 要求:需要明确设定在哪个频率处滤波器的行为发生显著变化。
  • 通带
    • 定义:滤波器允许信号通过的频率范围,在此范围内信号不受衰减或损失,或者衰减非常小(通常小于某个特定的阈值)。
    • 指标:需要指定通带的频率范围和最大允许的衰减(通常称为通带波动或通带增益)。
  • 阻带
    • 定义:滤波器抑制信号的频率范围,在此范围内信号的幅度应该被显著减少或完全抑制。
    • 指标:需要指定阻带的频率范围和最小的衰减量(通常称为阻带衰减)。
  • 过渡带
    • 定义:从通带到阻带的过渡区域,表示频率响应从允许信号通过到完全衰减的区域。过渡带越窄,滤波器的设计越复杂。
    • 要求:设计时需要控制过渡带的宽度,过渡带的宽度与滤波器的阶数密切相关,阶数越高,过渡带越窄。
  • 衰减量
    • 定义:滤波器在阻带内的信号衰减量,通常用分贝 (dB) 来表示。较高的衰减值表示滤波器能够更好地抑制不需要的频率。
    • 指标:需要指定阻带的最小衰减量,通常需要大于某个值(例如40 dB、60 dB等),计算方式为 d b = 20 log ⁡ 10 ∣ H ( e j ω ) ∣ db=20\log_{10}|H(e^{j\omega})| db=20log10H(e)
  • 通带波动
    • 定义:滤波器在通带内的频率响应波动,表示在通带范围内的增益变化。
    • 指标:指定通带波动的最大值,通常以dB为单位。较小的通带波动意味着滤波器在通带内更加平坦,信号失真较小。
  • 群延迟
    • 要求:群延迟表示信号的各个频率成分在通过滤波器时的延迟差异。理想情况下,滤波器应该具有恒定的群延迟,以避免信号的相位失真。
    • 群延迟应尽可能平坦,以减少信号的相位失真。
  • 滤波器阶数
    • 要求:滤波器的阶数通常与其复杂度和过渡带的宽度成正比。阶数越高,滤波器的设计越复杂,过渡带越窄,性能越好,但计算量也增加。
    • 通过选择适当的阶数来平衡性能和计算复杂度。

二、IIR滤波器的设计过程

1.设计方法

在之前的文章音频进阶学习十四——滤波器的种类和实现方式总中,我们介绍过FIR滤波器和IIR滤波器的区别,IIR的存在反馈机制而FIR不存在反馈机制,因此IIR的表述方式是差分方程而FIR的表述方式是卷积和,这也就意味着IIR在设计时需要考虑极点在单位圆上(FIR不存在极点)才能保证系统稳定。

设计IIR滤波器的设计方法通常是由模拟滤波器设计的结果进行转换,过程如下图
在这里插入图片描述

而通过模拟滤波器来转换数字滤波器的原因有:

  • 直接设计数字滤波器需要考虑采样频率、量化误差、稳定性、失真度、复杂性等等因素
  • 模拟逼近技术可以保证精度更准确,更平滑,且有大量成熟的图表
  • 从模拟滤波器的 s s s域(拉普拉斯变换用于分析连续时间复平面)转为数字滤波器中的 z z z域方法成熟且稳定
    • s s s域的虚轴 j Ω j\Omega jΩ能够映射到 z z z平面的单位圆上
    • 稳定的模拟传递函数可以变成稳定的数字传递函数

值得注意的是:这种模拟滤波器转换方法不保证相位特性(FIR滤波器通常追求线性相位)。

2.常见的模拟滤波器设计

1)巴特沃斯滤波器(Butterworth Filter)

巴特沃斯滤波器是一种具有最大平坦频率响应的滤波器设计。巴特沃斯逼近技术通过最大化通带内频率响应的平坦性来设计滤波器,其特点是:

  • 滤波器的通带没有波纹(响应非常平坦)。
  • 频率响应的衰减速度相对较慢。

它幅频响应表示为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ( Ω Ω c ) 2 N |H_a(j\Omega)|^2=\frac{1}{1+(\frac{\Omega}{\Omega_c})^{2N}} Ha(jΩ)2=1+(ΩcΩ)2N1

  • ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 Ha(jΩ)2:滤波器的幅频响应
  • Ω \Omega Ω:频率分量
  • Ω c \Omega_c Ωc:截止频率
  • N N N:滤波器阶数

使用matlab(代码见下文)画出来对于不同的滤波器阶数 2 , 4 , 6 , 8 2,4,6,8 2,4,6,8为:
在这里插入图片描述

2)切比雪夫滤波器(Chebyshev Filter)

切比雪夫逼近设计技术采用的是最小误差逼近的方法,这种方法允许滤波器在通带和阻带之间引入波纹,但是通过优化波纹的分布,使得总体的误差最小。切比雪夫滤波器分为两种:

  • 切比雪夫 I 型:在通带内有波纹,而在阻带内具有较快的衰减。
  • 切比雪夫 II 型:在阻带内有波纹,而在通带内具有较快的衰减。

切比雪夫逼近技术通常用于对快速衰减有较高要求,但可以容忍通带波纹的场景。
它幅频响应表示为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ε 2 C N 2 ( Ω Ω c ) |H_a(j\Omega)|^2=\frac{1}{1+\varepsilon^2C_N^2(\frac{\Omega}{\Omega_c})} Ha(jΩ)2=1+ε2CN2(ΩcΩ)1

  • ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 Ha(jΩ)2:滤波器的幅频响应
  • Ω \Omega Ω:频率分量
  • Ω c \Omega_c Ωc:截止频率
  • N N N:滤波器阶数
  • C N C_N CN:N阶切比雪夫多项式。这个常数影响滤波器的频率响应特性。
  • ε \varepsilon ε:波纹系数。它决定了滤波器的频率响应的形状,尤其是在过渡带的宽度。

在这里插入图片描述

3)椭圆滤波器(Elliptic Filter)

椭圆逼近技术允许在通带和阻带之间同时引入波纹,这样可以进一步优化滤波器的性能,使得通带和阻带之间的过渡更快。椭圆滤波器的设计可以达到最佳的频率选择性,但也会有较大的波纹。

它幅频响应表示为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ε 2 J N 2 ( Ω Ω c ) |H_a(j\Omega)|^2=\frac{1}{1+\varepsilon^2J_N^2(\frac{\Omega}{\Omega_c})} Ha(jΩ)2=1+ε2JN2(ΩcΩ)1

  • ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 Ha(jΩ)2:滤波器的幅频响应
  • Ω \Omega Ω:频率分量
  • Ω c \Omega_c Ωc:截止频率
  • N N N:滤波器阶数
  • J N J_N JN:这是N阶雅克比椭圆函数。这个常数影响滤波器的频率响应特性。
  • ε \varepsilon ε:波纹系数。它决定了滤波器的频率响应的形状,尤其是在过渡带的宽度。

在这里插入图片描述

3.三种滤波器设计对比

滤波器类型通带特性阻带特性过渡带陡峭度相位响应
巴特沃斯平滑无波纹平滑无波纹过渡带较宽,较缓慢相位线性,延迟小
切比雪夫 I有通带波纹阻带单调衰减过渡带比巴特沃斯更陡相位失真较大
切比雪夫 II通带单调阻带有波纹过渡带比巴特沃斯更陡相位失真较大
椭圆滤波器通带和阻带都有波纹过渡带最陡峭最短过渡带相位失真最大

三、matlab代码

1.巴特沃斯滤波器(Butterworth Filter)

% 设定滤波器的截止频率(以单位频率表示,1为Nyquist频率的一半)
cutoff_freq = 0.3;% 设定采样频率(假设采样频率为1)
sampling_freq = 1;% 定义滤波器的阶数
orders = [2, 4, 6, 8];figure;
hold on;for i = 1:length(orders)% 设计巴特沃斯低通滤波器[b, a] = butter(orders(i), cutoff_freq);% 绘制频率响应[h, f] = freqz(b, a, 512, sampling_freq);plot(f, abs(h), 'DisplayName', ['Order ' num2str(orders(i))]);
endlegend show;
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Butterworth Filter Frequency Response (Different Orders)');
grid on;
hold off;

2.切比雪夫滤波器(Chebyshev Filter)

% 设置滤波器的截止频率
cutoff_freq = 0.3;  % 截止频率,归一化到Nyquist频率% 设置滤波器的阶数
orders = [2, 4, 6, 8];% 设置切比雪夫滤波器的波纹大小
ripple_cheby1 = 1;  % 以dB为单位,通带波纹大小
ripple_cheby2 = 20; % 以dB为单位,II型滤波器的阻带波纹大小,较小的波纹使阻带更低figure;
hold on;
for i = 1:length(orders)% 设计切比雪夫I型低通滤波器[b1, a1] = cheby1(orders(i), ripple_cheby1, cutoff_freq);[h1, f] = freqz(b1, a1, 512, 1);plot(f, abs(h1), 'DisplayName', ['Chebyshev I - Order ' num2str(orders(i))]);
endlegend show;
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Chebyshev I Filter Frequency Response (Different Orders)');
grid on;
hold off;figure;
hold on;
for i = 1:length(orders)% 设计切比雪夫II型低通滤波器[b2, a2] = cheby2(orders(i), ripple_cheby2, cutoff_freq);[h2, f] = freqz(b2, a2, 512, 1);plot(f, abs(h2), '--', 'DisplayName', ['Chebyshev II - Order ' num2str(orders(i))]);
endlegend show;
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Chebyshev II Filter Frequency Response (Different Orders)');
grid on;
hold off;

3.椭圆滤波器(Elliptic Filter)

% 设置滤波器的截止频率
cutoff_freq = 0.3;  % 截止频率,归一化到Nyquist频率% 设置滤波器的阶数和波纹大小
orders = [2, 4, 6, 8];  % 不同阶数
ripple_pass = 1;         % 通带波纹大小(dB)
ripple_stop = 30;        % 阻带波纹大小(dB)% 创建一个图形窗口
figure;
hold on;% 绘制不同阶数的椭圆滤波器频率响应
for i = 1:length(orders)% 设计椭圆滤波器[b, a] = ellip(orders(i), ripple_pass, ripple_stop, cutoff_freq);% 计算频率响应[h, f] = freqz(b, a, 512, 1);% 绘制频率响应plot(f, abs(h), 'DisplayName', ['Order ' num2str(orders(i))]);
end% 添加图例、标签和标题
legend show;
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Elliptic Filter Frequency Response (Different Orders)');
grid on;
hold off;

总结

本文中给出了滤波器设计时的指标,并且根据逼近模拟滤波器的方法设计数字滤波器的过程。其中通过模拟滤波器传递函数转换为数字滤波器的传递函数有两种方法:冲激响应不变法、双线性交换法。这两种方法各有优缺点和应用场景。

在文章最后,给出了常见的三种模拟滤波器以及通过matlab画出的幅频响应,那么下一章中,将使用巴特沃斯滤波器通过冲激响应不变法设计出一个低通滤波器。

反正收藏也不会看,不如点个赞吧!

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

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

相关文章

vue3源码分析 -- runtime

runtime运行时,主要在packages/runtime-core目录下,核心提供了h、render等函数。在理解它们之前,我们需要了解下HTML DOM 树和虚拟 DOM等概念 HTML DOM 树 通过节点构成的一个树形结构,我们称为HTML DOM节点树。DOM 文档里面做了…

清明假期在即

2025年4月2日,6~22℃,一般 遇见的事:这么都是清明出去玩?你们不扫墓的么。 感受到的情绪:当精力不放在一个人身上,你就会看到很多人,其实可以去接触的。 反思:抖音上那么多不幸和幸…

tomcat 目录结构组成

文章目录 背景文件结构层级一些常用的路径 背景 现在非常多的 java web 服务部署在 linux 服务器中,我们服务器中的 tomcat 会有各种文件路径,看下它有哪些文件 文件结构层级 ├── bin/ # 核心脚本和启动文件 ├── conf/ # …

多层内网渗透测试虚拟仿真实验环境(Tomcat、ladon64、frp、Weblogic、权限维持、SSH Server Wrapper后门)

在线环境:https://www.yijinglab.com/ 拓扑图 信息收集 IP地址扫描 确定目标IP为10.1.1.121 全端口扫描 访问靶机8080端口,发现目标是一个Tomcat服务,版本

NOIP2010提高组.引水入城

*前置题目 901. 滑雪 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 310, INF 0x3f3f3f3f; const int dx[4] {0, -1, 0, 1}, dy[4] {1, 0, -1, 0};int n, m, h[N][N]; int f[N][N]; int ans;int dfs(i…

Share02-小小脚本大大能量

各位看官你们好&#xff0c;又是一篇共享知识点的文章&#xff0c;今天我们来聊一聊脚本在我们上位组态中的作用。各个厂家的上位软件或者触屏软件都内嵌了脚本功能&#xff0c;有的是二次开发的固定指令格式&#xff0c;有的可以接收广域的标准语言指令。它带给我们更多的方便…

LangChain接入azureopenai步骤(2025年初)

背景&#xff1a; 为了快速且规范的实现ai应用&#xff0c;可使用LangChain框架&#xff0c;便于后期维护。虽然deepseek异军突起&#xff0c;在终端用户占有率很高&#xff0c;但是仔细查阅相关api接口&#xff0c;尤其是自有知识库需要使用的文本向量化模型方面&#xff0c;o…

阿里云国际站代理商:模型训练中断数据丢失怎么办?

定期保存训练状态&#xff1a;在训练过程中&#xff0c;设定自动保存训练状态的频率&#xff0c;将模型的参数、优化器状态、训练数据的中间结果等定期保存到存储介质上。这样&#xff0c;当中断发生时&#xff0c;可以恢复到上次保存的状态&#xff0c;避免训练进度的损失。 …

C++17更新内容汇总

C17 是 C14 的进一步改进版本&#xff0c;它引入了许多增强特性&#xff0c;优化了语法&#xff0c;并提升了编译期计算能力。以下是 C17 的主要更新内容&#xff1a; 1. 结构化绑定&#xff08;Structured Bindings&#xff09; 允许同时解构多个变量&#xff0c;从 std::tup…

2025年Axure RP9无法免费使用Axure Cloud的解决方案

解决方案 更换新账号&#xff0c;换了一个邮箱注册&#xff0c;再登陆&#xff0c;又会给你30天的试用期。 对&#xff0c;办法就是换个邮箱注册&#xff0c;又续上30天的试用期。

供应链中的的“四流合一”

在供应链中&#xff0c;物流、资金流、信息流、商流是共同存在的&#xff0c;商流、信息流和资金流的结合将更好的支持和加强供应链上、下游企业之间的货物、服务往来&#xff08;物流&#xff09;。 一、商流 在供应链中&#xff0c;上下游供应商的资金链条均可被金融服务机构…

MonkeyDev 如何创建一个root级级别的app

前提条件:有越狱的手机,XCode中已经安装了Monkeydev 1. 和普通应用一个创建一个ios的工程 2. 在App的TARGETS>build setting> 中设置Apple Development 3. 设置User-Defined的配置 CODE_SIGNING_ALLOWED = NO MonkeyDevBuildPackageOnAnyBuild = NO MonkeyDevClearUi…

Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)

目录 1. TODAY()2. DATE()3. EOMONTH()4. YEAR()5. MONTH()6. DAY()7. WEEKDAY()8. WEEKNUM()9. DATEDIF()10.&#x1f4cc; 函数扩展与应用11. &#x1f4da; 时间函数基础概念与分类 Excel 提供了许多 日期与时间类型的函数&#xff0c;用于操作与处理日期或时间数据。这些函…

Lumerical ------ Edge coupler design

Lumerical ------ Edge coupler design 引言正文无 Si Substrate 的仿真步骤有 Si Substrate 的仿真步骤引言 本文,我们将使用官方提供的 Edge coupler 设计教程,但是中间会带有作者本人的设计的感悟。 正文 无 Si Substrate 的仿真步骤 打开 Edge_Coupler_No_Substrate.l…

Spring笔记06-数据持久化

在 Spring 中&#xff0c;数据持久化是将应用程序中的数据保存到持久化存储&#xff08;如数据库&#xff09;中的过程 &#xff0c;主要通过以下几种方式实现&#xff1a; 1. JDBC&#xff08;Java Database Connectivity&#xff09; 原理&#xff1a;JDBC 是 Java 访问关系…

spring boot集成reids的 RedisTemplate 序列化器详细对比(官方及非官方)

RedisTemplate 序列化器详细对比&#xff08;官方及非官方&#xff09; 1. 官方序列化器 (1) JdkSerializationRedisSerializer 特点&#xff1a; 基于 Java 原生序列化&#xff08;Serializable&#xff09;。支持复杂对象&#xff08;需实现 Serializable 接口&#xff09;…

ssh私钥文件登录问题:Load key invalid format

问题 在mac上面使用私钥文件登录时候&#xff0c;出现了如下错误&#xff1a; Load key “xxx.pem”: invalid format 但是&#xff0c;这个私钥文件在win上面能够正常使用ssh进行远程登录。在mac上面不能。而且&#xff0c;分别在win和mac上面分别查看了这两个私钥文件的md5…

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…

教务系统ER图

实体 1. 学生&#xff1a;具有姓名、学号、性别、系编号、电话、出生年月等属性。学号通常是学生的唯一标识。 2. 课程&#xff1a;包含课程编号、课程名称、课程学分、课程学时等属性。课程编号一般用于唯一标识一门课程。 3. 教师&#xff1a;属性有教师编号、教师名字、性别…

大数据(4.4)Hive多表JOIN终极指南:7大关联类型与性能优化实战解析

目录 背景一、Hive JOIN类型与语法详解1. 基础JOIN类型2. 高级JOIN类型 二、JOIN实战案例与调优案例1&#xff1a;两表内连接&#xff08;订单与用户关联&#xff09;案例2&#xff1a;多表链式JOIN&#xff08;用户-订单-商品&#xff09;案例3&#xff1a;处理数据倾斜&#…