信号分析课程设计.docx
《信号分析课程设计.docx》由会员分享,可在线阅读,更多相关《信号分析课程设计.docx(22页珍藏版)》请在冰点文库上搜索。
信号分析课程设计
课程:
信号分析与处理基础
上机报告
第一题滤波
(1)时域滤波:
代码如下:
%产生x(t)
f1=25;%参数录入
f2=40;
b=100;
f3=5;
f4=80;
t=1:
200;
T=t*0.004;
s=exp(-b*T.*T).*sin(2*pi*f1*T)+exp(-b*T.*T).*sin(2*pi*f2*T);%分别表示sp
p=0.5*sin(2*pi*f3*T)+0.5*cos(2*pi*f4*T);
x=s+p;%产生x(t)
%产生h(t)
t2=1:
60;%录入参数
T2=t2*0.004;
ff1=20;
ff2=45;
w1=2*pi*ff1;
w2=2*pi*ff2;
wo=(w1+w2)/2;
ow=(w2-w1)/2;
h0=2*(w2-w1)/pi;
hn=2*cos(wo.*T2).*sin(ow.*T2)./(pi*T2);
h=[h0,hn];
%褶积运算
y=conv(x,h);
%用fft通过y(t)产生Y(k)
Y=fft(y,256);
IYI=abs(Y);
%出图
subplot(411);
plot(x);title('x(t)');
subplot(412);
plot(h);title('h(t)');
subplot(413);
plot(y);title('y(t)');
subplot(414);
plot(IYI);title('|y(t)|');
(2)频域滤波:
%频域滤波,产生x(t)
f1=25;%录入参数
f2=40;
f3=5;
f4=80;
b=100;
t1=1:
200;
T1=t1*0.004;
s=exp(-b*T1.*T1).*sin(2*pi*f1*T1)+exp(-b*T1.*T1).*sin(2*pi*f2*T1);%分别表达出s(t),p(t)
p=0.5*sin(2*pi*f3*T1)+0.5*cos(2*pi*f4*T1);
x=s+p;
%产生X(k)
X=fft(x,256);%补齐FFT
IXI=abs(X);
%产生H(k)
df=1/(256*0.004);
m1=ceil(20/df);
m2=ceil(45/df);
m3=256-m2;
m4=256-m1;
h1=zeros(1,(m1-1));
h2=ones(1,(m2-m1+1));
h3=zeros(1,(m3-m2-1));
h4=ones(1,(m4-m3+1));
h5=zeros(1,256-m4);
H=[h1,h2,h3,h4,h5];
IHI=abs(H);
Y=X.*H;
IYI=abs(Y);
subplot(311);
plot(IXI);title('|X(k)|');
subplot(312);
plot(IHI);title('|H(k)|');
subplot(313);
plot(IYI);title('|Y(k)|');
(3)通过ifft反求y(t):
代码如下:
%产生s(t)
f1=25;%录入参数
f2=40;
b=100;
f3=5;
f4=80;
t=1:
200;
T=t*0.004;
s=exp(-b*T.*T).*sin(2*pi*f1*T)+exp(-b*T.*T).*sin(2*pi*f2*T);%产生s(t)
p=0.5*sin(2*pi*f3*T)+0.5*cos(2*pi*f4*T);%产生p(t)
x=s+p;%产生x(t)
%产生X(k)
X=fft(x,256);
IXI=abs(X);
%产生h(t)
df=1/(256*0.004);
m1=ceil(20/df);
m2=ceil(45/df);
m3=256-m2;
m4=256-m1;
h1=zeros(1,(m1-1));
h2=ones(1,(m2-m1+1));
h3=zeros(1,(m3-m2-1));
h4=ones(1,(m4-m3+1));
h5=zeros(1,256-m4);
H=[h1,h2,h3,h4,h5];
IHI=abs(H);
Y=X.*H;
IYI=abs(Y);
y=ifft(Y,256);
h=ifft(H,256);
y1=conv(x,h);%通过IFFT产生y
%出图:
subplot(311)
plot(IYI);title('|Y(k)|');
subplot(312);
plot(real(y));
title('y(t)');
subplot(313);
plot(real(y1));title('y1(t)');
图标如下:
第二题振幅谱补零
代码如下:
%产生x(n)
A1=1;%参数录入
A2=0.8;
A3=1;
N=200;
b=100;
f1=35;
f2=45;
f3=60;
t=1:
N;
T=t*0.004;
x=exp(-b*T.*T).*cos(2*pi*f1*T)+0.8*exp(-b*T.*T).*cos(2*pi*f2*T)+exp(-b*T.*T).*cos(2*pi*f3*T);%表达出x(n)
subplot(211);
plot(x);title('x(n)');
%通过FFT运算出X(k)
X=fft(x);
IXI=abs(X);
subplot(212);
plot(IXI);title('|X(k)|');
%产生x(n)
A1=1;%参数录入
A2=0.8;
A3=1;
N=200;
b=100;
f1=35;
f2=45;
f3=60;
t=1:
N;
T=t*0.004;
x=exp(-b*T.*T).*cos(2*pi*f1*T)+0.8*exp(-b*T.*T).*cos(2*pi*f2*T)+exp(-b*T.*T).*cos(2*pi*f3*T);%表达出x(n)
subplot(211);
%补零:
2的八次方,补56个零,产生X1(k)
zero=zeros(1,56);
x1=[x,zero];
subplot(211);
plot(x1);title('x1(n)');
X=fft(x1);
IXI=abs(X);
subplot(212);
plot(IXI);title('|X1(k)|');
%产生x(n)
A1=1;%参数录入
A2=0.8;
A3=1;
N=200;
b=100;
f1=35;
f2=45;
f3=60;
t=1:
N;
T=t*0.004;
x=exp(-b*T.*T).*cos(2*pi*f1*T)+0.8*exp(-b*T.*T).*cos(2*pi*f2*T)+exp(-b*T.*T).*cos(2*pi*f3*T);%表达出x(n)
subplot(211);
%补零:
2的九次方,补312个零,产生X2(k)
zero=zeros(1,312);
x2=[x,zero];
subplot(211);
plot(x2);title('x2(n)');
X=fft(x2);
IXI=abs(X);
subplot(212);
plot(IXI);title('|X2(k)|');
%产生x(n)
A1=1;%参数录入
A2=0.8;
A3=1;
N=200;
b=100;
f1=35;
f2=45;
f3=60;
t=1:
N;
T=t*0.004;
x=exp(-b*T.*T).*cos(2*pi*f1*T)+0.8*exp(-b*T.*T).*cos(2*pi*f2*T)+exp(-b*T.*T).*cos(2*pi*f3*T);%表达出x(n)
subplot(211);
%补零:
2的十次方,补824个零,产生X3(k)
zero=zeros(1,824);
x3=[x,zero];
subplot(211);
plot(x3);title('x3(n)');
X=fft(x3);
IXI=abs(X);
subplot(212);
plot(IXI);title('|X3(k)|');
第三题计算自互相关
代码如下:
%产生x(n)
A1=1;%带入参数
f1=35;
m=1:
150;
M=m*0.004;
x=1*sin(2*pi*f1*M);
%出图x(n)
subplot(211);
plot(x);title('x(n)');
%产生y(n)
A2=0.8;%带入参数
f2=50;
b=100;
m1=1:
150;
M1=m1*0.004;
y=0.8*exp(-100*M1.*M1).*cos(2*pi*f2*M1);
%出图y(n)
subplot(212);
plot(y);title('y(n)');
%产生x(n)
A1=1;%带入参数
f1=35;
m=1:
150;
M=m*0.004;
x=1*sin(2*pi*f1*M);
%产生y(n)
A2=0.8;%带入参数
f2=50;
b=100;
m1=1:
150;
M1=m1*0.004;
y=0.8*exp(-100*M1.*M1).*cos(2*pi*f2*M1);
%产生rxy(τ)
rxy=xcorr(x,y);%调用函数xcorr
subplot(4,1,1);
plot(rxy);title('rxy(τ)');
%产生ryx(τ)
ryx=xcorr(y,x);
subplot(4,1,2);
plot(ryx);title('ryx(τ)');
%产生rxy(-τ)
%产生x(-n)
f1=35;%带入参数
m2=1:
150;
M2=-m2*0.004;
x2=1*sin(2*pi*f1*abs(M2));%表达出x(-n)
subplot(4,1,3);
plot(x2);title('x(-n)');
rx2y=conv(x2,y);
subplot(4,1,4);
plot(rx2y);title('rxy(-τ)');
自相关:
%产生x(n)
A1=1;%带入参数
f1=35;
m=1:
150;
M=m*0.004;
x=1*sin(2*pi*f1*M);
%产生y(n)
A2=0.8;%带入参数
f2=50;
b=100;
m1=1:
150;
M1=m1*0.004;
y=0.8*exp(-100*M1.*M1).*cos(2*pi*f2*M1);
%产生rxx(τ)
rxx=xcorr(x,x);%调用函数xcorr
subplot(2,1,1);
plot(rxx);title('rxx(τ)');
%产生ryy(τ)
ryy=xcorr(y,y);
subplot(2,1,2);
plot(ryy);title('ryy(τ)');
选做题地震记录及信噪比分析
代码如下:
(1)
%产生b(t)
f=50;%参数录入
N=1:
41;
T=N*0.004;
b=(1-2*pi*pi*f*f*T.*T).*exp(-pi*pi*f*f*T.*T);
B=fft(b,64);
IBI=abs(B);
U=angle(B);;
subplot(311);
%出图
plot(b);title('b(t)');
subplot(312);
plot(IBI);title('B(w)');
subplot(313);
plot(U);title('U(w)');
(2)
%产生函数x(t)
f=50;%录入参数
N=1:
41;
T=N*0.004;
b=(1-2*pi*pi*f*f*T.*T).*exp(-pi*pi*f*f*T.*T);
B=fft(b,64);
IBI=abs(B);
U=angle(B);
g=zeros(1,100);%产生g(t)
g(35)=-0.5;
g(45)=0.4;
g(48)=-0.35;
g(65)=0.5;
s=conv(b,g);
n=0.4*rand(1,140)-0.2;
x=s+n;%产生x(t)
p1=sum(s.*s);%产生信噪比
p2=sum(n.*n);
p=p1/p2;
fprintf('%d',p);
%出图
subplot(311);
plot(real(x));title('x(t)');
subplot(312);
plot(n);title('n(t)');
subplot(313);
plot(g);title('g(t)');
%产生函数x(t)
f=50;%录入参数
N=1:
41;
T=N*0.004;
b=(1-2*pi*pi*f*f*T.*T).*exp(-pi*pi*f*f*T.*T);
B=fft(b,64);
IBI=abs(B);
U=angle(B);
g=zeros(1,100);%产生g(t)
g(35)=-0.5;
g(45)=0.4;
g(48)=-0.35;
g(65)=0.5;
s=conv(b,g);
n=1*rand(1,140)-0.5;
x=s+n;%产生x(t)
p1=sum(s.*s);%产生信噪比
p2=sum(n.*n);
p=p1/p2;
fprintf('%d',p);
%出图
subplot(311);
plot(real(x));title('x(t)');
subplot(312);
plot(n);title('n(t)');
subplot(313);
plot(g);title('g(t)');
1.631078e-002
学生姓名:
XXX
学号:
xxxxxxxxxxx