PECL: 欧洲合同法原则;正射极耦合逻辑;耦合逻辑;Positive Emitter-Coupled Logic欧洲合同法原则
《欧洲合同法原则》(PECL)就是这一运动所取得的重要阶段性成果。但作为财产法重要分支的物权法,其统一目标还远未能实现。
基于34个网页 - 搜索相关网页
正射极耦合逻辑
单端PECL与差分PECL的互连 作者:Maxim高频/光纤通信部Jacob Reese 来源:《电子产品世界》 正射极耦合逻辑(PECL)是成帧器高速I/O的标准逻辑电平,这种输出方式耗电较大,为降低功耗需采用一些间接的解决方案Maxim推出的MAX3881,MAX3891复用/解复
基于26个网页 - 搜索相关网页
耦合逻辑
射极耦合逻辑 (PECL) 是成帧器高速 I/O 的标准逻
基于10个网页 - 搜索相关网页
Positive Emitter-Coupled Logic
首先简单介绍了PECL(Positive Emitter-Coupled Logic)的输出结构以及PECL-PECL之间的典型连接电路,而后对比介绍了CMOS限幅放大器实现相应功能的不同接
基于9个网页 - 搜索相关网页
-PECL Positive Emitter Coupled Logic: 正射极偶合逻辑正射极偶合逻辑
英语新词汇与常用词汇的翻译(101) pedal point 持续音 pedal pusher 骑脚踏车的人 pedal 踏板
基于1个网页 - 搜索相关网页
-positive voltage ECL, PECL: 正电压射极耦合逻辑正电压射极耦合逻辑
计算机网络词汇接龙 emitter coupled logic, ECL 射极耦合逻辑positive voltage ECL, PECL 正电压射极耦合逻辑low voltage positive ECL, LVPECL 低电压正电源射极耦合逻辑
基于3个网页 - 搜索相关网页
-told on PECL data transmissio: 关于PECL告诉数据传输的问题,以及下级的光纤传输问题。-关于PECL告诉数据传输的问题,以及下级的光纤传输问题。-
JHD529液晶的驱动程序,AVR单片机中使用GC FFT的C语言程序,对于复数蝶型运算的C语言程序实现。-FFT C language program for com 关于PECL告诉数据传输的问题,以及下级的光纤传输问题。-told on PECL data transmissio **的旋转矩阵程序,可减少投注数目个人作品-lottery rotation matrix, may reduce
基于2个网页 - 搜索相关网页
-内置小摆幅PECL: RSPECLRSPECL
ADCMP572内置CML输出驱动器,ADCMP573则内置小摆幅PECL (RSPECL)输出驱动器。
基于2个网页 - 搜索相关网页
-positive emitter coupled logic (PECL): 正射极偶合逻辑正射极偶合逻辑
热门文章 positive electrode 正电极positive emitter coupled logic (PECL) 正射极偶合逻辑positive feedback 正反馈
基于8个网页 - 搜索相关网页
-positive emitter-coupled logic PECL: 正发射极耦合逻辑;正极性射极耦合逻辑正发射极耦合逻辑
焊接专业相关词汇(金属材料2) 再结晶 Recrystallization 正磁化率 Positive magnetic susceptibility 枝/棒无芯磨公差表 (μ) (μ = 1/100 mm) Rod/Bar Centreless Grind Tolerance
基于1个网页 - 搜索相关网页
正极性射极耦合逻辑
《通信词典》 — 耦合 加权的终端耦合损耗 Terminal Coupling Loss weighted TCLw 加权的终端耦合损耗 Weighted Terminal Coupling Loss TCLw 正极性射极耦合逻辑 Positive Emitter-Coupled Logic PECL
基于1个网页 - 搜索相关网页
-PECL—Positive Emitter-Coupled Logic :: 正向发射极耦合逻辑正向发射极耦合逻辑
程序员英语 LVTTL—Low Voltage Transistor Transistor Logic : 低压晶体管-晶体管逻辑PECL—Positive Emitter-Coupled Logic : 正向发射极耦合逻辑RSP—Receive Signal Processor : 接收信号处理器
基于12个网页 - 搜索相关网页
-logic, positive emitter-coupled (PECL): 正射极耦合逻辑正射极耦合逻辑
热门文章 logic, positive 正逻辑logic, positive emitter-coupled (PECL) 正射极耦合逻辑logic, programmable array (PAL) 可编程阵列逻辑
基于6个网页 - 搜索相关网页
-关于PECL告诉数据传输的问题,以及下级的光纤传输问题。-: told on PECL data transmissiotold on PECL data transmissio
JHD529液晶的驱动程序,AVR单片机中使用GC FFT的C语言程序,对于复数蝶型运算的C语言程序实现。-FFT C language program for com 关于PECL告诉数据传输的问题,以及下级的光纤传输问题。-told on PECL data transmissio **的旋转矩阵程序,可减少投注数目个人作品-lottery rotation matrix, may reduce
基于2个网页 - 搜索相关网页
ELEM这个数组是为了确定二维数组的每个值的确定位置,因为你申请的in和out都是1维数组(不考虑实部虚部那个0和1)所以要确定在你开辟的这个1维数组中所对应的二维数组是哪个数就用到了ELEM,举个例子,比如你算二维数组[r,c]这个位置的值,其实是在一维数组的第rN+c个数,所以就得到了in[rN+c][0],也就是在做fft之前的fftw_complex表示,楼主可能混淆fftw_complex和文中ELEM数组了,ELEM并不是fftw_complex数组的表示,只是为了找到确定数组位置的一个中间数组而已,希望回答能让你满意
一、实验目的
1、学会FFT算法程序(或函数)的使用方法;
2、了解序列的线性卷积和圆周卷积之间的关系;
3、验证有限长FFT算法实现线性相关运算的快速计算方法;
4、解FFT的点数对快速卷积与快速相关运算结果所产生的影响;
5、了学会利用FFT算法进行有限长序列的线性卷积的快速计算;
6、掌握基-2快速傅立叶变换(Fast FourierTransform,FFT)的算法原理及其程序实现方法
二、实验原理
1、有限长序列的线性卷积和圆周卷积线性卷积和圆周卷对于有限长序列,存在两种形式的卷积,即积。设x(n)是长度光JM的有限长序列,y(n)是长度为N的有限长序列,则二者的线性卷积可表示为:
M-1
线性卷积的结果序列f(n)是一个长度为L=N +M -1的有限有限长序列,且长序列。将x(n)及y(n)均补零增长为L点的二者的L点的圆周卷积可表示为:
圆周卷积的结果序列f(n)是一个长度为L的有限长序列,由圆周卷积的点数所决定。有限长序列的线性卷积和圆周卷积之间的关系可用公式表示如下:
即:圆周卷积是线性卷积以圆周卷积的点数几为周期进行周期延拓后所取的主值序列。因而,在圆周卷积的点数大于或等于线性卷积的长度时、圆周卷积结果和线性卷积结果相等,这也是快速卷积算法的理论基础之一。
2、离散傅里叶变换的卷积性质
离散傅里叶变换的卷积性质也是快速卷积算法的另一理论基础。若f(n)是有限长序列x(n)和有限长序列y(n)的L点圆周卷积,即公式(5-2),则 f(n)的L点离散傅里叶变换为: F_c (k)=X(k)Y(k)
3、Matlab中FFT与IFFT的实现
离散傅立叶变换(Discrete Fourier Transform, DFT)实现了频域的离散化,方便了计算机处理,在数字信号处理中有着非常重要的作用。但直接计算DFT的运算量与变换长度N的平方成正比,计算量太大。而快速傅立叶变换FFT则是快速计算DFT的有效算法,大大提高了DFT的运算效率,在信号频谱的分析、滤波器频率响应的计算,以及线性卷积的快速计算等方面起着非常重要的作用。FFT 采用分组计算的方式进行DFT的快速计算,具体算法原理参看教材,在附录B中也给出了常用的基-2时间抽取FFT算法和分裂基FFT 算法的C语言程序。相应的,IFFT 则为离散傅里叶反变换,即 IDFT 的快速计算方法。在Matlab中,提供了f(t)和 ifi(t)两个函数来分别实现快速傅立叶变换的正变换和反变换。Ft(t)和if(t)两个函数是用机器语言而不是Matlab 指令写成的,执行速度很快。除了输入、输出参数的含义不同之外,这两个函数的调用方法完全相同,因此以ff()函数为例说明二者的使用方法。ff()函数常用调用格式有两种:
(1)Xk=fft(xn)
其中,xn为输入时域序列x(n),返回结果xk为x(n)的离散傅里叶变换X(k)。当xn是矩阵时(对应于多通道信号),计算xn中每一列信号的离散傅里叶变换。当xn的长度是2的整数幂,采
用基2快速算法计算,否则采用较慢的混合基算法进行计算。
(2)Xk=fft(xn,NFFT)
这种调用格式相比较于上一种调用格式,多了一个输入参数NFFT,用于指定FFT的点数。当NFFT的值是2的整数幂,采用基-2快速算法计算,否则采用较慢的混合基算法进行计算。当xn的长度大于NFFT时,对 xn进行自动截断;当xn的长度小于NFFT时,在xn后自动进行补零。
4、快速卷积基本算法的原理
利用FFT进行有限长序列的线性卷积的快速计算即为快速卷积算法。按照上述相关原理,利用FFT计算线性卷积,即计算公式中的f(n)的算法步骤可用下图来表示:
其中,FFT运算的点数L应满足L≥N+ M-1。为了采用基-2的算法,常常需要L还应满足L=2M
5、快速相关算法原理
利用 FFT 讲行有限长序列相关运算的快速实现则称为快速相关算法。若(n)是长度头M的有限长序列,y(n)是长度为N的有限长序列,则一者的线性百相关序列R(m)与二者的线性卷积运算之间的关系可表示
由于线性卷积可以用FFT讲行快速计算,则按公式,相关运算也可以利用fft进行快速计算,在此不再赘述其原理。需要时,根据傅立叶变换的反折和共轭特性可以减少一次FFT的使用提高计算效率。
三、实验步骤、数据记录及处理
本实验利用Matlab中提供的fft()和 ifft()函数进行快速卷积算法和快速相关算法性卷积和圆周卷积之间的关系进行验证。具体的实验内容和实验的实现,并对有限长序列线
步骤如下所示:
其中:
1、用 Matlab生成两个有限长序列x(n) y(n)
(1)基于fft()和 ifft()函数,编程利用4点快速卷积算法计算有限长序列x(n)与y(n)的卷积,结果令为c1(n)。
(2)基于fft()和 ifft()函数,编程利用速卷积算法计算有限长序列x(n)与y(n)的卷积,结果令为c2(n)
(3)调用conv()函数计算有限长序列x(n)与y(n)的卷积,结果令为c3(n)。分别绘制序列x(n)、y(n)、c1(n)、c2(n)和c3(n)的图形。对结果进行分析,并通过实验结果验证有限长序列线生卷积和圆周卷积之间的关系。
2、设两个有限长序列x(n)和h(n)分别为:
(1)x(n)=(sin 04n)·R,(n+1);
(2)h(n)=(09)"R,o(n+1)
按图所示的快速卷积算法原理编写完整的快速卷积算法程序计算y(n)=x(n)h(n),绘制序列图形,并通过 conv()函数对结果进行验证。
3、将实验1中实验内容4所给定的信号利用快速相关算法进行自相关序列的计算,并将结果与实验1中的结果进行对比验证。
实验程序:
clc;clear all;close all;
nx=0:1:2;x=[1,1,1];%确定x(n)与y(n)的自变量取值范围
ny=0:1:2;y=[2,2,2];%生成x(n)与h(n)
L=pow2(nextpow2(length(x)+length(y)-1));%确定FFT快速卷积的点数
xk=fft(x,L);%计算x的L点FFT,结果为x(k)
yk=fft(y,L);%计算y的L点FFT,结果为y(k)
YK=xkyk;%计算y(k)
c1n=ifft(YK,4);%四点
c2n=ifft(YK,L);%八点
c3n=conv(x,y);%线性卷积
n1=0:1:3;%确定n1的取值范围
n2=0:1:7;%确定n2的取值范围
n3=0:1:4;%确定n3的取值范围
%绘制x(n)与y(n)波形
figure('name','x(n)与y(n)序列');
subplot(2,1,1);stem(nx,x);grid on;xlabel('n');ylabel('x(n)');title('序列x(n)');
subplot(2,1,2);stem(ny,y);grid on;xlabel('n');ylabel('y(n)');title('序列y(n)');
%绘制x(n)与y(n)序列卷积波形
figure('name','x(n)与y(n)序列卷积');
subplot(3,1,1);stem(n1,c1n);grid on;xlabel('n');ylabel('c1(n)');title('x(n)与y(n)的4点fft');
subplot(3,1,2);stem(n2,c2n);grid on;xlabel('n');ylabel('c2(n)');title('x(n)与y(n)的8点fft');
subplot(3,1,3);stem(n3,c3n);grid on;xlabel('n');ylabel('c3(n)');title('x(n)与y(n)的线性卷积');
登录后复制

