信号与系统MATLAB基本实验.docx
《信号与系统MATLAB基本实验.docx》由会员分享,可在线阅读,更多相关《信号与系统MATLAB基本实验.docx(29页珍藏版)》请在冰点文库上搜索。
信号与系统MATLAB基本实验
《信号与系统MATLAB实践》第一次上机作业
实验一、熟悉MATLAB基本操作
三、基本序列运算
1.数组的加减乘除和乘方运算
A=[123];
B=[456];
C=A+B;
D=A-B;
E=A.*B;
F=A./B;
G=A.^B;
subplot(2,4,1);stem(A)
subplot(2,4,2);stem(B)
subplot(2,4,3);stem(C)
subplot(2,4,4);stem(D)
subplot(2,4,5);stem(E)
subplot(2,4,6);stem(F)
subplot(2,4,7);stem(G)
2.绘制函数波形
(1)t=0:
:
10
x=3-exp(-t);
plot(t,x)
ylabel('f(t)');
xlabel('t');
title('
(1)');
(2)t=0:
:
10
x=5*exp(-t)+3*exp(-2*t);
plot(t,x)
ylabel('f(t)');
xlabel('t');
title('
(2)');
(3)t=0:
:
3
x=exp(-t).*sin(2*pi*t);
plot(t,x)
ylabel('f(t)');
xlabel('t');
title('(3)');
(4)t=0:
:
3
x=sin(3*t)./(3*t);
plot(t,x)
ylabel('f(t)');
xlabel('t');
title('(4)');
(5)k=1:
1:
6
x=(-2).^(-k);
stem(k)
xlabel('k');
ylabel('f(k)');
title('(5)');
(6)k=0:
1:
4
x=exp(k);
stem(k)
xlabel('k');
ylabel('f(k)');
title('(6)');
(7)k=1:
1:
99
x=k;
stem(k)
xlabel('k');
ylabel('f(k)');
title('(7)');
四、利用MATLAB求解线性方程组。
1.a=[231;111;3-1-1];
b=[116-2]';
x=inv(a)*b
x=
2.a=[111;1-21;123];
b=[2-1-1]';
x=inv(a)*b
x=
3.a=[110;011;101];
b=[273330]';
x=inv(a)*b
x=
12
15
18
实验二、信号的运算
二、编写实现下列离散信号运算函数的程序,并画出波形。
1.k=0:
100
x=sin(k);
stem(x)
xlabel('k');
ylabel('f(k)');
title('2');
2.k=0:
100
x=sin(k)+sin(pi*k);
stem(x)
xlabel('k');
ylabel('f(k)');
title('2');
3.k=3:
103
x=k.*sin(k);
stem(x)
xlabel('k');
ylabel('f(k)');
title('3');
4.functionf=fun(k)
fori=1:
100
k(i)=i-50;
ifk(i)<0
f(i)=(-1).^k(i);
elsef(i)=(-1).^k(i)+.^k(i);
end
end
stem(k,f)
xlabel('k');
ylabel('f(k)');
title('4');
七、编写一个计算两个离散序列的卷积和的程序,并用其计算下列卷积的和。
1.f1=[1111];
f2=[1];
conv(f1,f2)
ans=
2.f1=[1111];
f2=[321];
conv(f1,f2)
ans=
356631
实验三、信号的谱分析
二、1.clc;
clearall;
x=[1,2,3,4,5,6,6,5,4,3,2,1];
dtft=zeros(70);
fori=1:
70
w(i)=(i-35)/10;
fork=1:
12
dtft(i)=dtft(i)+x(k)*exp(-j*(k-1)*w(i));
end
end
subplot(1,2,1);
plot(w,abs(dtft));xlabel('w');ylabel('DTFT');title('幅频特性');
subplot(1,2,2);
plot(w,angle(dtft));xlabel('w');ylabel('DTFT');title('相频特性');
2.clc;
clearall;
fori=1:
120
ifi==10
x(i)=1;
elseifi==20
x(i)=2;
elseifi==30
x(i)=3;
elseifi==40
x(i)=4;
elseifi==50
x(i)=5;
elseifi==60
x(i)=6;
elseifi==70
x(i)=6;
elseifi==80
x(i)=5;
elseifi==90
x(i)=4;
elseifi==100
x(i)=3;
elseifi==110
x(i)=2;
elseifi==120
x(i)=1;
elsex(i)=0;
end
end
%x=[1,2,3,4,5,6,6,5,4,3,2,1];
%dtft=zeros(150);
fori=1:
120
w(i)=(i-40)/10;
end
G=fft(x);
subplot(1,2,1);
plot(w(1:
80),abs(G(1:
80)));xlabel('w');ylabel('DFT');title('幅频特性');
subplot(1,2,2);
plot(w(1:
80),angle(G(1:
80)));xlabel('w');ylabel('DFT');title('相频特性');
3.%DTFT
clc;
clearall;
x=[1,2,3,4,5,6,6,5,4,3,2,1];
dtft=zeros(70);
fori=1:
70
w(i)=(i-35)/10;
fork=1:
12
dtft(i)=dtft(i)+x(k)*exp(-j*(k-1)*w(i));
end
end
figure;plot(w,abs(dtft),'b');xlabel('w');ylabel('DTFTorDFT');title('幅频特性');
holdon
%DFT
clc;
clearall;
fori=1:
120
ifi==10
x(i)=1;
elseifi==20
x(i)=2;
elseifi==30
x(i)=3;
elseifi==40
x(i)=4;
elseifi==50
x(i)=5;
elseifi==60
x(i)=6;
elseifi==70
x(i)=6;
elseifi==80
x(i)=5;
elseifi==90
x(i)=4;
elseifi==100
x(i)=3;
elseifi==110
x(i)=2;
elseifi==120
x(i)=1;
elsex(i)=0;
end
end
fori=1:
120
w(i)=(i-40)/10;
end
G=fft(x);
holdon;
plot(w(1:
80),abs(G(1:
80)),'r');xlabel('w');ylabel('DTFTorDFT');title('幅频特性');
三、分别用数值计算法和DFT法,计算下列信号的频谱,并画出其幅度频谱和相位频谱。
1.数值计算
%
functiony=fun111(t)
[M,N]=size(t);
fori=1:
N
if((t(i)>-pi)&&(t(i)<0))
y(i)=pi+t(i);
elseif((t(i)>0)&&(t(i)y(i)=pi-t(i);
else
y(i)=0
end
end
%
clearall
clc
fori=1:
1000
w(i)=(i-1)/25;
F=@(t)fun111(t).*exp(-j*w(i).*t);
G(i)=quad(F,0,1);
end
subplot(1,2,1);
plot(w,abs(G));xlabel('w');ylabel('G');title('数值计算幅度频谱');
subplot(1,2,2);
plot(w,angle(G));xlabel('w');ylabel('Fi');title('数值计算相位频谱');
DFT法
%
functiony=fun1(x)
if((-piy=pi+x;
elseif((0y=pi-x;
else
y=0
end
%
clearall
clc
fori=1:
1000
g(i)=fun1(2/1000*i-1);
w(i)=(i-1)**pi;
end
fori=1001:
10000
g(i)=0;
w(i)=(i-1)**pi;
end
G=fft(g)/1000;
subplot(1,2,1);
plot(w(1:
50),abs(G(1:
50)));
xlabel('w');ylabel('G');title('DFT幅度频谱');
subplot(1,2,2);
plot(w(1:
50),angle(G(1:
50)))
xlabel('w');ylabel('Fi');title('DFT相位频谱');
2.数值计算
%
functiony=fun222(t)
[M,N]=size(t);
fori=1:
N
if(t(i)<1)&&(t(i)>-1)
y(i)=cos(pi*(t(i))/2);
else
y(i)=0;
end
end
%
clearall
clc
fori=1:
1000
w(i)=(i-1)/25;
F=@(t)fun222(t).*exp(-j*w(i).*t);
G(i)=quad(F,0,1);
end
subplot(1,2,1);
plot(w,abs(G));xlabel('w');ylabel('G');title('数值计算幅度频谱');
subplot(1,2,2);
plot(w,angle(G));xlabel('w');ylabel('Fi');title('数值计算相位频谱');
DFT法
%
functiony=fun2(x)
ifx<1&&x>-1
y=cos(pi*x/2);
else
y=0;
end
%
fori=1:
1000
g(i)=fun2(2/1000*i-1);
w(i)=(i-1)**pi;
end
fori=1001:
10000
g(i)=0;
w(i)=(i-1)**pi;
end
G=fft(g)/1000;
subplot(1,2,1);
plot(w(1:
50),abs(G(1:
50)));
xlabel('w');ylabel('G');title('幅度频谱');
subplot(1,2,2);
plot(w(1:
50),angle(G(1:
50)))
xlabel('w');ylabel('Fi');title('相位频谱');
3.数值计算
%
functiony=fun333(t)
[M,N]=size(t);
fori=1:
N
if(t(i)<0)&&(t(i)>-1)
y(i)=1;
elseift(i)>0&&t(i)<1
y(i)=-1;
else
y(i)=0;
end
end
end
%
clearall
clc
fori=1:
1000
w(i)=(i-1)/25;
F=@(t)fun333(t).*exp(-j*w(i).*t);
G(i)=quad(F,0,5);
end
subplot(1,2,1);
plot(w,abs(G));xlabel('w');ylabel('G');title('数值计算幅度频谱');
subplot(1,2,2);
plot(w,angle(G));xlabel('w');ylabel('Fi');title('数值计算相位频谱');
DFT法
%
functiony=fun3(x)
ifx<0&&x>-1
y=1;
elseifx>0&&x<1
y=-1;
else
y=0
end
%
fori=1:
1000
g(i)=fun3(2/1000*i-1);
w(i)=(i-1)**pi;
end
fori=1001:
10000
g(i)=0;
w(i)=(i-1)**pi;
end
G=fft(g)/1000;
subplot(1,2,1);
plot(w(1:
50),abs(G(1:
50)));
xlabel('w');ylabel('G');title('DFT幅度频谱');
subplot(1,2,2);
plot(w(1:
50),angle(G(1:
50)))
xlabel('w');ylabel('Fi');title('DFT相位频谱');