有关在matlab中对信号采样及频谱的一些解释;复数的频谱,高分辨率谱,高密度谱的一些理解
本文共说明了以下问题:
一、在matlab中如何表示频率为f1,以采样率f抽样后所得到的数字信号?如此表示的依据是什么?
二、使用matlab画出的频谱(一般是幅度谱或称振幅谱)的横坐标轴的意义是什么?如何根据横坐标轴的值得到其所对应的实际频率?
三、实数序列的频谱除第零个点和第N/2个(当N为偶数时)点外(从0~N-1),其它具有共轭对称性质;复数序列呢?
四、频率分辨率指的是什么?高分辨谱和高密度谱有何区别?有何作用?
约定:对于信号cos(wt),它是以周期为2*pi/w为周期的信号,角频率w=2*pi*f,我们经常这样称呼这个信号:它的角频率为w,频率为f Hz,周期T=1/f秒;
1)在matlab中对信号s1(t)=cos(w1t)=cos(2*pi*f1*t)进行采样,其中f1=1000Hz,根据奈奎斯特采样定理,采样频率f>=2*f1,在此我们取f=3000Hz。
在matlab中仿真也好,实际中处理的信号也罢,一般都是数字信号。而采样就是将信号数字化的一个过程,设将信号s1(t)数字化得到信号s1(n)=cos(2*pi*f1/f*n),其中n=[0…N-1],N为采样点数。
我们来解释一下s1(n),为什么说s1(n)=cos(2*pi*f1/f*n)表示以采样率f对频率为f1的信号进行采样的结果呢? 采样,顾名思义,就是对信号隔一段时间取一个值,而隔的这段时间就是采样间隔,取其倒数就是采样率了,那们我们看s1(n)=cos(2*pi*f1/f*n),将前面的参数代入,当n=0时,s1(0)=cos(0),当n=1时,s1(1)=cos(2*pi*1000/3000*1),当n=2时, s1(2)=cos(2*pi*1000/3000*2),当n=3时,s1(3)=cos(2*pi*1000/3000*3),这是不是想当于对信号s1(t)的一个周期内采了三个样点呢?对一个频率为1000Hz的信号每周期采三个样点不就是相当于以3倍于频率的采样率进行采样呢?注意,当n=3时相当于下一个周期的起始了。
我们取采样点数N=64,即对64/3=21.3个周期,共计64/3/f1=21.3ms时长。
我们在matlab中输入以下命令:
图1
我们对图1进行一下解释,以说明图中的横坐标轴的所代表的意义。
对于信号s1(t)=cos(w1*t),我们知道它的傅里叶变换是S1(w)=pi*[δ(w-w1)+δ(w+w1)]。
如果在-2*pi*3000/2~2*pi*3000/2范围内观察信号s1(t)的频谱,则应该在+2*pi*1000和-2*pi*1000两个频点上有两根谱线,而对采样后的数字信号,频率坐标轴范围-2*pi*3000/2~2*pi*3000/2将被归一化到-2*pi*(3000/2)/3000~2*pi*(3000/2)/3000即-pi~pi范围内,因此将在+2*pi*1000/3000和-2*pi*1000/3000即+2*pi/3和-2*pi/3的两个频点上有两根谱线。注意,此时坐标轴上的2*pi代表着3000Hz的频率范围。
另外还有一点应该明白的是,时域采样意味着频域的周期延拓,即-pi~pi上的谱线与-pi+M*2pi~+pi+M*2pi范围内的谱线是一模一样的,其中M为任意的整数。更通俗的说,a~b之间的频谱与a+M*2pi~b+M*2pi之间的频谱是一模一样的。因此-pi~0之间的频谱与pi*2pi之间的频谱是一样的。
在matlab中,如果仅简单的执行plot绘图命令,坐标横轴将是1~N,那么这1~N代表着什么呢?是的,应该代表0*2pi,应用到上面的例子即是0~3000Hz的频率范围。
其中1~N/2代表0~pi,而N/2~N代表-pi~0。
从理论上讲s1(t)=cos(2*pi*f1*t)应该在1000Hz和-1000Hz两个频点上有两根线,即应该在x1(其中x1*(3000/2) /(64/2)=1000,解得x1=21.3)上和64-x1上有两根谱线。观察图1可知,两个峰值大约对应横轴坐标为21和43=64-21两个点。
若令s2(t)=sin(w1*t),则傅里叶变换是S1(w)=-j*pi*[δ(w-w1)-δ(w+w1)],在matlab中执行以下命令:
则可得其频谱,如图2所示:
图2
由图可得两个峰值的位置基本与图1相同,这由其傅里叶表达式也可以得出此结论。
以上分别说明了余弦和正弦的频谱,而且余弦和正弦均是实数序列,实数序列的离散傅里叶变换(DFT)具有共轭对称性质(此性质可百度或查阅数字信号处理相关书籍或自行推导,很简单的),这从图中也可以看出。(画图时取其模值,共轭取模与原先数取模将变成相等)
2)复数的频谱
若令s3(t)=cos(w1*t)+j*sin(w1*t),则计算其傅里叶变换可得S2(w)=pi*[δ(w-w1)+δ(w+w1)]+j*{-j*pi*[δ(w-w1)-δ(w+w1)]}=2*pi*δ(w-w1),因此频谱中将只有一根谱线。
在matlab中输入以下命令:
图3
从图3可以看出,对于一个复数序列求频谱,它的幅度谱将不再是对称的两根谱线。其实经过类似于实数序列的推导可以得出,复数序列的频谱将不再具有类似于实数序列的共轭对称性质。
当w1为负值时会如何呢?输入以下命令计算s4(t)=cos(w1*t)+j*sin(w1*t)的频谱:
图4
对比图3和图4可知,当频率为正值时,峰值将在1~32范围内;而当频率为负值时,峰值将在33~64之间。此性质可通俗的描述如下:
对于信号s(t)=cos(2*pi*f*t)+j*sin(2*pi*f*t),对其进行符合奈奎斯特采样定理的采样,设采样率为fs,采样点数为N,得到数字信号s(n),n=[0,…,N-1],则对s(n)做DFT变换进行谱分析后得到S(k),k=[0,…,N-1]。观察S(k)的幅度谱,若k=0~N/2-1之间有峰值,则s(t)的频率f在0~fs/2之间;若k=N/2~N-1之间有峰值,则s(t)的频率f在-fs/2~0之间;并且有且只有一个峰值。
计算公式如下:设幅度谱峰值当k=k1时出现,则s(t)的频率为:
同理,可推出如下性质:
对于信号s(t)=cos(2*pi*f*t)-j*sin(2*pi*f*t),对其进行符合奈奎斯特采样定理的采样,设采样率为fs,采样点数为N,得到数字信号s(n),n=[0,…,N-1],则对s(n)做DFT变换进行谱分析后得到S(k),k=[0,…,N-1]。观察S(k)的幅度谱,若k=0~N/2-1之间有峰值,则s(t)的频率f在-fs/2~0之间;若k=N/2~N-1之间有峰值,则s(t)的频率f在0~fs/2之间;并且有且只有一个峰值。
计算公式如下:设幅度谱峰值当k=k1时出现,则s(t)的频率为:
3)下面引入一个新的概念:频率分辨率
频率分辩率是指频域取样中两相邻点间的频率间隔。更确切的说是如果某一信号含有两个频率成分f1和f2,Of=|f2-f1|,频率分辨率的概念是如果频率分辨率大于Of,对信号进行谱分析后将不能视别出其含有两个频率成分,这两个频率将混叠在一起。
以下是摘自华科姚天任《数字信号处理(第二版)》第92页的一段:
现在我们设定信号s5(t)=cos(w1*t)+sin(w2*t),其中w1=2*pi*1000,w2=2*pi*1100
在matlab中输入以下命令计算其频谱:
图5
从图5中可以看出能够分辨出f1=1000Hz和f2=1100Hz两个频率分量。
我们利用上面的理论来计算一下此时的频率分辨率:
采样频率fs=3000Hz
采样点个数N=64
最长记录长度tp=N*(1/fs)
频率分辨率F=1/tp=fs/N=3000/64=46.875Hz
因为F<f2-f1=100Hz,因此能够分辨出两个频率分量。
下面我们作如下尝试:
第一种尝试:fs不变仍为3000Hz,即奈奎斯特定理仍然满足,大于信号s5(t)的最高频率分量1100Hz的两倍,但将采样点个数N减小为24个,在matlab中输入以下命令:
图6
第二种尝试:采样率fs升为8000Hz,即满足奈奎斯特采样定理,大于信号s5(t)的最高频率分量1100Hz的两倍,采样点个数N不变,仍为64个,在matlab中输入以下命令:
图7
由图6和图7可以看出,这两种尝试虽然满足奈奎斯特采样定理,但都不能分辨出两个频率分量,用前面的理论知识可以作如下分析:
第一种尝试的频率分辨率F=1/tp=fs/N=3000/24=125Hz>100Hz
第二种尝试的频率分辨率F=1/tp=fs/N=8000/64=125Hz>100Hz
因此以上两种尝试均不能分辨出频率间隔为100Hz的两个频率分量。
4)最后我们引用高密度谱的概念,如图6所示,频谱很不平滑,呈很明显的折线状态,我们在matlab中输入以下命令:
图8
图8是将图6中的信号在时域补了104个零后才进行谱分析的。比较图6与图8,虽然相对于图6来说图8的频率分辨率并没有增加,但其每个点所代表的频率更小了,也就是密度更高了(同样3000Hz的频率,图6中使用了24点,而图8中使用了128点),这就是高密度谱。通常可以靠补零的方式来提高频谱的密度,但补零不能提高频率分辨率。很多人在此很迷惑,在末尾加零后,使一个周期内的点数增加,必然使样点间隔更近,谱线更密,事以前看不到的谱分量就可以看到了,能够看到更多的谱,不是提高分辨力了吗?其实加零后,并没有改变原有记录的数据,原有数据的频谱一开始就存在,我们只是有的看不见,加零后只是让我们看见原来本就存在的频率,也就是说,原始数据代表的该有的频率就有,没有的频率加再多的零(极限是成连续的),也没法看见。
在数字信号处理中,高分辨率谱和高密度谱是较为易混淆的两个概念。获得高分辨率谱的途径是增加信号采样的记录时间tp,而高密度谱则是通过在时域补零得到的。高分辨谱的用途很显示,可以分辨出频率间隔更小的两个频率分量,那么高分辨率谱有什么作用呢?要想明白高密度谱的概念,就不得知道一个名词:栅栏效应。高分辨率谱就是为了减小栅栏效效的。实际信号是无限长的,其频谱是连续的,但是要用计算机对信号进行频谱分析,就必须把它截短使之成为有限长度为tp的信号,这样的截短相当于对信号加矩形窗。经过加窗截取,信号的周期变为tp,其频谱相应地由原来的连续谱变为离散谱,离散谱的谱线只在f=1/tp的整数倍的位置上才出现,于是谱线间的实际信号的谱线有可能被挡住而损失掉,这称之为栅栏效应。例如截取信号长度为tp=0.5s,则可得到的谱线为2Hz,4Hz,6Hz,8Hz,…,若信号中包含频率为7Hz的分量,则该分量将被栅栏挡住,无法显示出来。
长按二维码识别关注
电子路上与你同行!
「技术文章」NI数采模块测井数据采集控制系统原理设计
测井数据采集控制系统是用于对各种置于地层中的井下仪器产生的信号进行采集、处理并对井下仪器进行控制的油田基础测控设备。由于专业性极强,以往系统中的数据采集及控制单元通常是以自我设计为主,因此导致系统的开发周期长、成本高、稳定性较差。现在,我们硬件使用National Instruments 公司的数据采集卡,软件使用VC++结合 Measurement Studio 软件包,实现了测井数据采集和控制单元的基于标准工业数据采集产品的设计与开发,大幅度的降低了系统的开发和维护成本,缩短了系统的开发周期,提高了系统的稳定性和可靠性。目前这套系统已制造20余套,成功应用于全国各大油田,取得了可观的经济效益。
系统原理
测井数据采集控制系统主要由工控机、NI通用数据采集卡、信号调理模块、绘图仪、综合控制箱、直流电源、交流电源、UPS电源、示波器等构成。系统原理框图如图1。
主机1主要用于系统的数据采集、处理和控制。绘图仪用于测井曲线实时出图。深度信号调理模块对光电编码器信号及其它井口信号进行调理,并控制深度显示;数字信号调理模块用于配接各类编码(例如,曼彻斯特编码)传输的井下仪器,如双源距C/O能谱测井仪、脉冲中子氧化化测井仪等;脉冲信号调理模块主要配接采用脉冲、周期信号传输的井下仪器以及各种脉冲编码类型的仪器。如:井壁超声成像测井仪等;直流信号调理模块主要配接采用直流量、低频模拟信号传输的井下仪器。直流电源为井下仪器提供直流供电、交流电源为井下仪器提供交流、泵、阀、继电器和释放器的供电。综合控制箱负责完成缆芯切换、供电控制。UPS电源用以保证在停电或外部供电不正常时,维持一段时间的供电,以免测井数据因得不到及时存储而丢失。以上各单元统一安装到两组19英寸标准机柜中。关于信号的流程,从图1中可以看出。我们把进入数据采集控制系统的信号归结为两类:井口信号和井下信号。井口信号来自井口和电缆绞车,它包括电缆张力信号、电缆磁记号和深度系统的光电编码信号。井下信号是指来自井下仪器的信号。来自井下仪器的感应型或脉冲型信号、深度系统的两路光电编码信号、井口的张力信号及电缆磁记号,通过电缆线进入采集箱内的深度调理模块、脉冲信号调理模块或直流信号调理模块,经过调理后,输出到NI数据采集卡。井下仪器编码信号经过综合控制电路的分离及预处理后通过电缆线进入到数字信号调理模块,进行信号调理、解码。解码后的信号同样输出到NI数据采集卡。NI数据采集卡控制数据采集的方式、采样的间隔,同时实现对脉冲信号、直流信号和数字信号的实时采集,采集到的数据以DMA方式传给主机内的数据缓冲区,由系统软件按不同的采样方式控制数据的显示、处理、打印和存盘。
数据采集方案设计
测井数据采集控制系统设计的核心是其数据采集方案设计。数据采集方案设计主要由系统深度数据采集和深度中断管理方案设计;多路复合信号实时同步采集方案设计;复杂编码格式数字信号高速传输与采集模式设计;直流信号高精度采集方案设计;系统状态及井下仪器控制方案设计等构成。由于专业性极强,以往系统中的数据采集及控制单元通常是以自我设计为主,因此系统的开发周期长、成本高、而且稳定性较差,并经常导致使用过程中,系统死机、深度测量不准等问题的出现,使系统的维护成本成倍增长,同时由于技术水平的限制,自己开发的系统只能配接一些信号类型简单和传输速率低的井下仪器,不具备多路信号实时同步采集以及高速传输的数字信号采集和处理能力。为了克服现有系统的缺陷,我们在充分调研和试用各大公司的数据采集产品的基础上,选择了NI 公司生产的系列数据采集卡和Measurement Studio 软件开发包,经过对NI各个采集卡的仔细研究和深度开发,我们仅用了3个月的时间就完成了过去需要2年以上的系统核心设计,并在业界首次实现了全部基于标准工业数据采集产品的测井数据采集控制系统设计,同时使系统在采样精度,深度控制,采集速度等主要技术指标上得到了全面的大幅度的提升。
(1)系统深度数据采集和深度中断管理方案设计:
系统深度模块是该系统中行业性最强的一个模块,它需要对正交光电编码器信号进行测量,得到系统当前的深度数据,同时它还要根据当前的深度数据生成用于同步各信号采集的深度等距触发信号。例如,在光电编码器顺时针转动时,每隔固定位移间隔(例如5 cm) 产生一个触发信号,这个触发信号通知系统对所有测量信号进行采集,如果系统光电编码器突然反方向转动,则不产生触发信号,系统不做任何采集,从而使系统只按照单方向等位移的状态采集数据。此外,该模块还要具备对正交光电编码
信号防抖动,防滑动处理的功能。在系统开发过程中,我们发现 NI PCI-660X 系列产品的用户手册上没有实现该工作模式的基本功能。为了实现该功能,我们经过深入研究和开发,通过利用PCI-6602处理光电编码器信号的计数器通道所能生成的某种特殊状态信号,同时结合其它计数器通道的脉冲生成功能,最终生成了我们所需要的连续的深度等距触发信号。在最终的产品设计中我们利用PCI-6602的5个计数器通道通过程序初始化控制实现了这个功能。这是我们首次通过使用标准工业数据采集卡实现深度数据的精确读取和触发信号的定距输出,它为整个系统得成功研制奠定了坚实的基础。
(2)多路复合信号实时同步采集方案设计:
测井数据采集系统通常需要根据定距或定时触发信号对多路直流信号、脉冲信号和数字信号进行实时同步测量。这就需要系统保证对多个采集卡间以及同一采集卡内部的多个测量通道间的数据采集的同一性和实时性,否则得到的数据就不能反映井下仪器在地层中真实状况。我们采用具有RTSI(实时同步接口)总线的 NI 6070E 或 NI6024E 用于直流信号的测量,PCI-6602 或 PCI-6601 用于脉冲信号和深度信号的测量,PCI-6534 或 PCI-6533用于数字信号的测量。系统中任何一块卡都可以根据工作模式的不同作为主卡来生成同步触发信号或用作从卡来接收同步触发信号。我们把主卡产生的同步触发信号加载到RTSI 总线上,由RTSI来同步其它从卡上的各个测量通道的数据采集,各块采集卡采集到的数据都以DMA方式传给主机内各自的数据缓冲区。由于整个触发和采集过程都是由系统硬件独立控制完成的,使得各个测量通道的采集延时可以控制在纳秒级。所有采集卡都采用DMA模式传输数据,这与以往系统多采用中断模式相比,极大的提高了系统工作效率。
通过RTSI总线我们把原来需要通过系统软件轮询依次读取各通道数据的工作方式转变成通过初始化各个采集卡的工作状态,然后由各采集卡(即系统硬件)的RTSI来控制采集的同步。这种工作方式的转变,不但降低了系统负荷,而且使系统测量的同步性和实时性得到了显著提高。这也是我们选用NI 公司数据采集卡来实现系统数据采集的一个重要原因。
(3)复杂编码格式数字信号高速传输与采集模式设计:
由于测井仪器种类繁多,一个设计合理的测井系统,必须考虑能与不同编码格式的井下仪器配接使用。由于PCI-6534通常情况下具有40MS/s的采样率,我们在系统设计中,充分开发PCI-6534的Pattern I/O功能,实现了复杂高速传输的数字的采集和解码,同时根据井下仪器的特点,可以把调理模块触发PCI-6534的信号加载到RTSI 总线上,以同步系统深度和其它数据的采集,也可以通过RTSI总线把定距或定时触发信号加载到PCI-6534上,以控制数字信号的采集模式。PCI-6534与系统前端数字信号调理模块配合使用,使系统具备了配接各种传输速率高、编码协议复杂的测井井下仪器的能力。
(4)直流信号高精度采集方案设计:
有些测井仪器上传的信号中,既有直流量也有脉冲量还有数字量,而且其直流量的采样频率一般要求达到1MS/ s。采集系统除了要完成井下仪器直流信号的高速采集外还要以定时或定距的模式和较低的采样率采集其它直流信号和脉冲信号。我们在设计中,通过对NI 6070E、PCI-6024E、PCI-6602、PCI-6534这四块卡综合编程控制,采用多通道多次复合同步触发技术,同时充分开发PCI-6534的数字信号模式触
发控制技术,实现了定时或定距触发条件下以高采样率采集井下仪器的直流信号,同时以低采样率采集井下仪器的脉冲信号、井口的直流信号和数字信号的工作模式。这是整个测井数据采集系统设计的难点。
(5)系统状态及井下仪器控制方案设计:
在系统调理模块和井下仪器状态控制设计中,我们选用PCI-6601, 利用它的Digital I/O功能,建立起了一套控制能力强大的32位命令输出体系。选用PCI-6601,主要是为了降低系统的总成本,根据需要也可以选择专门的数字I/O卡,或其它多功能卡。
系统软件设计
测井数据采集控制系统软件主要由现场测控及数据采集软件和测后数据分析处理软件构成,在软件开发上,我们选择使用VC++ 与NI 公司Measurement Studio 软件包相结合的开发方式,用VC++开发与操作系统底层相关的程序和曲线打印输出程序,使用Measurement Studio和CVI提供的类库开发与数据实时采集和曲线显示相关的程序。这种开发方案不但可以对操作系统进行灵活的控制而且充分利用了NI 公司提供的开发工具,从而极大的缩短了系统软件的开发时间。我们仅用了三个月的时间就完成了系统软件的设计,开发和测试工作。图2为系统软件中的脉冲中子氧活化测井及解释软件序界面。图3为系统软件总体框图。
我们使用NI公司的数据采集卡和软件开发工具实现了测井数据采集控制系统的基于标准工业数据采集产品的设计与开发。大幅度地降低了系统的开发和维护成本,缩短了系统的开发周期,提高了系统的稳定性和可靠性。此外,我们可以根据用户的需要对系统数据采集卡进行多种组合或把系统更新为PXI总线系统,实现功能各有侧重的测井数据采集控制系统。目前这套系统已生产20余套,成功应用于大庆油田和全国其它油田,取得了可观的经济效益,具有相当广阔的应用前景。
相关问答
也就是采样间隔是0.1s,每隔0.1s取一段信号,这样采样频率就...
[最佳回答]采样间隔是0.1s,采样频率就是1/0.1s=10hz,采样长度不能超过0.1s.
【声音信号数字化时的取样频率为44.1kHz、量化精度为16位、...
[最佳回答]该是答案有误了!2、选A(取样频率为44.1kHz,表示每秒钟取样44100次)采样率44.1K,乘以每个样本的bit数16,双声道再乘以2,10分钟就是60秒.再把bit换算...
【两道数字信号处理的题,一.已知信号的最高频率为1.25kHz,利...
[最佳回答]一、1.Tmax=1/(2*1.25k)=0.4ms2.Tp=1/F[分辨率]=1/5=0.2s3.0.2s/0.4ms=500,但是基2,需要512点=2^9二在教材里有;一、1.Tmax...
什么是采样频率?
采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间...
【简述数字信号预处理包括哪些内容】作业帮
[最佳回答]MFCC是计算语音信号的Mel频率倒谱系数,Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系.Mel频率倒谱系数(MFCC)则是利用它们之间的...
12位的AD采样,检测30次谐波,基波频率为50Hz,采样频率至少为...
[最佳回答]采样频率要求与AD位数无关,与信号最高频率成分有关.30次谐波的频率为1500Hz,采样频率至少要在3000Hz以上.另外,为了防混叠,应该将信号带宽限制在采...
要想不失真的采样50hz的工频信号,一周期至少采样多少个点?
理论上是:采样频率为信号频率的2倍以上,实际中至少要10倍以上。因此至少采样500个点。理论上是:采样频率为信号频率的2倍以上,实际中至少要10倍以上。因此至...
在数字化控制系统中如何选择采样率或采样间隔
[回答]采样率是模拟信号采成数字信号时的取样频率,这个频率是和声音质量有关的,采样率越大声音文件高频还原性越好。下面是不同采样率对应的不同质量1.11...
ADC采样数目采样频率用户手册上说ADC的采样频率是1M/s不就是...
[最佳回答]采样频率就是你说的那样,即ADC的时钟频率;外来一个信号,每秒钟ADC可以采1M个sample,之后对每个采到的sample进行模拟值向数字值的转换.没有听说过“...
一分钟声音,采样频率为44.1kHz,立体声,16位量化位,数据量为...
[最佳回答]44*16*2*60/8/1024=10.3mb