概述
简 介: 对于信号与系统课程同学提出的关于DAC输出信号中的最大频率的讨论。
关键词
: ADC,DAC,零阶保持,一阶保持
§01 DAC输出信号的最大频率
1、提问:
卓老师您好!抱歉这么晚打扰您,我想问一道关于采样的问题,如果您明天什么时候有空的话能麻烦您看一下吗?非常感谢!
如果正弦信号 x 0 ( t ) = cos ( 50 t ) x_0 left( t right) = cos left( {50t} right) x0(t)=cos(50t)被采样,采样角频率为 ω s = 30 omega _s = 30 ωs=30 rad/s。采样后的数据才经过 DAC( 数模转换)被张让日晷模拟信号。DAC的转换速率越是 30 rad/s。那么转换后的重构正弦信号的频率为 10 rad/s 。
是这样的一道题,我的做法是画频谱搬移的过程,我的问题是为什么最后重构的信号里没有50hz和110hz的分量呢?
▲ 图1.1 频谱搬移过程
好的谢谢老师!
2、回复:
这个题目所涉及到的信号采样是一个欠采样问题,也就是采样频率比信号的采样定理所需要的频率小,所以会引起频率混叠现象。
下面是将采样后时间离散信号的频谱进行周期延拓,延拓的频率间隔为30 rad/s,对应的 一些所产生的频谱。
▲ 图1.2 采样后的正弦波的频谱
注意,实际的频谱远不止以上的谱线,上述谱线只是将低频部分进行绘制。特别是在30rad/s之内的谱线。
由于使用DAC将信号进行输出,实际输出信号的最大频率小于DAC输出信号频率的一半,也就是15rad/s。 因此从上述频谱中只有 10rad/s的频谱最终包含在输出信号中。
3、信号仿真
(1)采集数据点
下图展示了50rad/s的正弦信号以及被 30rad/s频率所采集到的数据点序列(红色点)。
▲ 图1.3 振荡信号以及对应的采样数据点
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2021-06-20
#
# Note:
#============================================================
from headm import *
fm = 3
t = linspace(-fm, fm, 2000)
cost = cos(50*t)
ts = array(range(1+int(fm/(2*pi/30)))) * 2*pi/30
tsn = ts[-1:0:-1]*(-1)
tsl = list(tsn)
tsl.extend(list(ts))
tsall = array(tsl)
sample = cos(tsall*50)
printf(tsall)
plt.plot(t, cost, linewidth=1, linestyle = '--', label='cos(50t)')
plt.scatter(tsall, sample, color='red')
plt.xlabel("Time(s)")
plt.ylabel("cost")
plt.legend(loc='upperright')
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
(2)数据点DAC一阶保持输出
通常情况下,DAC的输出都是使用“零阶保持”输出,也就是当前的数据输出电压一直保持到下一个数据到来的时候。
▲ 图1.4 零阶保持输出
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2021-06-20
#
# Note:
#============================================================
from headm import *
tm = 2
t = linspace(-tm, tm, 2000)
cost = cos(50*t)
#------------------------------------------------------------
negtive = int(tm/(2*pi/30)) * (-1) * 2 * pi / 30
printf(negtive)
dott = arange(negtive, -negtive, 2*pi/30)
costt = cos(dott * 50)
def t2value(tt,cc,nt):
ctt = list(tt<nt)
value = cc[-1]
if False in ctt:
value = cc[ctt.index(False)-1]
return value
hold0 = [t2value(dott, costt, t0) for t0 in t]
#------------------------------------------------------------
plt.plot(t, cost, 'g--', linewidth=1, label='Origin')
plt.scatter(dott, costt, color='red', label='Sample')
plt.plot(t, hold0, 'b-', label='Hold0')
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
▲ 图1.5 一阶保持DAC输出波形
● 相关图表链接:
- 图1.1 频谱搬移过程
- 图1.2 采样后的正弦波的频谱
- 图1.3 振荡信号以及对应的采样数据点
- 图1.4 零阶保持输出
- 图1.5 一阶保持DAC输出波形
最后
以上就是轻松寒风为你收集整理的DAC输出波形的最大频率是多少? §01 DAC输出信号的最大频率 的全部内容,希望文章能够帮你解决DAC输出波形的最大频率是多少? §01 DAC输出信号的最大频率 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复