确定信号分析:从傅里叶级数到信号带宽的Matlab实践
关键词:傅里叶变换 信号能量 功率谱密度 自相关函数 信号带宽 Matlab仿真
内容摘要:
本文系统讲解确定信号分析的核心理论与Matlab实践,涵盖周期信号的傅里叶级数展开、非周期信号的傅里叶变换及性质、信号能量与功率的计算、自相关函数与频谱密度的关系、信号带宽的定义与测量方法。提供方波信号傅里叶级数展开、离散傅里叶变换(DFT)频谱计算、能量与功率信号仿真等案例进行展示。
引言
确定信号是通信系统中信息传递的载体,其特性分析是理解信道传输与设备设计的基础。本文通过傅里叶变换、能量/功率分析、带宽计算等核心理论,结合Matlab代码实现,系统讲解信号分析的数学工具与工程应用。
一、周期信号的傅里叶级数展开
傅里叶级数的数学定义
周期信号
f
(
t
)
=
f
(
t
+
k
T
)
f(t) = f(t + kT)
f(t)=f(t+kT) 可展开为谐波分量的叠加:
f
(
t
)
=
∑
n
=
−
∞
∞
F
n
e
j
2
π
n
f
s
t
f(t) = \sum_{n=-\infty}^{\infty} F_n e^{j2\pi n f_s t}
f(t)=n=−∞∑∞Fnej2πnfst
其中傅里叶系数
F
n
F_n
Fn 的计算公式为:
F
n
=
{
1
T
∫
0
T
f
(
t
)
e
−
j
2
π
n
f
s
t
d
t
n
≠
0
1
T
∫
0
T
f
(
t
)
d
t
n
=
0
F_n = \begin{cases} \frac{1}{T} \int_0^T f(t) e^{-j2\pi n f_s t} dt & n \neq 0 \\ \frac{1}{T} \int_0^T f(t) dt & n = 0 \end{cases}
Fn={T1∫0Tf(t)e−j2πnfstdtT1∫0Tf(t)dtn=0n=0
方波信号的展开实例
考虑周期方波信号:
f
(
t
)
=
{
1
0
≤
t
<
T
2
−
1
T
2
≤
t
<
T
f(t) = \begin{cases} 1 & 0 \leq t < \frac{T}{2} \\ -1 & \frac{T}{2} \leq t < T \end{cases}
f(t)={1−10≤t<2T2T≤t<T
其傅里叶系数为:
F
n
=
sinc
(
n
2
)
e
−
j
π
n
/
2
F_n = \text{sinc}\left(\frac{n}{2}\right) e^{-j\pi n/2}
Fn=sinc(2n)e−jπn/2
Matlab实现与波形生成
通过截断傅里叶级数(取前 2 N + 1 2N+1 2N+1 项)逼近方波信号:
N = 100; % 谐波项数:2N+1
T = 1; % 信号周期
fs = 1/T; % 基频
N_sample = 128;% 每周期采样点数
dt = T/N_sample;
t = 0:dt:10*T - dt;
n = -N:N;
Fn = sinc(n/2) .* exp(-1j * n * pi / 2);
ft = zeros(1, length(t));
for m = -N:N
ft = ft + Fn(m + N + 1) * exp(1j * 2 * pi * m * fs * t);
end
plot(t, real(ft));
xlabel('时间 (t)'); ylabel('幅度'); title('周期方波的傅里叶级数近似波形');
结果分析:随着项数
N
N
N 增大,叠加波形逐渐逼近理想方波。
二、傅里叶变换与非周期信号分析
傅里叶变换公式
非周期信号的傅里叶变换对为:
S
(
f
)
=
∫
−
∞
∞
s
(
t
)
e
−
j
2
π
f
t
d
t
⇔
s
(
t
)
=
∫
−
∞
∞
S
(
f
)
e
j
2
π
f
t
d
f
S(f) = \int_{-\infty}^{\infty} s(t) e^{-j2\pi ft} dt \quad \Leftrightarrow \quad s(t) = \int_{-\infty}^{\infty} S(f) e^{j2\pi ft} df
S(f)=∫−∞∞s(t)e−j2πftdt⇔s(t)=∫−∞∞S(f)ej2πftdf
方波信号的频谱计算
对于单周期方波信号:
s
(
t
)
=
{
1
0
≤
t
<
T
2
−
1
T
2
≤
t
<
T
s(t) = \begin{cases} 1 & 0 \leq t < \frac{T}{2} \\ -1 & \frac{T}{2} \leq t < T \end{cases}
s(t)={1−10≤t<2T2T≤t<T
其傅里叶变换结果为:
S
(
f
)
=
j
π
f
T
2
2
e
−
j
π
f
T
sinc
2
(
f
T
2
)
S(f) = j\frac{\pi f T^2}{2} e^{-j\pi f T} \text{sinc}^2\left(\frac{f T}{2}\right)
S(f)=j2πfT2e−jπfTsinc2(2fT)
三、信号能量与功率的Matlab仿真
能量信号与功率信号
- 能量信号:满足 E s = ∫ − ∞ ∞ ∣ s ( t ) ∣ 2 d t < ∞ E_s = \int_{-\infty}^{\infty} |s(t)|^2 dt < \infty Es=∫−∞∞∣s(t)∣2dt<∞,如 s 1 ( t ) = e − 3 t U ( t ) cos ( 20 π t ) s_1(t) = e^{-3t}U(t)\cos(20\pi t) s1(t)=e−3tU(t)cos(20πt)。
- 功率信号:满足 P s = lim T → ∞ 1 T ∫ − T / 2 T / 2 ∣ s ( t ) ∣ 2 d t P_s = \lim_{T \to \infty} \frac{1}{T} \int_{-T/2}^{T/2} |s(t)|^2 dt Ps=limT→∞T1∫−T/2T/2∣s(t)∣2dt,如 s 2 ( t ) = U ( t ) cos ( 20 π t ) s_2(t) = U(t)\cos(20\pi t) s2(t)=U(t)cos(20πt)。
仿真代码示例
dt = 0.01;
t = 0:dt:5;
s1 = exp(-5*t) .* cos(20*pi*t); % 能量信号
s2 = cos(20*pi*t); % 功率信号
% 时域能量计算
E1 = sum(s1.^2) * dt;
% 频域能量计算
[f1, s1f] = T2F(t, s1);
df = f1(2) - f1(1);
E1_f = sum(abs(s1f).^2) * df;
disp(['时域能量:', num2str(E1), ',频域能量:', num2str(E1_f)]);
输出结果:时域与频域能量计算结果一致(如 0.0554
与 0.0553
),验证帕塞瓦尔定理。
四、信号带宽的定义与计算
3dB带宽与等效带宽
- 3dB带宽:功率谱下降至峰值一半的频率范围。
- 等效带宽:矩形谱带宽,满足总功率相等:
B e q = ∫ − ∞ ∞ P s ( f ) d f 2 ∣ P s ( f ) ∣ max B_{eq} = \frac{\int_{-\infty}^{\infty} P_s(f) df}{2 |P_s(f)|_{\text{max}}} Beq=2∣Ps(f)∣max∫−∞∞Ps(f)df
Matlab实现
T = 1;
N_sample = 128;
dt = T/N_sample;
t = 0:dt:T - dt;
st = [ones(1, N_sample/2), -ones(1, N_sample/2)]; % 方波信号
% 傅里叶变换与带宽计算
[f, sf] = T2F(t, st);
sf_max = max(abs(sf));
Bw_eq = sum(abs(sf).^2) * (f(2)-f(1)) / sf_max^2;
disp(['等效带宽:', num2str(Bw_eq), ' Hz']);
示例:方波信号的频谱与带宽计算:
问题描述
设信号波形为:
s
(
t
)
=
{
1
0
≤
t
<
T
2
−
1
T
2
≤
t
<
T
s(t) = \begin{cases} 1 & 0 \leq t < \frac{T}{2} \\ -1 & \frac{T}{2} \leq t < T \end{cases}
s(t)={1−10≤t<2T2T≤t<T
其中
T
=
1
T=1
T=1。要求通过Matlab完成以下任务:
- 计算信号的频谱 S ( f ) S(f) S(f);
- 绘制频谱图并标注3dB带宽;
- 计算信号的等效带宽。
%方波的傅里叶变换,sig_band.m
clear all;
close all;
T=1;
N_sample =128;
dt=1/N_sample;
t=0:dt:T-dt;
st=[ones(1,N_sample/2),-ones(1,N_sample/2)];
df=0.1/T;
Fx=1/dt;
f=-Fx:df:Fx-df;
%根据傅里叶变换计算得到的信号频谱
sff=T^2*j*pi*f*0.5.*exp(-j*2*pi*f*T).*sinc(f*T*0.5).*sinc(f*T*0.5);
plot(f,abs(sff),'r-')
axis([-10 10 0 1.7]);
hold on;
sf_max= max(abs(sff));
line([f(1) f(end)],[sf_max sf_max]); line([f(1) f(end)],[sf_max/sqrt(2) sf_max/sqrt(2)]); %交点处为信号功率下降3dB处
Bw_eq=sum(abs(sff).^2)*df/T/sf_max^2; %信号的等效带宽
五、DFT频谱计算的误差分析
时间窗效应与混叠现象
- 时间窗效应:截断信号导致频谱泄露。
- 混叠误差:采样率不足时高频分量折叠到低频。
频谱对比代码
% 方波频谱对比
T = 1;
N_sample = 128;
dt = T/N_sample;
t = 0:dt:T - dt;
st = [ones(1, N_sample/2), -ones(1, N_sample/2)];
% DFT计算与理论频谱
[f, sf] = T2F(t, st);
sff = T * 2j * pi * f * 0.5 .* exp(-1j*2*pi*f*T) .* sinc(f*T*0.5).^2;
% 绘图对比
plot(f, abs(sf), 'b', f, abs(sff), 'r--');
legend('DFT计算', '理论值');
xlabel('频率 (Hz)'); ylabel('幅度');
结果分析:DFT结果与理论频谱在高频部分存在差异,需增大采样率与时间窗长度以减少误差。
总结
确定信号分析通过傅里叶变换揭示信号的频域特性,结合能量、功率与带宽的定义,为通信系统设计提供理论支持。Matlab仿真直观展示了理论模型的实现细节与误差来源,实际应用中需合理选择参数以平衡计算精度与效率。