用Matlab生成扫频Cosine信号
生成扫频Cosine信号有个误区,我一开始想当然的认为只需要把扫频频率
f
(
t
)
f(t)
f
(
t
)
代入Cosine信号,即
x
(
t
)
=
c
o
s
(
2
⋅
π
⋅
f
(
t
)
⋅
t
)
x(t)=cos(2\cdot\pi\cdot f(t)\cdot t)
x
(
t
)
=
c
o
s
(
2
⋅
π
⋅
f
(
t
)
⋅
t
)
f
(
t
)
f(t)
f
(
t
)
是频率随时间变化的函数,常见的线性调频信号里
f
(
t
)
f(t)
f
(
t
)
是形如
f
(
t
)
=
a
+
b
t
f(t)=a+bt
f
(
t
)
=
a
+
b
t
的线性函数。这种简单的代入是错误的。正确的理解是,频率是相位关于时间的微分,相反地,相位是频率关于时间地积分。因此之前的式子改为
x
(
t
)
=
c
o
s
(
2
⋅
π
⋅
∫
f
(
t
)
d
t
⋅
t
)
x(t)=cos(2\cdot\pi\cdot\int f(t)dt\cdot t)
x
(
t
)
=
c
o
s
(
2
⋅
π
⋅
∫
f
(
t
)
d
t
⋅
t
)
就正确了。
举个例子,用Matlab生成采样率
F
s
=
100
M
H
z
Fs=100MHz
F
s
=
1
0
0
M
H
z
、载频
F
c
=
25
M
H
z
F_{c}=25MHz
F
c
=
2
5
M
H
z
、调制带宽
B
W
=
8
M
H
z
BW=8MHz
B
W
=
8
M
H
z
、调制时间为
T
R
P
=
2
m
s
TRP=2ms
T
R
P
=
2
m
s
的扫频Cosine信号。
Fs = 100e6; % 中频数字信号的采样率(Saps)
Ts = 1/Fs; % 中频数字信号的采样时间(Hz)
T = 10e-3; % 积分时间(s)
N = floor(T / Ts); % 积分时间(Count)
t = 0:Ts:(N - 1)*Ts;
ChirpFc = 25e6;
ChirpBW = 8e6;
ChirpTRP = 2e-3;
x = cos(2 * pi * cumsum((sawtooth(2 * pi * 1 / ChirpTRP * t', 1/2) * ChirpBW / 2 + ChirpFc) * Ts));
代码中函数
c
u
m
s
u
m
(
∗
)
cumsum(*)
c
u
m
s
u
m
(
∗
)
是积分函数。
生成信号的时频谱为
频率随时间变化为