clc;clear all;close all;
nxn=1:15;nhn=1:20;%确定x(n)与y(n)的自变量取值范围
xn=sin(04nxn);hn=09^nhn;%生成x(n)与h(n)
L=pow2(nextpow2(length(xn)+length(hn)-1));%确定FFT快速卷积的点数
Xk=fft(xn,L);%计算x的L点FFT,结果为x(k)
Hk=fft(hn,L);%计算y的L点FFT,结果为y(k)
Yk=XkHk;%计算YK
y1n=ifft(Yk,L);%对YK调用IFFT,求得y1(n)
y2n=conv(xn,hn);%计算y2(n)的卷积
n1=(nxn(1)+nhn(1)):1:(L+nxn(1)+nhn(1)-1);%确定n1的自变量取值范围
n2=(nxn(1)+nhn(1)):1:(nxn(15)+nhn(20));%确定n2的自变量取值范围
%绘制有限长序列想x(n)与h(n)
figure('name','x(n)与h(n)序列');
subplot(2,2,1);stem(nxn,xn);grid on;xlabel('n');ylabel('x(n)');title('x(n)=(sin04n)R15(n+1)');
subplot(2,2,2);stem(nhn,hn);grid on;xlabel('n');ylabel('h(n)');title('h(n)=((09)^n)R20(n+1)');
subplot(2,2,3);stem(n1,y1n);grid on;xlabel('n');ylabel('y(n)');title('快速卷积法计算y(n)');
subplot(2,2,4);stem(n2,y2n);grid on;xlabel('n');ylabel('y(n)');title('conv()函数计算y(n)');
登录后复制

