资源描述
南京信息工程大学 实验(实习)报告
实验(实习)名称 实验一 实验(实习)日期 2019年3月19 指导教师
院 专业 年级 班次 姓名 学号
一、 实验目的
(1)学会使用MATLAB产生常见的连续时间信号和离散时间信号;
(2)学会使用MATLAB完成一些信号的基本运算;
(3)熟悉MATLAB的基本操作,以及一些基本函数的使用,为后续的实验奠定基础。
二、 实验内容
1.利用MATLAB绘制单位冲击信号,单位阶跃信号,指数信号,单位矩形信号,抽样信号,正弦信号(分别取不同周期)
(1)单位冲击信号
代码:
T=1000;
t=linspace(0,10,T);
t1=linspace(-5,5,T);
f1=stepfun(t1,-1/T)-stepfun(t1,1/T);
plot(t1,f1);
grid on;
axis([-5 5 -1 2])
xlabel('t');
ylabel('c(t)');
title('单位冲击信号');
(2)单位阶跃信号
T=1000;
t=linspace(-5,5,T);
f1=stepfun(t,0);
plot(t,f1);
grid on;
axis([-5 5 -1 2]);
xlabel('t');
ylabel('u(t)');
title('单位阶跃信号');
(3)指数信号
T=1000;
t=linspace(-5,5,T);
xe=exp(t);
subplot(2,1,1);
plot(t,xe);
grid on;
axis([-5 3 -0.5 20]);
xlabel('t');
ylabel('x(t)');
title('指数信号1');
subplot(2,1,2);
xe=exp(-t);
plot(t,xe);
grid on;
axis([-3 3 -0.5 20]);
xlabel('t');
ylabel('x(-t)');
title('指数信号2');
(4)单位矩形信号
T=1000;
t=linspace(-5,5,T);
xt=rectpuls(t,1);
plot(t,xt);
grid on;
axis([-2 2 -0.5 1.5]);
xlabel('t');
ylabel('x(t)');
title('单位矩形信号');
(5)抽样信号
T=10000;
t=linspace(-100,100,T);
xt=sinc(t/pi);
plot(t,xt);
grid on;
axis([-100 100 -0.3 1.1]);
(6)正弦信号
w=100;
T=12000;
t=linspace(-1,10,T);
xt=sin(w*t);
subplot(3,1,1);
plot(t,xt);
grid on;
axis([-0.2 0.2 -1.5 1.5]);
xlabel('t');
ylabel('x(t)');
title('w=100');
w2=50;
T=12000;
t=linspace(-1,10,T);
xe=sin(w2*t);
subplot(3,1,2);
plot(t,xe);
grid on;
axis([-0.2 0.2 -1.5 1.5]);
xlabel('t');
ylabel('x(t)');
title('w=50');
w3=200;
T=12000;
t=linspace(-1,10,T);
xr=sin(w3*t);
subplot(3,1,3);
plot(t,xr);
grid on;
axis([-0.2 0.2 -1.5 1.5]);
xlabel('t');
ylabel('x(t)');
title('w=200');
2. 利用MATLAB绘制单位冲击序列,单位阶跃序列,实指数序列
(1)单位冲击序列
n=50;
x=zeros(1,n);
x(1)=1;
xn=0:n-1;
stem(xn,x);
grid on;
axis([-1 25 0 1.2]);
xlabel('n');
ylabel('c(n)');
title('单位冲击序列');
(2)单位阶跃序列
n=50;
x=ones(1,n);
xn=0:n-1;
stem(xn,x);
grid on;
axis([-5 25 0 1.2]);
xlabel('n');
ylabel('u(n)');
title('µ¥Î»½×Ô¾ÐòÁÐ');
(3)实指数序列
n=0:20;
a1=2;
a2=-2;
a3=0.5;
a4=-0.5;
xn1=a1.^n;
xn2=a2.^n;
xn3=a3.^n;
xn4=a4.^n;
subplot(2,2,1);
stem(xn1);
grid on;
axis([0 20 0 600000]);
xlabel('n');
ylabel('xn1(n)');
title('实指数序列xn1(n)[a>1]');
subplot(2,2,2);
stem(xn2);
grid on;
axis([0 20 -150000 300000]);
xlabel('n');
ylabel('xn2(n)');
title('实指数序列xn2(n)[a<-1]');
subplot(2,2,3);
stem(xn3);
grid on;
axis([0 20 0 1.3]);
xlabel('n');
ylabel('xn3(n)');
title('实指数序列xn3(n)[1>a>0]');
subplot(2,2,4);
stem(xn4);
grid on;
axis([0 20 -0.7 1.3]);
xlabel('n');
ylabel('xn4(n)');
title('实指数序列xn4(n)[0>a>-1]');
3.讨论题:已知连续信号 xt=cos(πt),当抽样间隔分别取T=0.08, 0.16,和0.24时所对应的离散余弦信号的波形。试讨论这三个离散信号的周期及与余弦连续信号的关系并分析一般结论。
代码:
close all;
clear;
T1=0.08;
T2=0.16;
T3=0.24;
x1=0:T1:6.28;
x2=0:T2:6.28;
x3=0:T3:6.28;
Y1=cos(x1);
Y2=cos(x2);
Y3=cos(x3);
subplot(2,2,1);
stem(x1,Y1);hold;
plot(x1,Y1);
axis([0 6.28 -1.2 1.2]);
xlabel('t');
ylabel('x(t)');
title('cosx和T=0.08时的抽样');
subplot(2,2,2);
stem(x2,Y2);hold;
plot(x1,Y1);
axis([0 6.28 -1.2 1.2]);
xlabel('t');
ylabel('x(t)');
title('cosx时T=0.16的抽样');
subplot(2,2,3);
stem(x3,Y3);hold;
plot(x1,Y1);
axis([0 6.28 -1.2 1.2]);
xlabel('t');
ylabel('x(t)');
title('cosx时 T=0.24的抽样');
结论:
这三个信号和原信号在不同时间间隔内取到的离散点,周期频率与原信号相同,但振幅的大小和周期的取值有关。
由此推测在一般情况下,不同间隔时间对连续函数进行取值得到的离散序列周期与原序列相同
4.利用MATLAB绘制下列信号的图形
1xt=1-ⅇ-0.5tut
t=linspace(-1,30,1000);
x1=(1-exp(-0.5*t));
f1=stepfun(t,0);
xt=x1.*f1;
plot(t,xt);
axis([-1 30 0 1.1]);
xlabel('t');
ylabel('x(t)');
title('x(t)=(1-exp(-0.5t))u(t)');
2xt=cosπtut-ut-2
t=linspace(-1,4,2000);
x1=cos(pi*t);
f1=stepfun(t,0);
f2=stepfun(t-2,0);
ut=f1-f2;
xt=x1.*ut;
plot(t,xt);
axis([-1 3 -1.2 1.2]);
xlabel('t');
ylabel('x(t)');
title('x(t)=cos(pi*t)[u(t)-u(t-2)]');
5.利用MATLAB绘制下列离散信号
1xn=un-3
n=50;
x=ones(1,n-3);
xn=3:n-1;
stem(xn,x);
grid on;
axis([-5 25 0 1.2]);
xlabel('n');
ylabel('u(n-3)');
title('x(n)=u(n-3)');
2xn=nun-un-5
clear;
t=52;
n=linspace(-1,49,51);
y0=zeros(1);
x0=ones(1,t-2);
x=[y0,x0];
y=zeros(1,7,1);
x1=ones(1,t-8);
x2=[y,x1];
x3=x-x2;
xt=n.*x3;
stem(n,xt);
axis([-1 10 -0.5 6]);
xlabel('n');
ylabel('x(n)');
title('x(n)=n*[u(n)]-u(n-5)');
6. 已知如图所示的三角波x(t),利用MATLAB画出x(2t), x(2-2t), d(xt)dt和-∞tx(τ)dτ
代码:
clear;
t=linspace(-3,3,2000);
ft=tripuls(t,4,0.5);
ft1=tripuls(t.*2,4,0.5);
ft2=tripuls(2-2*t,4,0.5);
ft3=[diff(ft),0];
ft0=@(x)integral(@(t)tripuls(t,4,0.5),-3,t);
func=arrayfun(@(k)integral(@(t)tripuls(t,4,0.5),-3,t(k)),1:numel(t));
subplot(2,2,1);
plot(t,ft1);
axis([-3 3 0 1.2]);
xlabel('t');
ylabel('ft1');
title('三角波的伸缩');
subplot(2,2,2);
plot(t,ft2);
axis([-3 3 0 1.2]);
xlabel('t');
ylabel('ft2');
title('三角波的平移和反向');
subplot(2,2,3);
plot(t,ft3);
axis([-3 3 -0.004 0.0025]);
xlabel('t');
ylabel('ft3');
title('三角波的微分');
subplot(2,2,4);
plot(t,func);
axis([-3 3 0 2.5]);
xlabel('t');
ylabel('ft4');
title('三角波的积分');
7. 利用MATLAB读取一段音频信号x(t)并绘制其波形图,将其分别4倍和8倍抽取后得到信号x1(t)和x2(t),分别绘制其波形。播放这三个音频信号,比较其效果。
代码:
[sampledata,FS] = audioread('G:\ÒôÀÖ\Again.mp3');
x=sampledata;
subplot(3,1,1);
plot(x);
xlabel('t');
ylabel('x(t)');
title('Ô´ÐźÅ');
x1=x(1:4:end);
subplot(3,1,2);
plot(x1);
xlabel('t');
ylabel('x1(t)');
title('4±¶³éÈ¡ºóµÄÐźÅ');
x2=x(1:8:end);
subplot(3,1,3);
plot(x2);
xlabel('t');
ylabel('x2(t)');
title('°Ë±¶³éÈ¡ºóµÄÐźÅ');
8. 已知x1t=4-tεt-εt-4及信号x2t=sin2πt,用MATLAB绘制下列波形
代码:
11
T=1000;
t=linspace(-5,5,T);
%第一问
subplot(2,2,1);
plot(t,x3(t));
grid on;
xlabel('t');
ylabel('x3(t)');
title('x3(t)=x1(t)+x2(t)');
%第二问
x4=x1(t).*x2(t);
subplot(2,2,2);
plot(t,x4);
grid on;
xlabel('t');
ylabel('x4(t)');
title('x4(t)=x1(t)*x2(t)');
%第三问
x5=fliplr(x1(t))+x1(t);
subplot(2,2,3);
plot(t,x5);
grid on;
xlabel('t');
ylabel('x5(t)');
title('x(t)=x1(-t)+x1(t)');
%第四问
x6=x2(t).*x3(t-4);
subplot(2,2,4);
plot(t,x6);
grid on;
xlabel('t');
ylabel('x6(t)');
title('x(t)=x2(-t)*x3(t-4)');
%函数u(t)
function [ f ] = u( t )
f=stepfun(t,0);
end
%函数x(t)
function [ f ] = u( t )
f=stepfun(t,0);
return;
end
%函数x1(t)
function [x1] = x1( t )
x1=(u(t)-u(t-4)).*(4-t);
end
%函数x2(t)
function [x2 ] = x2( t )
x2=sin(2*pi*t);
end
%函数x3(t)
function [ x3 ] = x3( t )
x3=x1(t)+x2(t);
end
9.已知离散时间x(n)=[0 1 2 3 3 3 3, n=-3:3], 用MATLAB绘制出x(n), x(-n), x(n+2)和x(n-2)
代码:
clear;
xn=[0 1 2 3 3 3 3];
n=-3:3;
xn1=fliplr(xn);
x1=[0 0];
x2=[xn,x1];
x3=[x1,xn];
xn2=x2(3:9);
xn3=x3(1:7);
subplot(2,2,1);
stem(n,xn);
axis([-3 3 0 4]);
xlabel('n');
ylabel('x(n)');
title('x(n)');
subplot(2,2,2);
stem(n,xn1);
xlabel('n');
ylabel('x(-n)');
axis([-3 3 0 4]);
title('x(-n)');
subplot(2,2,3);
stem(n,xn2);
xlabel('n');
ylabel('x(n+2)');
axis([-3 3 0 4]);
title('x(n+2)');
subplot(2,2,4);
stem(n,xn3);
xlabel('n');
ylabel('x(n-2)');
axis([-3 3 0 4]);
title('x(n-2)');
三、实验总结
在本次实验中,我学会了常见的连续时间信号和离散时间信号在MATLAB中的绘制,了解了MATLAB中函数的应用和信号的运算,熟悉了MATLAB的使用,掌握了编程的方法,对信号的运算有了进一步的认识。
展开阅读全文