实验一和二 2.docx
《实验一和二 2.docx》由会员分享,可在线阅读,更多相关《实验一和二 2.docx(12页珍藏版)》请在冰豆网上搜索。
实验一和二2
实验环境
MATLAB7.0
实验名称
实验一Matlab基本操作
实验目的
1、认识Matlab软件环境,熟悉Matlab编程的特点。
2、学习信号的产生与画图,矩阵生成与运算,流程控制等操作。
实验内容
1、编写程序产生如下信号,并按要求绘制相应的曲线。
利用saveas命令把图形分别保存成.fig格式和.jpg格式的图像文件。
程序
x=0:
pi/1000:
2*pi;
y1=sin(2*x+pi/4);
plot(x,y1,'b:
o')
xlabel('x')
ylabel('y')
title('正弦信号曲线')
gridon
holdon
y2=sin(2*x+3*pi/4);
plot(x,y2,'r:
x')
gridon
holdon
y3=sin(2*x-pi/4);
plot(x,y3,'g:
+')
gridon
holdon
subplot(2,2,1);plot(x,y1);title('y1');gridon;
subplot(2,2,2);plot(x,y2);title('y2');gridon;
subplot(2,2,3);plot(x,y3);title('y3');gridon;
结果
(1)信号形式
,利用plot命令绘制该信号在
区间内,且采样间隔为
的曲线。
填加网格线,标题为“正弦信号曲线”,横坐标显示“x”,纵坐标显示“y”。
实验结果及分析
(2)将上述信号左平移或右平移
得到两个新信号y2和y3,利用hold命令在同一图中显示三条曲线并通过线型和颜色加以区分。
(3)利用subplot命令将上述三个信号利用子图来显示;利用figure命令将上述三个信号分别在不同的窗体中同时显示。
(4)z=0:
0.1:
40;x=cos(z);y=sin(z),利用plot3命令绘制三维曲线并填加相应的坐标轴标注。
程序结果
z=0:
0.1:
40;
x=cos(z);
y=sin(z);
plot3(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
h=figure;
plot(...)
saveas(h,'filename','format')
2、向量、矩阵生成及相关运算。
(1)x=1:
3;y=4:
6;x*y=?
;x.*y=?
;x’*y=?
;x*y’=?
;x.’*y=?
;x*y.’=?
程序
x=1:
3;
y=4:
6;
x.*y
x'*y
x*y'
x.'*y
x*y.'
实验结果及分析
结果
ans=
41018
ans=
456
81012
121518
ans=
32
ans=
456
81012
121518
ans=
32
(2)创建矩阵
,并进行如下操作,取出矩阵A的前两行元素,生成一个新矩阵B。
生成一个单位矩阵,与矩阵A进行加减运算。
练习利用save命令保存数据为mat格式,并利用load命令从外部文件读入数据。
程序结果
A=[123;456;789]123
B=A(1:
2,:
)456
C=eye;789
x=A+C
y=A-C
loadUntitled.txt
Untitled
(3)利用wavread与imread命令读取一个wav格式的语音文件和jpg格式的图像文件,并利用sound和image/imshow命令将其播放或显示出来。
利用auwrite把语音文件写成.au格式的文件,利用imwrite把图像文件写成bmp格式的文件。
程序结果
x=wavread('1')
plot(x)
save
load()
实验结果及分析
(4)利用矩阵求逆和乘法运算求解方程组
程序
%创建线性方程组的系数矩阵和向量
A=[-112;3-11;-134];
b=[2;6;4];
%求解方程,使用矩阵求逆的方法
x=inv(A)*b
%求解方程,使用矩阵左除运算
%x=A\b
结果
x=
1.0000
-1.0000
2.0000
3、流程控制语句相关操作。
(1)使用for语句及while语句求解1至100整数中奇数的和。
程序
For语句
clearall
sum=0
forn=1:
2:
100
sum=sum+n
end
disp('程序运行结束!
)
结果
sum=2500
程序运行结束!
程序
while语句
clearall
n=1
sum=1
whilen<99
n=n+2
sum=sum+n
end
结果
sum=2500
实验结果及分析
(2)求连续自然数的和,当和大于等于1000时,求最后一个自然数以及自然数的和。
程序
sum=0
n=0;
whilesum<1000
n=n+1
sum=sum+n
end
结果
n=45
sum=1035
实验
名称
实验二Matlab在信号与系统中的应用
实验目的
1、掌握信号与系统中Matlab编程的特点。
2、学习微分方程、卷积、系统函数的Matlab编程实现。
实验内容
1、按照卷积原理步骤求如下两幅图中
和
信号卷积后的波形。
程序
%functionx=csconv(F1,t1_s,t1_e,F2,t2_s,t2_e)
%functionx=csconv(F1,F2)
%f1='2*rectpuls(t,4)';
%f2='3*rectpuls(t-0.5,3)';
%figure
(1)
%CSCONV(f1,-2,2,f2,-1,2)
%figue
(1)
%t=-3:
0.005:
5;
t1_s=-2;
t2_s=2;
t1_e=0;
t2_e=4;
t_s=t1_s+t2_s;
t_e=t1_e+t2_e;
t0=min([t1_s,t2_s,t_s])-1;
t1=max([t1_e,t2_e,t_e])+1;
dt=0.005;
t=t0:
dt:
t1;
%f1=2*rectpuls(t+1.5)+2*rectpuls(t-1.5);%%%%
%f2=2*rectpuls(t-2,4);
f1=2*rectpuls(t,2);
f2=t.*rectpuls(t,4);
实验结果及分析
L=length(t);
tp=[2*t
(1):
dt:
2*t(L)];
fl=eval('f1');f2=eval('f2');
y=dt*conv(fl,f2);
y_max=max(y);y_min=min(y);
dy=(y_max-y_min)/10;
f1_max=max(f1);f1_min=min(f1);df1=(f1_max-f1_min)/10;
f2_max=max(f2);f2_min=min(f2);df2=(f2_max-f2_min)/10;
subplot(3,1,1);
plot(t,fl,'linewidth',2);
title('信号f1(t)的波形','color','b','FontSize',8)
axis([t
(1),t(L),f1_min-df1,f1_max+df1]);
grid;
set(gca,'Fontsize',8)
subplot(3,1,2);
plot(t,f2,'linewidth',2);
title('信号f2(t)的波形','color','b','Fontsize',8)
axis([t
(1),t(L),f2_min-df1,f2_max+df1]);
grid;
set(gca,'FontSize',8)
subplot(3,1,3);
%plot(tp,y,'1inewidth',2);
plot(tp,y);
title('卷积f(t)=fl*f2的波形','color','b','FontSize',8)
ify_min>=0
y0=(y_max-y_min)/2;
else
y0=0;
end
axis([t
(1),t(L),y_min-dy,y_max+dy]);
grid;
set(gca,'Ytick',[y_min,y0,y_max],'FontSize',8);
实验结果及分析
2、给定x(n)=nR16(n),h(n)=R8(n),求x和h卷积y,并用函数stem画出x、h和y的图形。
实验结果及分析
3、用Matlab在时域中编程求解y′(t)+y(t)=f(t),f(t)=exp(-3t)ε(t)的冲激响应、阶跃响应及零状态响应。
在simulink仿真环境下,设计系统框图,分析系统的冲激响应、阶跃响应。
程序
a=[11];
b=[1];
p=0.5;
t=0:
p:
5;
x=exp(-3*t);
subplot(311)
impulse(b,a,0:
p:
5);
title('冲激响应');
subplot(312)
step(b,a,0:
p:
5);
title('阶跃响应');
subplot(313)
lsim(b,a,x,t);
title('零状态响应');
结果