clc;clear all;close all;
n1=1:100;n2=1:100;%确定n1,n2取值范围
x=[101,82,66,35,31,7,20,92,154,125,85,68,38,23,10,24,83,132,131,118,90,67,60,47,41,21,16,6,4,7,14,34,45,43,48,42,28,10,8,2,0,1,5,12,14,35,46,41,30,24,16,7,4,2,8,17,36,50,62,67,71,48,28,8,13,57,122,138,103,86,63,37,24,11,15,40,62,98,124,96,66,64,54,39,21,7,4,23,55,94,96,77,59,44,47,30,16,7,37,74];
mean(x(:))
x=x-mean(x);
Rx=xcorr(x);
y=x(end:-1:1);
subplot(2,1,1);stem(Rx);grid on;xlabel('t');ylabel('Rx');title('xcorr()函数计算的自相关序列');
L=pow2(nextpow2(length(n1)+length(n2)-1));%确定FFT快速卷积的点数
Xk=fft(x,L);%计算x的L点FFT,结果为x(k)
Yk=fft(y,L);%计算y的L点FFT,结果为y(k)
Rk=XkYk;%计算YK
Rn=ifft(Rk,L);%对RK调用IFFT,求得y1(n)
n=(n1(1)+n2(1)):(L+n1(1)+n2(1)-1);%确定n的自变量取值范围
subplot(2,1,2);stem(1:200,Rn(1:200));grid on;xlabel('t');ylabel('R(n)');title('fft计算的自相关序列');
登录后复制

