当前位置:首页 > 数字信号处理实验,滤波器设计
数字信号处理实验指导书(修订版1)
4. 正弦序列的产生
设 正弦序列x(n)=sin(ωn),取样频率 fs=64Hz,信号频率 f=5Hz, 样点n=0~N-1,(N=64),ω=2πf/fs,编程产生x(n)并绘图。 程序: %shiyan141.m clear clc
N=64;fs=64;f=5; % n=0:1:N-1; % w=2*pi*f/fs; % x=sin(w*n); % stem(x,'.') % 实验要求:
1)在%后的空格内填入注释 2)运行上述程序,绘出结果波形。
3)设双音多频信号\为x(n)=sin(ω1n)+sin(ω2n),其中f1=697Hz,f2=1336Hz, 取样频率fs=8000Hz,编程产生x(n)并绘出x(n)的波形。 (n=0~799)
5.拓展题
数字信号处理算法之一 ----时间平均
时间平均可用来消除周期信号中的随机噪声。
对m个周期的振动信号x(n)=s(n)+u(n)[其中s(n)--故障信号,为余弦序列;
u(n)---随机噪声]做时间平均,即把x(n)按周期n分段,将每个周期的对应点相加再做平均,计算时间平均前后的信噪比。 %时间平均程序 program11.m clear clc
n=10; % m=input('m='); % load sip % x=sip;
s=zeros(1,n);
for i=1:m % s=s+x(1+n*(i-1):i*n); end s=s/m;
k=[0:n-1];
subplot(321);plot(k,x(1:n));grid; subplot(322);plot(k,s);grid; i=0:1:n-1;
s0=cos(2*pi*i/n); ps=sum(s0.^2)/n;
pu=1;
snr0=10*log10(ps/pu) %原信噪比
py=sum((s-s0).^2)/n;
snr=10*log10(ps/py) %时间平均后的信噪比
5
数字信号处理实验指导书(修订版1)
%数据文件sip的产生程序 shu.m clear clc
n=10;m=1000; i=0:1:n-1; s=cos(2*pi*i/n);
x=zeros(1,n*m);
u=randn(size(1:n*m));% for j=1:m % x(1+n*(j-1):j*n)=s+u(1+n*(j-1):j*n); end
save sip x -ascii % 实验要求:
1)在空格中填入注释。
2)先运行shu.m,产生数据文件sip,再运行program11.m,分别绘出当m=10,100,500,1000时,输入/输出信号的波形。
6
数字信号处理实验指导书(修订版1)
实验二 FFT频谱分析
一、实验目的
1.理解FFT算法的编程思想。
2.熟练掌握利用FFT对信号作频谱分析。
包括正确地进行参数选择、作频谱图以及读频谱图。 3.了解FFT的应用。 二、实验环境
1.Windows98以上操作系统 2.安装MATLAB6.0以上版本 三、实验原理 1. 谱分析参数选择
1)设信号x(t)最高频率为fc,对其进行取样得x(n),根据取样定理,取样频率fs必须满足: 。
2)设谱分辨率为F,则最小记录时间tpmin= ;取样点数
N≥ ;为使用快速傅里叶变换(FFT)进行谱分析,N还须满足: N= 。
2.用FFT计算信号x(n)的频谱。[设x(n)为实信号] 1)对信号x(n)作N点FFT,得频谱X(k)(k=0~N-1)
X(k)=XR(k)+jXI(k) (k=0~N/2-1), XR(k)— X(k)的实部;XI(k)— X(k)的虚部。 Matlab语句:Y=fft(x,N)
其中:x----x(n) Y----X(k)
2)幅频谱:|X(k)|= ,由于x(n)为实信号,因此|X(k)| 对称, Matlab语句:abs(Y) iii)功率谱:PSD(k)=|X(k)|2/N=X(k)X*(k)/N Matlab语句:PSD=Y.*conj(Y)/N 其中:conj(Y)-- X*(k)[X(k)的共轭]
3.读频谱图
频谱图中任意频率点k对应实际频率为:fk= 。 三、用FFT实现线性卷积运算
用FFT实现y(n)=x(n)*h(n)的步骤为:
1) 设x(n)及h(n)的长度分别为N1和N2。为使循环卷积等于线性卷积,用补0的方法使x(n),h(n) 长度均为N,则N须满足N≥ ;为用FFT计算DFT, 则N还须满足N= 。 2) 用FFT计算X(k),H(k); (N点) 3)Y(k)= 。 4) y(n)= 。 四、实验内容
1. 理解DIT-FFT算法原理程序,并用它计算X(k)=FFT[R4(n)],分别取N=4,8,16和64, 绘出幅频谱|X(k)|。 %程序 DIT.m clear
clc
x=input('x= '); % N=input('N= '); % 7
数字信号处理实验指导书(修订版1)
x(length(x)+1:N)=zeros(1,N-length(x)); %补0 x(1:N) l=log2(N); x1=zeros(1,N);
for j1=1:N %倒序 x1(j1)=x(bin2dec(fliplr(dec2bin(j1-1,l)))+1); end
%?T(DIT)%%
M=2;
while(M<=N)
W=exp(-2*j*pi/M); %旋转因子W
V=1;
for k=0:1:M/2-1 %k为每级蝶形运算旋转因子的个数 for i=0:M:N-1 %i为各群的首序号 p=k+i; q=p+M/2; A=x1(p+1);
B=x1(q+1)*V;
x1(p+1)=A+B; %本级蝶形运算,x1最终存放X(k) x1(q+1)=A-B;
end
V=V*W; %旋转因子W的变化 end
M=2*M; %第M级 end
%%%%%%
subplot(211);stem(x,'.');grid on; % title('x(n)'); % subplot(212);stem(abs(x1),'.');grid on; % title('|X(k)|'); % 2.FFT谱分析
设信号为x(t)=sin(2πf1t)+sin(2πf2t)+随机噪声,f1=50Hz, f2=120Hz,以取样频率 fs=1kHz对x(t)进行取样,样本长度tp=0.25s,得x(n),对x(n)作256点FFT,得频谱X(k), 画原信号x(n),幅频谱|X(k)|以及功率谱PSD(k),对信号进行谱分析。 %程序 pufenxi.m clear clc
fs=1000;
t=0:1/fs:0.25; % N=256; % f1=50;f2=120; % s=sin(2*pi*f1*t)+sin(2*pi*f2*t); % x=s+randn(size(t)); %信号+噪声x(n)
Y=fft(x,N); % PSD=Y.*conj(Y)/N; % 8
共分享92篇相关文档