本篇为数字信号分析理论与实践(基于matlab)–华中科技大学,第二单元:信号函数与标准信号。主要包括三部分:常用的信号函数、用信号函数生成标准信号、应用实践(信号发生器和电子琴设计)
信号函数
一、什么是信号发生器?
信号发生器是一种产生电测信号的仪器,按信号波形或函数可分为正弦波信号、方波信号、三角波信号、脉冲信号和随机噪声信号等。
二、常用信号函数及其生成
1.正弦波
正弦波因信号波形是数学上的正弦曲线而得名。正弦波是一种单一频率成分的基本信号,在后续信号的频谱分析理论中将会学到,任何复杂信号都可以看成是一组不同频率、幅值、相位的正弦波信号的组合
y
(
t
)
=
A
sin
(
2
π
f
t
+
φ
)
y(t)=A\sin(2\pi ft+\varphi)
y(t)=Asin(2πft+φ)
y
(
t
)
=
A
sin
(
2
π
f
t
+
φ
)
y(t)=A\sin(2\pi ft+\varphi)
y(t)=Asin(2πft+φ)
A:幅值(y轴上的高度),f:频率 (震荡的快慢 ),
φ
\varphi
φ :正弦波的初相位, T:周期
在数字信号处理中,连续的正弦波函数必须将其离散化。
正弦波的离散采样公式如下 :
y
(
n
Δ
t
)
=
A
sin
(
2
π
f
n
Δ
t
+
φ
)
F
s
=
1
/
Δ
t
n
=
0
,
1
,
2
,
.
.
.
.
.
.
,
N
\begin{aligned} &y(n\Delta t)=A\sin(2\pi fn\Delta t+\varphi) \\ &Fs=1/\Delta t \\ &n=0,1,2,......,N \end{aligned}
y(nΔt)=Asin(2πfnΔt+φ)Fs=1/Δtn=0,1,2,......,N
t
=
n
Δ
t
t=n\Delta t
t=nΔt,
Δ
t
\Delta t
Δt为采样间隔
C语言样例如下
Fs=11025;
dt=1/5120;
T=1;
N=T/dt;
for(i=0;i<N;i++)
{
y[i]=10*sin(2*3.14*50*(i*dt))+60; y[i]=10*sin(2*3.14*50*(i*dt))+60;
}
matlab样例如下
Fs=11025; Fs=11025;
a=10; a=10;
f=50; f=50;
q=60; q=60;
T=1; T=1;
dt=1.0/Fs; dt=1.0/Fs;
N=T/dt; N=T/dt;
t=linspace(0,T,N); //生成在0到T的N个数
y=a*sin(2*3.14*f*t+q); //求出每一个t的y值
plot(t,y); //绘图
c和matlab区别在于: matlab支持数组运算,可以用 linspace函数
2.方波
正半周期为A,负半周期为-A
y
(
t
)
=
{
=
A
0
>
t
≥
T
/
2
=
−
A
−
T
/
2
>
t
≥
0
y(t)=\begin{cases}=\text{A}\quad0>t\geq T/2\\[2ex]=-A\quad-T/2>t\geq0\end{cases}
y(t)=⎩
⎨
⎧=A0>t≥T/2=−A−T/2>t≥0
离散采样公式:
y
(
n
Δ
t
)
=
.
.
.
.
.
.
F
s
=
1
/
Δ
t
,
n
=
0
,
1
,
2
,
.
.
.
.
.
.
,
N
y(n\Delta t)=......\\Fs=1/\Delta t,n=0,1,2,......,N
y(nΔt)=......Fs=1/Δt,n=0,1,2,......,N
matlab生成方波信号
x= square(t)
x= square(t,duty) //duty可调节 ,高电平和低电平占空格的比例
square(2*pi*4*t); duty占空比=50%(默认) 频率=4 HZ
square(2*pi*4*t,75); 占空比=75% 频率=4 HZ
3.三角波
前半周期单调递减,后半周期单调递增
y
(
t
)
=
A
−
2
A
∗
2
t
/
T
0
>
t
>
T
/
2
y
(
t
)
=
−
A
+
2
A
∗
2
(
t
−
T
/
2
)
/
T
T
/
2
<
t
<
T
y(t)=A-2A^*2t/T0>t>T/2\\y(t)=-A+2A^*2(t-T/2)/TT/2<t<T
y(t)=A−2A∗2t/T0>t>T/2y(t)=−A+2A∗2(t−T/2)/TT/2<t<T
4.锯齿波
y
(
t
)
=
−
A
+
2
A
∗
t
/
T
0
>
t
>
T
y(t)=-A+2A^*t/T\quad0>t>T
y(t)=−A+2A∗t/T0>t>T
matlab中三角波和锯齿波使用的同一个函数
x=sawtooth(t)
x=sawtooth(t,width)
x=sawtooth(2*pi*3*t);//不带width参数,为锯齿波
x=sawtooth(2*pi*3*t,1/2);//三角波
x=sawtooth(2*pi*3*t,0);//width为0,得到一个反方向的锯齿波
5.噪声信号
白噪声:x=randn(1,n) //符合高斯分布,取0值概论最高
均匀噪声:x=rand(1,n) // 范围内出现的概率一样
6.其他信号
对脉冲信号进行积分可以得到阶跃信号,对阶跃信号进行积分可以得到斜坡信号,对斜坡信号进行积分可以得到加速度信号,
%脉冲信号
t=linspace (0,1,101);
y=[zeros(1,50),1,zeros(1,50)];
plot(t,y);
阶跃
t=linspace(0,1,101);
y=[zeros(1,50),ones(1,51)];
plot(t,y);
ylim([0 1.25])
加速度
y=linspace(0,10,101);plot(y);
复合信号
Fs=500;
T=1;
dt=1.0/Fs;
N=T/dt;
t=linspace(0,TN);
y1=10*sin(2*3.14*5*t); // 正弦波
subplot(3,1,1);plot(t,y1);
y2=randn(l,N); //白噪声
subplot(3,1,2);plot(t,y2);
yyl+y2;
subplot(3,1,3);plot(t,y); // 复合信号
三、信号发生器设计
应用实践
正弦波:
1.数字电子琴
A
sin
(
2
π
f
t
+
φ
)
→
y
(
n
)
→
D
/
A
→
电子琴
A\sin(2\pi ft+\varphi)→y(n)→D/A→电子琴
Asin(2πft+φ)→y(n)→D/A→电子琴
按下不同的键,生成不同的频率, 频率按音阶变化,即可以产生不同的声音
2.DTMF命令
DTMF双音多频信号是电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。
例如按下1号键
Fs =44100;
dt=1.0/Fs;
T =0.5; N=T/dt;
t=[0:N-1]/N;
x1 =0.3*sin(2*pi*1209*t);
x2 =0.3*sin(2*pi*697*t);
x=x1+x2;
plot(t,x,'b','LineWidth',1.5);
axis([0, 0.01, -0.5,0.5]);
grid on;
wavplay(x,Fs); //y=sin(2*3.14*F1*t)+sin(2*3.14*F2*t)
3.摩尔电码