四、思考题
(1)对实验内容2中快速卷积基本算法的运算量进行分析,即乘法和加法运算次数。
(2)利用实例说明快速卷积基本算法的适用条件,即在什么情况下效率最高。
(3)实验内容3中,如何通过DFT的性质,减少一次ftt()函数的调用,提高计算效率
五、总结
通过此次实验的练习,加深理解FFT 在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT进行数字信号处理,并且掌握了循环卷积和线性卷积两者之间的关系
这是我写的1024点的快速傅里叶变换程序,下面有验证,你把数组
double
A[2049]={0};
double
B[1100]={0};
double
powerA[1025]={0};
改成
A[256]={0};
B[130]={0};
power[129]={0};就行了,
void
FFT(double
data[],
int
nn,
int
isign)
的程序可以针对任何点数,只要是2的n次方
具体程序如下:
#include
<iostreamh>
#include
"mathh"
#include<stdioh>
#include<stringh>
#include
<stdlibh>
#include
<fstreamh>
#include
<afxh>
void
FFT(double
data[],
int
nn,
int
isign)
{
//复数的快速傅里叶变换
int
n,j,i,m,mmax,istep;
double
tempr,tempi,theta,wpr,wpi,wr,wi,wtemp;
n
=
2
nn;
j
=
1;
for
(i
=
1;
i<=n
;
i=i+2)
//这个循环进行的是码位倒置。
{
if(
j
>
i)
{
tempr
=
data[j];
tempi
=
data[j
+
1];
data[j]
=
data[i];
data[j
+
1]
=
data[i
+
1];
data[i]
=
tempr;
data[i
+
1]
=
tempi;
}
m
=
n
/
2;
while
(m
>=
2
&&
j
>
m)
{
j
=
j
-
m;
m
=
m
/
2;
}
j
=
j
+
m;
}
mmax
=
2;
while(
n
>
mmax
)
{
istep
=
2
mmax;
//这里表示一次的数字的变化。也体现了级数,若第一级时,也就是书是的第0级,其为两个虚数,所以对应数组应该增加4,这样就可以进入下一组运算
theta
=
-628318530717959
/
(isign
mmax);
wpr
=
-20
sin(05
theta)sin(05
theta);
wpi
=
sin(theta);
wr
=
10;
wi
=
00;
for(
m
=
1;
m<=mmax;
m=m+2)
{
for
(i
=
m;
i<=n;
i=i+istep)
{
j
=
i
+
mmax;
tempr=double(wr)data[j]-double(wi)data[j+1];//这两句表示蝶形因子的下一个数乘以W因子所得的实部和虚部。
tempi=double(wr)data[j+1]+double(wi)data[j];
data[j]
=
data[i]
-
tempr;
//蝶形单元计算后下面单元的实部,下面为虚部,注意其变换之后的数组序号与书上蝶形单元是一致的
data[j
+
1]
=
data[i
+
1]
-
tempi;
data[i]
=
data[i]
+
tempr;
data[i
+
1]
=
data[i
+
1]
+
tempi;
}
wtemp
=
wr;
wr
=
wr
wpr
-
wi
wpi
+
wr;
wi
=
wi
wpr
+
wtemp
wpi
+
wi;
}
mmax
=
istep;
}
}
void
main()
{
//本程序已经和MATLAB运算结果对比,准确无误,需要注意的的是,计算中数组都是从1开始取得,丢弃了A[0]等数据
double
A[2049]={0};
double
B[1100]={0};
double
powerA[1025]={0};
char
line[50];
char
dataA[20],
dataB[20];
int
ij;
char
ch1[3]="\t";
char
ch2[3]="\n";
int
strl1,strl2;
CString
str1,str2;
ij=1;
//读入文件data1024txt中的数据,
其中的数据格式见该文件
FILE
fp
=
fopen("data1024txt","r");
if(!fp)
{
cout<<"Open
file
is
failing!"<<endl;
return;
}
while(!feof(fp))
//feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。
{
memset(line,0,50);
//清空为0
memset(dataA,0,20);
memset(dataB,0,20);
fgets(line,50,fp);
//函数的功能是从fp所指文件中读入n-1个字符放入line为起始地址的空间内
sscanf(line,
"%s%s",
dataA,
dataB);
//我同时读入了两列值,但你要求1024个,那么我就只用了第一列的1024个值
//dataA读入第一列,dataB读入第二列
B[ij]=atof(dataA);
//将字符型的dataA值转化为float型
ij++;
}
for
(int
mm=1;mm<1025;mm++)//A[2mm-1]是实部,A[2mm]是虚部,当只要输入实数时,那么保证虚部A[mm2]为零即可
{
A[2mm-1]=B[mm];
A[2mm]=0;
}
//正式计算FFT
FFT(A,1024,1);
//写入数据到workouttxt文件中
for
(int
k=1;k<2049;k=k+2)
{
powerA[(k+1)/2]=sqrt(pow(A[k],20)+pow(A[k+1],20));//求功率谱
FILE
pFile=fopen("workouttxt","a+");
//a+只能在文件最后补充,光标在结尾。没有则创建
memset(ch1,0,15);
str1Format("%4f",powerA[(k+1)/2]);
if
(A[k+1]>=0)
str2Format("%d\t%64f%s%64f
%s",(k+1)/2,A[k],"+",A[k+1],"i");//保存fft计算的频谱,是复数频谱
else
str2Format("%d\t%64f%64f
%s",(k+1)/2,A[k],A[k+1],"i");
strl1=strlen(str1);
strl2=strlen(str2);
//
用
法:fwrite(buffer,size,count,fp);
//
buffer:是一个指针,对fwrite来说,是要输出数据的地址。
//
size:要写入的字节数;
//
count:要进行写入size字节的数据项的个数;
//
fp:目标文件指针。
fwrite(str2,1,strl2,pFile);
fwrite(ch1,1,3,pFile);
fwrite(ch1,1,3,pFile);
fwrite(str1,1,strl1,pFile);
fwrite(ch2,1,3,pFile);
fclose(pFile);
}
cout<<"计算完毕,到fft_test\workouttxt查看结果"<<endl;
}
应该是库利-图基算法和桑德-图基算法吧。这两种算法的时间复杂度是一样的,需要(N/2)log2N次的复数乘法和Nlog2N的复数加法。
当然你要是用基-4的FFT会更快,需要3/8Nlog2N次的复数乘法和Nlog2N次的加法。但这样做的一个很麻烦的事是在做快速傅立叶变换时需要将原数据补足到2或4的整数次方。因此如果数据量合适的话基-4要快,如果数据不合适还是用基-2好。至于C语言代码暂时没有。还有为什么要编C啊?用Matlab不是更好吗?连循环都不用写,甚至还有已经写好的函数fft(),直接看这个函数算法就好了
11 实验目的
1.了解数字信号处理系统的一般构成;
2.掌握奈奎斯特抽样定理。
12 实验仪器
1.YBLD智能综合信号源测试仪 1台
2.双踪示波器 1台
3.MCOM-TG305数字信号处理与现代通信技术实验箱 1台
4.PC机(装有MATLAB、MCOM-TG305配套实验软件) 1台
13 实验原理
一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行D/A转换。一个仅包括A/D和D/A两部分的简化数字信号处理系统功能如图1所示。
A/D转换包括三个紧密相关的过程,即抽样、量化和编码。A/D转换中需解决的以下几个重要问题:抽样后输出信号中还有没有原始信号的信息?如果有能不能把它取出来?抽样频率应该如何选择?
奈奎斯特抽样定理(即低通信号的均匀抽样定理)告诉我们,一个频带限制在0至fx以内的低通信号x(t),如果以fs≥2fx的抽样速率进行均匀抽样,则x(t)可以由抽样后的信号xs(t)完全地确定,即xs(t)包含有x(t)的成分,可以通过适当的低通滤波器不失真地恢复出x(t)。最小抽样速率fs=2fx称为奈奎斯特速率。
低通
译码
编码
量化
抽样
输入信号 样点输出 滤波输出
A/D(模数转换) D/A(数模转换)
图1 低通采样定理演示
为方便实现,实验中更换了一种表现形式,即抽样频率固定(10KHz),通过改变输入模拟信号的频率来展示低通抽样定理。我们可以通过研究抽样频率和模拟信号最高频率分量的频率之间的关系,来验证低通抽样定理。
14 实验内容
1.软件仿真实验:编写并调试MATLAB程序,分析有关参数,记录有关波形。
2.硬件实验:输入不同频率的正弦信号,观察采样时钟波形、输入信号波形、样点输出波形和滤波输出波形。
15 MATLAB参考程序和仿真内容
%%
%f—余弦信号的频率
% M—基2 FFT幂次数 N=2^M为采样点数,这样取值是为了便于作基2的FFT分析
%2 采样频率Fs
%%
function samples(f,Fs,M)
N=2^M; % fft点数=取样总点数
Ts=1/Fs; % 取样时间间隔
T=NTs; % 取样总时间=取样总点数取样时间间隔
n=0:N-1;
t=nTs;
Xn=cos(2fpit);
subplot(2,1,1);
stem(t,Xn);
axis([0 T 11min(Xn) 11max(Xn)]);
xlabel('t -->');
ylabel('Xn');
Xk=abs(fft(Xn,N));
subplot(2,1,2);
stem(n,Xk);
axis([0 N 11min(Xk) 11max(Xk)]);
xlabel('frequency -->');
ylabel('!Xk!');
%%
假如有一个1Hz的余弦信号y=cos(2πt),对其用4Hz的采样频率进行采样,共采样32点,只需执行samples(1,4,5),即可得到仿真结果。
软件仿真实验内容如下表所示:
仿真参数
f
Fs
Wo(计算)
Xn(图形)
Xk(图形)
(1,4,5)
另外记录图形,并标图号
(1,8,5)
(2,8,6)
自 选
16 硬件实验步骤
本实验箱采样频率fs固定为10KHz,低通滤波器的截止频率约为45KHz。
1、用低频信号源产生正弦信号,正弦信号源频率f自定,并将其接至2TP2(模拟输入)端,将示波器通道一探头接至2TP6(采样时钟)端观察采样时钟波形,示波器通道二探头接至2TP2观察并记录输入信号波形。
2、将示波器通道二探头接至2TP3观察并记录样点输出波形。
3、将示波器通道二探头接至2TP4观察并记录滤波输出波形。
4、根据采样定理,分f=fs /8、f=fs/4、f=fs/2等3种情况更改正弦信号频率,重复步骤2至步骤3。
5、用低频信号源产生方波信号,重复步骤1至步骤4。
17 思考题
1、 讨论在仿真实验中所计算的数字域频率Wo和Xk的图形中非零谱线位置之间的对应关系。
2、 讨论在仿真实验中自选参数的意义。
3、将在2TP2端加方波信号后的恢复波形,与相同频率的正弦信号的恢复波形相比,能够得出哪些结论?
2 FFT频谱分析实验
21 实验目的
1.通过实验加深对快速傅立叶变换(FFT)基本原理的理解。
2.了解FFT点数与频谱分辨率的关系,以及两种加长序列FFT与原序列FFT的关系。
22 实验仪器
1.YBLD智能综合信号源测试仪 1台
2.双踪示波器 1台
3.MCOM-TG305数字信号处理与现代通信技术实验箱 1台
4.PC机(装有MATLAB、MCOM-TG305配套实验软件) 1台
23 实验原理
离散傅里叶变换(DFT)和卷积是信号处理中两个最基本也是最常用的运算,它们涉及到信号与系统的分析与综合这一广泛的信号处理领域。实际上卷积与DFT之间有着互通的联系:卷积可化为DFT来实现,其它的许多算法,如相关、滤波和谱估计等都可化为DFT来实现,DFT也可化为卷积来实现。
对N点序列x(n),其DFT变换对定义为:
在DFT运算中包含大量的重复运算。FFT算法利用了蝶形因子WN的周期性和对称性,从而加快了运算的速度。FFT算法将长序列的DFT分解为短序列的DFT。N点的DFT先分解为2个N/2点的DFT,每个N/2点的DFT又分解为2个N/4点的DFT。按照此规律,最小变换的点数即所谓的“基数(radix)。”因此,基数为2的FFT算法的最小变换(或称蝶形)是2点DFT。一般地,对N点FFT,对应于N个输入样值,有N个频域样值与之对应。一般而言,FFT算法可以分为时间抽取(DIT)FFT和频率抽取(DIF)两大类。
在实际计算中,可以采用在原来序列后面补0的加长方法来提高FFT的分辨率;可以采用在原来序列后面重复的加长方法来增加FFT的幅度。
24 实验内容
1.软件仿真实验:分别观察并记录正弦序列、方波序列及改变FFT的点数后的频谱;分别观察并记录正弦序列、方波序列及2种加长序列等信号的频谱。
2.硬件实验:分别观察并记录正弦信号、方波信号及改变FFT的点数后的频谱。
25 MATLAB参考程序和仿真内容
%%
function[x]=ffts(mode,M)
Nfft=2^M;
x=zeros(1,Nfft); %定义一个长度为Nfft的一维全0数组
if mode= =1 for n=0:Nfft-1 x(n+1)=sin(2pin/Nfft); end
end %定义一个长度为Nfft的单周期正弦序列
if mode= =2 for n=0:Nfft-1 x(n+1)=sin(4pin/Nfft); end
end %定义一个长度为Nfft的双周期正弦序列
if mode= =3 for n=0:Nfft/2-1 x(n+1)=sin(4pin/Nfft); end
end %定义一个长度为Nfft/2的正弦序列,后面一半为0序列。
if mode= =4 for n=0:Nfft-1 x(n+1)=square(2pin/Nfft); end
end
if mode= =5 for n=0:Nfft-1 x(n+1)=square(2pin/Nfft); end
end
if mode= =6 for n=0:Nfft/2-1 x(n+1)=square(4pin/Nfft); end
end
n=0:Nfft-1;
subplot(2,1,1);
stem(n,x);
axis([0 Nfft-1 11min(x) 11max(x)]);
xlabel('Points-->');
ylabel('x(n)');
X=abs(fft(x,Nfft));
subplot(2,1,2);
stem(n,X);
axis([0 Nfft-1 11min(X) 11max(X)]);
xlabel('frequency-->');
ylabel('!X(k)!');
%%
假设需观察方波信号的频谱,对一个周期的方波信号作32点的FFT,则只需在MATLAB的命令窗口下键入:[x]=ffts(21,5) ,程序进行模拟,并且输出FFT的结果。
关于软件仿真实验内容,建议在完成大量仿真例子的基础上,选择能够体现实验要求的4个以上的例子进行记录。例如要观察后面补0的加长方法来提高FFT的分辨率的现象,可以仿真ffts(4,5)和ffts(6,6)两个例子。
26 硬件实验步骤
1.将低频信号源输出加到实验箱模拟通道1输入端,将示波器探头接至模拟通道1输出端。
2.在保证实验箱正确加电且串口电缆连接正常的情况下,运行数字信号处理与DSP应用实验开发软件,在“数字信号处理实验”菜单下选择“FFT频谱分析”子菜单,出现显示FFT频谱分析功能提示信息的窗口。
3.用低频信号产生器产生一个1KHz的正弦信号。
4.选择FFT频谱分析与显示的点数为64点,开始进行FFT运算。此后,计算机将周期性地取回DSP运算后的FFT数据并绘图显示
5.改信号源频率,观察并记录频谱图的变化。
6.选择FFT的点数为128点,观察并记录频谱图的变化。
7.更改正弦信号的频率,重复步骤4 ~步骤6。
8.用低频信号产生器产生一个1KHz的方波信号,重复步骤4 ~步骤7。注意:应根据实验箱采样频率fs为10KHz和方波信号的频带宽度选择方波信号的频率。
本硬件实验要进行两种信号,每个信号两种频率,每个信号两种点数等共8次具体实验内容,性质能够体现实验要求的4个以上的例子进行记录。
27 思考题
1.对同一个信号,不同点数FFT观察到的频谱图有何区别?
2.序列加长后FFT与原序列FFT的关系是什么,试推导其中一种关系。
3.用傅立叶级数理论,试说明正弦信号频谱和方波信号频谱之间的关系。
3 IIR滤波器设计实验
31 实验目的
1.通过实验加深对IIR滤波器基本原理的理解。
2.学习编写IIR滤波器的MATLAB仿真程序。
32 实验仪器
1.YBLD智能综合信号源测试仪 1台
2.双踪示波器 1台
3.MCOM-TG305数字信号处理与现代通信技术实验箱 1台
4.PC机(装有MATLAB、MCOM-TG305配套实验软件) 1台
33 实验原理
IIR滤波器有以下几个特点:
1.IIR数字滤波器的系统函数可以写成封闭函数的形式。
2.IIR数字滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
3.IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
4.IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。
在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,使用Cheby2设计出契比雪夫II型滤波器,使用ellipord函数设计出椭圆滤波器。下面主要介绍前两个函数的使用。
与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器阶数。在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。
一、巴特沃斯IIR滤波器的设计
在MATLAB下,设计巴特沃斯IIR滤波器可使用butter函数。
Butter函数可设计低通、高通、带通和带阻的数字和模拟IIR滤波器,其特性为使通带内的幅度响应最大限度地平坦,但同时损失截止频率处的下降斜度。在期望通带平滑的情况下,可使用butter函数。
butter函数的用法为:
[b,a]=butter(n,Wn,/ftype/)
其中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。buttord函数的用法为:
[n,Wn]= buttord(Wp,Ws,Rp,Rs)
其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。
不同类型(高通、低通、带通和带阻)滤波器对应的Wp和Ws值遵循以下规则:
1.高通滤波器:Wp和Ws为一元矢量且Wp>Ws;
2.低通滤波器:Wp和Ws为一元矢量且Wp<Ws;
3.带通滤波器:Wp和Ws为二元矢量且Wp<Ws,如Wp=[02,07],Ws=[01,08];
4.带阻滤波器:Wp和Ws为二元矢量且Wp>Ws,如Wp=[01,08],Ws=[02,07]。
二、契比雪夫I型IIR滤波器的设计
在期望通带下降斜率大的场合,应使用椭圆滤波器或契比雪夫滤波器。在MATLAB下可使用cheby1函数设计出契比雪夫I型IIR滤波器。
cheby1函数可设计低通、高通、带通和带阻契比雪夫I型滤IIR波器,其通带内为等波纹,阻带内为单调。契比雪夫I型的下降斜度比II型大,但其代价是通带内波纹较大。
cheby1函数的用法为:
[b,a]=cheby1(n,Rp,Wn,/ftype/)
在使用cheby1函数设计IIR滤波器之前,可使用cheblord函数求出滤波器阶数n和截止频率Wn。cheblord函数可在给定滤波器性能的情况下,选择契比雪夫I型滤波器的最小阶和截止频率Wn。
cheblord函数的用法为:
[n,Wn]=cheblord(Wp,Ws,Rp,Rs)
其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。
34 实验内容
1.软件仿真实验:编写并调试MATLAB程序,选择不同形式,不同类型的4种滤波器进行仿真,记录幅频和相频特性,对比巴特沃斯滤波器和契比雪夫滤波器。
2.硬件实验:设计IIR滤波器,在计算机上观察冲激响应、幅频特性和相频特性,然后下载到实验箱。用示波器观察输入输出波形,测试滤波器的幅频响应特性。
35 MATLAB参考程序和仿真内容
%%
%mode: 1--巴特沃斯低通;2--巴特沃斯高通;3--巴特沃斯带通;4--巴特沃斯带阻
% 5--契比雪夫低通;6--契比雪夫高通;7--契比雪夫带通;8--契比雪夫带阻
%fp1,fp2: 通带截止频率,当高通或低通时只有fp1有效
%fs1, fs2: 阻带截止频率,当高通或低通时只有fs1有效
%rp: 通带波纹系数
%as: 阻带衰减系数
%sample: 采样率
%h: 返回设计好的滤波器系数
%%
function[b,a]=iirfilt(mode,fp1,fp2,fs1,fs2,rp,as,sample)
wp1=2fp1/sample;wp2=2fp2/sample;
ws1=2fs1/sample;ws2=2fs2/sample;
%得到巴特沃斯滤波器的最小阶数N和3bd频率wn
if mode<3[N,wn]=buttord(wp1,ws1,rp,as);
elseif mode<5[N,wn]=buttord([wp1 wp2],[ws1 ws2],rp,as);
%得到契比雪夫滤波器的最小阶数N和3bd频率wn
elseif mode<7[N,wn]=cheb1ord(wp1,ws1,rp,as);
else[N,wn]=cheblord([wp1 wp2],[ws1 ws2],rp,as);
end
%得到滤波器系数的分子b和分母a
if mode= =1[b,a]=butter(N,wn);end
if mode= =2[b,a]=butter(N,wn,/high/);end
if mode= =3[b,a]=butter(N,wn);end
if mode= =4[b,a]=butter(N,wn,/stop/);end
if mode= =5[b,a]=cheby1(N,rp,wn);end
if mode= =6[b,a]=cheby1(N,rp,wn,/high/);end
if mode= =7[b,a]=cheby1(N,rp,wn);end
if mode= =8[b,a]=cheby1(N,rp,wn,/stop/);end
set(gcf,/menubar/,menubar);
freq_response=freqz(b,a);
magnitude=20log10(abs(freq_response));
m=0:511;
f=msample/(2511);
subplot(3,1,1);plot(f,magnitude);grid; %幅频特性
axis([0 sample/2 11min(magnitude) 11max(magnitude)]);
ylabel('Magnitude');xlabel('Frequency-->');
phase=angle(freq_response);
subplot(3,1,2);plot(f,phase);grid; %相频特性
axis([0 sample/2 11min(phase) 11max(phase)]);
ylabel('Phase');xlabel('Frequency-->');
h=impz(b,a,32); %32点的单位函数响应
t=1:32;
subplot(3,1,3);stem(t,h);grid;
axis([0 32 12min(h) 11max(h)]);
ylabel('h(n)');xlabel('n-->');
%%
假设需设计一个巴特沃斯低通IIR滤波器,通带截止频率为2KHz,阻带截止频率为3KHz,通带波纹系数为1,阻带衰减系数为20,采样频率为10KHz,则只需在MATLAB的命令窗口下键入:
[b,a]=iirfilt(1,2000,3000,2400,2600,1,20,10000)
程序进行模拟,并且按照如下顺序输出数字滤波器系统函数
的系数
b= b0 b1 ……bn
a= a0 a1 ……an
关于软件仿真实验内容,建议在完成大量仿真例子的基础上,选择能够体现实验要求的4个例子进行记录,系统函数只要记录系统的阶数。
36 硬件实验步骤
1.根据实验箱采样频率fs为10KHz的条件,用低频信号发生器产生一个频率合适的低频正弦信号,将其加到实验箱模拟通道1输入端,将示波器通道1探头接至模拟通道1输入端,通道2探头接至模拟通道2输出端。
2.在保证实验箱正确加电且串口电缆连接正常的情况下,运行数字信号处理与DSP应用实验开发软件,在“数字信号处理实验”菜单下选择“IIR滤波器”子菜单,出现提示信息。
3.输入滤波器类型、滤波器截止频率等参数后,分别点击“幅频特性”和“相频特性”按钮,在窗口右侧观察IIR滤波器的幅频特性和相频特性。此时提示信息将消失,如需查看提示信息,可点击“设计说明”按钮。
4.点击“下载实现”按钮,IIR滤波器开始工作,此时窗口右侧将显示IIR滤波器的幅频特性。
5.根据输入滤波器类型,更改低频信号源的频率,观察示波器上输入输出波形幅度的变化情况,测量IIR滤波器的幅频响应特性,看其是否与设计的幅频特性一致。
6.更改滤波器类型、滤波器截止频率等参数(共4种),重复步骤3至步骤5。所选择的例子参数最好和MATLAB仿真程序的例子一样。
7.用低频信号产生器产生一个500Hz的方波信号,分别设计3种滤波器,完成如下表要求的功能,并且记录参数和波形。
功 能
滤波器类型
参 数
输出波形
fp1
fp2
fs1
fs2
通过3次及以下次数的谐波
另外记录图形,并标图号
滤除5次及以下次数的谐波
通过3次到5次的谐波
37 思考题
1.在实验箱采样频率fs固定为10KHz的条件下,要观察方波信号频带宽度内的各个谐波分量,方波信号的频率最高不能超过多少,为什么?
2.硬件实验内容7中输出信号各个谐波分量,与原来方波信号同样谐波分量相比,有没有发生失真?主要发生了什么类型的失真?为什么?
4 窗函数法FIR滤波器设计实验
41 实验目的
1.通过实验加深对FIR滤波器基本原理的理解。
2.学习使用窗函数法设计FIR滤波器,了解窗函数的形式和长度对滤波器性能的影响。
42 实验仪器
1.YBLD智能综合信号源测试仪 1台
2.双踪示波器 1台
3.MCOM-TG305数字信号处理与现代通信技术实验箱 1台
4.PC机(装有MATLAB、MCOM-TG305配套实验软件) 1台
43 实验原理
数字滤波器的设计是数字信号处理中的一个重要内容。数字滤波器设计包括FIR(有限单位脉冲响应)滤波器与IIR(无限单位脉冲响应)滤波器两种。
与IIR滤波器相比,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)为:
H(z)是z-1的N-1次多项式,它在z平面上有N-1个零点,原点z=0是N-1阶重极点,因此H(z)是永远稳定的。稳定和线性相位特性是FIR滤波器突出的优点。
FIR滤波器的设计任务是选择有限长度的h(n)。使传输函数H( )满足技术要求。FIR滤波器的设计方法有多种,如窗函数法、频率采样法及其它各种优化设计方法,本实验介绍窗函数法的FIR滤波器设计。
窗函数法是使用矩形窗、三角窗、巴特利特窗、汉明窗、汉宁窗和布莱克曼窗等设计出标准响应的高通、低通、带通和带阻FIR滤波器。
一、firl函数的使用
在MATLAB下设计标准响应FIR滤波器可使用firl函数。firl函数以经典方法实现加窗线性相位FIR滤波器设计,它可以设计出标准的低通、带通、高通和带阻滤波器。firl函数的用法为:
b=firl(n,Wn,/ftype/,Window)
各个参数的含义如下:
b—滤波器系数。对于一个n阶的FIR滤波器,其n+1个滤波器系数可表示为:b(z)=b(1)+b(2)z-1+…+b(n+1)z-n。
n—滤波器阶数。
Wn—截止频率,0≤Wn≤1,Wn=1对应于采样频率的一半。当设计带通和带阻滤波器时,Wn=[W1 W2],W1≤ω≤W2。
ftype—当指定ftype时,可设计高通和带阻滤波器。Ftype=high时,设计高通FIR滤波器;ftype=stop时设计带阻FIR滤波器。低通和带通FIR滤波器无需输入ftype参数。
Window—窗函数。窗函数的长度应等于FIR滤波器系数个数,即阶数n+1。
二、窗函数的使用
在MATLAB下,这些窗函数分别为:
1.矩形窗:w=boxcar(n),产生一个n点的矩形窗函数。
2.三角窗:w=triang(n),产生一个n点的三角窗函数。
当n为奇数时,三角窗系数为w(k)=
当n为偶数时,三角窗系数为w(k)=
3.巴特利特窗:w=Bartlett(n),产生一个n点的巴特利特窗函数。
巴特利特窗系数为w(k)=
巴特利特窗与三角窗非常相似。巴特利特窗在取样点1和n上总以零结束,而三角窗在这些点上并不为零。实际上,当n为奇数时bartlett(n)的中心n-2个点等效于triang(n-2)。
4.汉明窗:w=hamming(n),产生一个n点的汉明窗函数。
汉明窗系数为w(k+1)=054-046cos( ) k=0,…,n-1
5.汉宁窗:w=hanning(n),产生一个n点的汉宁窗函数。
汉宁窗系数为w(k)=05[1-cos( )] k=1,…,n
6.布莱克曼窗:w=Blackman(n),产生一个n点的布莱克曼窗函数。
布莱克曼窗系数为w(k)=042-05cos(2π )+08cos(4π )] k=1,…,n
与等长度的汉明窗和汉宁窗相比,布莱克曼窗的主瓣稍宽,旁瓣稍低。
7.凯泽窗:w=Kaiser(n,beta),产生一个n点的凯泽窗数,其中beta为影响窗函数旁瓣的β参数,其最小的旁瓣抑制α与β的关系为:
01102(α-087) α>50
β= 05842(α-21)04+007886(α-21) 21≤α≤50
0 α<21
增加β可使主瓣变宽,旁瓣的幅度降低。
8.契比雪夫窗:w=chebwin(n,r)产生一个n点的契比雪夫窗函数。其傅里叶变换后的旁瓣波纹低于主瓣r个db数。
44 实验内容
1.软件仿真实验:编写并调试MATLAB程序,观察不同窗,不同类型滤波器不同点数等共4种FIR滤波器的h(n),并记录幅频特性和相频特性。
2.硬件实验:用窗函数法设计标准响应的FIR滤波器,在计算机上观察窗函数幅频特性、幅频特性和相频特性,然后下载到实验箱。用示波器观察输入输出波形,测试滤波器的幅频响应特性。
45 MATLAB参考程序和仿真内容
%%
%mode: 模式(1--高通;2--低通;3--带通;4--带阻)
%n: 阶数,加窗的点数为阶数加1
%fp: 高通和低通时指示截止频率,带通和带阻时指示下限频率
%fs: 带通和带阻时指示上限频率
%window:加窗(1--矩形窗;2--三角窗;3--巴特利特窗;4--汉明窗;
% 5--汉宁窗;6--布莱克曼窗;7--凯泽窗;8--契比雪夫窗)
%r: 代表加chebyshev窗的r值和加kaiser窗时的beta值
%sample: 采样率
%h: 返回设计好的FIR滤波器系数
%%
%mode: 模式(1--高通;2--低通;3--带通;4--带阻)
%n: 阶数,加窗的点数为阶数加1
%fp: 高通和低通时指示截止频率,带通和带阻时指示下限频率
%fs:
以上就是关于pecl是什么意思全部的内容,包括:pecl是什么意思、C语言 FFTW 二维、快速卷积在什么情况下效率最高呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)