MATLAB实验.docx

上传人:b****4 文档编号:5541141 上传时间:2023-05-08 格式:DOCX 页数:27 大小:212.09KB
下载 相关 举报
MATLAB实验.docx_第1页
第1页 / 共27页
MATLAB实验.docx_第2页
第2页 / 共27页
MATLAB实验.docx_第3页
第3页 / 共27页
MATLAB实验.docx_第4页
第4页 / 共27页
MATLAB实验.docx_第5页
第5页 / 共27页
MATLAB实验.docx_第6页
第6页 / 共27页
MATLAB实验.docx_第7页
第7页 / 共27页
MATLAB实验.docx_第8页
第8页 / 共27页
MATLAB实验.docx_第9页
第9页 / 共27页
MATLAB实验.docx_第10页
第10页 / 共27页
MATLAB实验.docx_第11页
第11页 / 共27页
MATLAB实验.docx_第12页
第12页 / 共27页
MATLAB实验.docx_第13页
第13页 / 共27页
MATLAB实验.docx_第14页
第14页 / 共27页
MATLAB实验.docx_第15页
第15页 / 共27页
MATLAB实验.docx_第16页
第16页 / 共27页
MATLAB实验.docx_第17页
第17页 / 共27页
MATLAB实验.docx_第18页
第18页 / 共27页
MATLAB实验.docx_第19页
第19页 / 共27页
MATLAB实验.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB实验.docx

《MATLAB实验.docx》由会员分享,可在线阅读,更多相关《MATLAB实验.docx(27页珍藏版)》请在冰点文库上搜索。

MATLAB实验.docx

MATLAB实验

实验一MATLAB基本运算

(五)矩阵的运算

运算符:

+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、’(转置)等;

常用函数:

det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref(化矩阵为行最简形)

例5:

>>A=[20–1;132];B=[17–1;423;201];

>>M=A*B%矩阵A与B按矩阵运算相乘

>>det_B=det(B)%矩阵A的行列式

>>rank_A=rank(A)%矩阵A的秩

>>inv_B=inv(B)%矩阵B的逆矩阵

>>[V,D]=eig(B)%矩阵B的特征值矩阵V与特征向量构成的矩阵D

>>X=A/B%A/B=A*B-1,即XB=A,求X

>>Y=B\A%B\A=B-1*A,即BY=A,求Y

(六)上机练习

1.练习数据和符号的输入方式,将前面的命令在命令窗口中执行通过;

2.输入A=[715;256;315],B=[111;222;333],在命令窗口中执行下列表达式,掌握其含义:

A(2,3)A(:

2)A(3,:

)A(:

1:

2:

3)A(:

3).*B(:

2)A(:

3)*B(2,:

)A*BA.*BA^2A.^2B/AB./A

3.输入C=1:

2:

20,则C(i)表示什么?

其中i=1,2,3,…,10;

>>c=1:

2:

20

>>i=1:

10

>>c(i)

4.查找已创建变量的信息,删除无用的变量;

5.创建如下变量:

在0-3均匀的产生10个点值,形成10维向量>>A=linspace(0,3,10))

3*3阶单位距阵>>B=eye(3),随机距阵:

>>randn(3,3),魔方距阵>>magic(3),全0距阵>>zeros(3,3),全1距阵>>E=ones(3,3),

6求方程组的解

>>A=[122;212;345];

B=[256];

x=A/B

x=

0.3692

0.3231

0.8615

实验二MATLAB程序设计 

 三、实验内容:

  1、熟悉MATLAB程序编辑与设计环境

2、用for循环语句实现求1~100的和。

>>sum=0;

fori=1:

100

sum=sum+i;

end

>>sum

 3、用for循环语句实现编写一个求n阶乘的函数文件。

functiony=a(n)

y=1;

fori=1:

n

y=y*i;

end

 4、 利用for循环求1!

+2!

+3!

+ … +5!

的值

>>sum=0;y=1;

fori=1:

5

y=y*i;

sum=sum+y;

end

>>sum

sum=

153

>>

 5、已知一维数组A=[2,4,5,8,10],B=[4,6,9,3,4],用for循环语句实现

求和函数可用sum()。

>>A=[245810];

B=[46934];

sum=0;

fori=1:

5

C(i)=(A(i)*B(5-i+1));

sum=sum+C(i);

end

>>sum

sum=

153

>>

6、编写程序,计算1+3+5+7+…+(2n+1)的值(用input语句输入n值)。

>>sum=0;

n=input('Pleaseinputanumber:

');

t=2*n+1;

fori=1:

2:

t

sum=sum+i;

end

四运行下列参考例题程序,观察运行结果:

1.用for循环计算100!

解:

s=0;

p=1;

form=1:

100

s=s+m;

p=p*m;

end

disp(['100!

=',num2str(p)])

disp(['sigma(1-100)=',num2str(s)])

2.编程计算函数y=|x|+|x-2|,x从屏幕输入

解:

x=input('x=')

ifx<0

y=-x-(x+2);

elseif0

y=2;

elsey=2*x-2;

end

disp(['y=',num2str(y)])

3.分别用for循环和while循环求1000以内所有奇数之和。

解:

方法一用for循环

s=0;

form=1:

2:

999

s=s+m;

end

disp(['s=',num2str(s)])

方法二用while循环

s=0;

m=1;

whilem<1000

s=s+m;

m=m+2;

end

disp(['s=',num2str(s)]),

4.随机产生0~100之间的20个数,求其中最大数和最小数。

要求:

方法1:

采用循环结构实现

方法2:

调用MATLAB的max函数、min函数来实现。

方法二:

用max、min函数

A=randint(1,20,[0,100])

a=max(A);

b=min(A);

disp(['max=',num2str(a)])

disp(['min=',num2str(b)])

 

5.从屏幕输入两个正整数,求它们的最小公倍数。

法二:

直接调用函数

x=input('x=');

y=input('y=');

k=lcm(x,y);

disp(['最小公倍数是',num2str(k)]);

实验三 MATLAB的图形绘制

三、实验内容

 

(一)二维曲线绘图基本指令演示。

plot(t), plot(Y), plot(Y,t) ,以观察产生图形的不同。

 

t=(0:

pi/50:

2*pi)'; 

 k=0.4:

0.1:

1; 

 Y=cos(t)*k; 

 plot(t,Y)

(二)用图形表示连续调制波形Y=sin(t)sin(9t) 及其包络线。

 t=(0:

pi/100:

pi)'; 

 y1=sin(t)*[1,-1];  

y2=sin(t).*sin(9*t); 

 t3=pi*(0:

9)/9;  

y3=sin(t3).*sin(9*t3);

plot(t,y1,'r:

',t,y2,'b',t3,y3,'bo') 

 axis([0,pi,-1,1]) 

(三)在一个图形窗口绘制正弦和余弦曲线,要求给图形加标题“正弦和余弦曲线”,

X轴Y轴分别标注为“时间t”和“正弦、余弦”,在图形的某个位置标注“sin(t)”“cos(t)”,并加图例,显示网格,坐标为正方形坐标系。

>>t=0:

pi/100:

2*pi;

y1=sin(t);y2=cos(t);

plot(t,y1,'r-',t,y2,'k--');

legend('sin(t)','cos(t)');

axissquare;%设图形为正方形

gridon

title('正弦和余弦曲线')

text(1,cos

(1),'\leftarrowcos(t)')%左箭头

text(2.8,sin(2.8),'\leftarrowsin(t)')

xlabel('时间t');ylabel('正弦、和余弦')

 (四)绘制向量x=[1 3 0.5 2.5 2]的饼形图,并把3对应的部分分离出来。

x=[130.52.52];

pie(x,[01000])

 (五)绘制参数方程x=t,y=sin(t),z=cos(t)在t=[0 7]区间的三维曲线。

>>t=0:

0.01:

7;

x=t;

y=sin(t);

z=cos(t);

plot3(x,y,z)

gridon

(六)用hold on命令在同一个窗口绘制曲线y=sin(t),y1=sin(t+0.25) ,y2=sin(t+0.5),其中t=[0 10]

>>t=0:

pi/100:

10;

y=sin(t);

plot(y)

holdon

y1=sin(t+0.25);

plot(y1)

holdon

y2=sin(t+0.5);

plot(y2)

holdon

(七)观察各种轴控制指令的影响。

演示采用长轴为3.25,短轴为1.15的椭圆。

注意:

采用多子图。

 参考程序:

t=0:

2*pi/99:

2*pi; 

 x=1.15*cos(t);y=3.25*sin(t); 

 subplot(2,3,1),plot(x,y),axis normal,grid on, 

 title('Normal and Grid on') 

 subplot(2,3,2),plot(x,y),axis equal,grid on,title('Equal') 

 subplot(2,3,3),plot(x,y),axis square,grid on,title('Square') 

 subplot(2,3,4),plot(x,y),axis image,box off,title('Image and Box off') 

 subplot(2,3,5),plot(x,y),axis image fill,box off 

 title('Image and Fill') 

 subplot(2,3,6),plot(x,y),axis tight,box off,title('Tight')

实验四MATLAB在《信号与系统》中的应用

二、实验内容

1.基本信号的表示及可视化

(1)在MATLAB命令窗口输入funtool,在弹出的figureNo.3

产生以下信号波形:

3sin(x),5exp(-x),sin(x)/x,1-2abs(x)/a,sqrt(a*x)(a=2)

(2)产生50hz的正弦波的程序

t=0:

0.001:

50;

y=sin(2*pi*50*t);

plot(t(1:

50),y(1:

50))

title('sin')

或者>>t=0:

0.02/100:

0.04;

plot(t,sin(100*pi*t))

(3)产生加入随机噪声的正弦波:

t=0:

0001:

50;

y=sin(2*pi*50*t);

s=y+randn(size(t));

plot(t(1:

50),s(1:

50))

(4)产生周期方波的的程序:

(f=30hz)

t=0:

.0001:

.0625;

y=SQUARE(2*pi*30*t);

plot(t,y)

(5)产生周期锯齿波

t=0:

0.001:

0.25;

y=sawtooth(2*pi*30*t);

plot(t,y)

axis([00.2-11])

2.试用MATALB绘制两正弦序列

的时域波形,观察它们的周期性,并验证是否与理论分析结果相符。

(提示:

并非所有的离散时间正弦序列信号都是周期的,不同于连续时间正弦信号)

3、用MATLAB画出下图中的信号的卷积波形。

(a)

 

(b)

 

 

解:

(1)参考程序:

dt=0.01;

t=-4:

dt:

4;

L=length(t);

tp=[2*t

(1):

dt:

2*t(L)];

f1=2*rectpuls(t,2);

f2=t.*rectpuls(t,4);

y=dt*conv(f1,f2);

subplot(3,1,1),plot(t,f1,'linewidth',2),ylabel('f1(t)');

axis([t

(1)t(L)-48]);grid,

subplot(3,1,2),plot(t,f2,'linewidth',2),ylabel('f2(t)');

axis([t

(1)t(L)-48]);grid

subplot(3,1,3),plot(tp,y,'linewidth',2),ylabel('y(t)');

axis([t

(1)t(L)-48]);grid

%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);

 

%用MATLAB计算连续信号的卷积。

%

dt=0.01;

t=-1:

dt:

5;

L=length(t);

tp=[2*t

(1):

dt:

2*t(L)];

f1=rectpuls(t-0.5);

f2=0.5*rectpuls(t-2,2);

y=dt*conv(f1,f2);

subplot(3,1,1),plot(t,f1,'linewidth',2),ylabel('f1(t)');

axis([t

(1)t(L)-0.21.2]);grid,

subplot(3,1,2),plot(t,f2,'linewidth',2),ylabel('f2(t)');

axis([t

(1)t(L)-0.21.2]);grid

subplot(3,1,3),plot(tp,y,'linewidth',2),ylabel('y(t)');

axis([t

(1)t(L)-0.21]);grid

%用MATLAB计算连续信号的卷积。

dt=0.01;

t=-2:

dt:

4;

L=length(t);

tp=[2*t

(1):

dt:

2*t(L)];

f1=2*rectpuls(t-0.5);

f2=2*tripuls(t-1,2,1);

y=dt*conv(f1,f2);

subplot(3,1,1),plot(t,f1,'linewidth',2),ylabel('f1(t)');

axis([t

(1)t(L)-0.52.5]);grid,

subplot(3,1,2),plot(t,f2,'linewidth',2),ylabel('f2(t)');

axis([t

(1)t(L)-0.52.5]);grid

subplot(3,1,3),plot(tp,y,'linewidth',2),ylabel('y(t)');

axis([t

(1)t(L)-0.53.5]);grid

4、

(1)用“拉普拉斯变换和系统函数的曲面图演示”程序,观察零极点三维图,加深对系统零极点的理解。

考虑以下系统函数:

(a)

;(b)

;(c)

(2)用“连续系统零极点和冲激响应的关系”程序,观察零极点对冲激响应的影响,加深对系统稳定性的理解。

画出下列系统的零极点分布图和冲激响应,确定系统的稳定性。

(a)

;(b)

(c)

;(d)

(e)

;(f)

参考程序

t=linspace(0,15,200);

a1=[1,0,1];

b1=[1,2,1];

figure

(1),

subplot(221)

pzmap(b1,a1),title('零极点分布')

subplot(222)

impulse(b1,a1,t),title('冲激响应')

p2=[-3,-2,1];

a2=poly(p2);

b2=[1,0,0];

subplot(223)

pzmap(b2,a2),title('零极点分布')

subplot(224)

impulse(b2,a2,t),title('冲激响应')

t=linspace(0,15,200);

a3=[1,1,0];

b3=[1,-2];

figure

(2)

subplot(221)

pzmap(b3,a3),title('零极点分布')

subplot(222)

impulse(b3,a3,t),title('冲激响应')

p4=[0,-2,j,-j];

a4=poly(p4);%ploly多项式系数的求解

b4=[2,0,8];

subplot(223)

pzmap(b4,a4),title('零极点分布')

subplot(224)

impulse(b4,a4,t),title('冲激响应')

a5=[1,4,0,0];

b5=[16];

figure(3)

subplot(221)

pzmap(b5,a5),title('零极点分布')

subplot(222)

impulse(b5,a5,t),title('冲激响应')

p6=[0,j,-j];

a6=poly(p6);

b6=[2,2];

subplot(223)

pzmap(b6,a6),title('零极点分布')

subplot(224)

impulse(b6,a6,t),title('冲激响应')

说明:

在s域,系统函数H(s)的极点位于s左半平面,系统是稳定的。

极点在虚轴上有单极点,系统是临界稳定。

极点在s右半平面或在虚轴上有重极点,系统不稳定。

故(a)临界稳定、(b)不稳定、(c)稳定、(d)临界稳定、(e)不稳定、(f)临界稳定

5、下图所示为

的零极点分布图,试判别它们是低通、高通、带通、带阻中哪一种网络?

零点和极点的数据自己设定。

 

参考程序

w=linspace(0,200,200);

p1=[-10-j*25,-10+j*25];

a1=poly(p1);

b1=[1,0];

figure

(1),pzmap(b1,a1),title('零极点分布')

figure

(2),freqs(b1,a1,w),title('频率响应')

p2=[-20-j*40,-20+j*40];

a2=poly(p2);

z1=[j*50,-j*50];

b2=poly(z1);

figure(3),pzmap(b2,a2),title('零极点分布')

figure(4),freqs(b2,a2,w),title('频率响应')

p3=[-10-j*20,-10+j*20];

a3=poly(p3);

b3=[1,0,0];

figure(5),pzmap(b3,a3),title('零极点分布')

figure(6),freqs(b3,a3),title('频率响应')

p4=[j*40,-j*40];

a4=poly(p4);

z4=[-j*50,-j*50];

b4=poly(z4);

figure(7),pzmap(b4,a4),title('零极点分布')

figure(8),freqs(b4,a4),title('频率响应')

6.已知描述某连续系统的微分方程为:

,试用MATLAB:

(1)绘出该系统在0~30s范围内,并以时间间隔0.01s取样的冲激响应和阶跃响应的时域波形;

(2)求出系统在0~30s范围内,并以时间间隔0.01s取样的冲激响应和阶跃响应的数值解。

7.已知某一连续时间信号为

,试绘出它的时域波形响应的频谱图。

实验五MATLAB在《数字信号处理》课程中的应用

(4学时)

1.产生正弦序列。

2判断下述各序列是否为周期的,如果是周期的,试确定其周期:

(a)f(k)=sin(

)-2cos(

);

(b)f(k)=cos(

解:

(1)程序:

figure

(1)

k=-35:

35;

f1=sin(k*pi/4)-2*cos(k*pi/6);

subplot(211)

stem(k,f1)

subplot(212)

f2=cos(3*k/7-pi/8);

stem(k,f2)

3已知离散系统的系统函数为

,绘出其零、极点分布图;求系统的频率响应和单位脉冲响应,试编程。

>>b=[1-0.80];

a=[1-10.25];

figure

(1)

zplane(b,a)

title('零极点分布图')

delta=[1zeros(1,63)];

h=impz(b,a,64);

figure

(2)

stem(h)

title('单位脉冲响应')

figure(3)

[hf]=freqz(b,a,256,1);

hr=abs(h);

hph=angle(h)*180/pi;

subplot(2,1,1)

plot(f,hr);

xlabel('归一化频率')

ylabel('幅度')

title('频率响应')

subplot(2,1,2)

plot(f,hph);

xlabel('归一化频率')

ylabel('相位')

title('相频响应')

4已知序列

求两序列的卷积。

>>a=[1234];

b=[1112];

x=conv(a,b)

stem(x);

title('线性卷积')

给定两个序列x(n)=[2,1,1,2],h(n)=[1,-1,-1,1]。

首先直接在时域计算两者的线性卷积;其次用FFT快速计算二者的线性卷积,验证结果。

>>x=[2,1,1,2];

h=[1-1-11];

XK=fft(x,N);

HK=fft(h,N);

YK=XK.*HK;yn=ifft(YK,N);

ifall(imag(x)==0)&(all(imag(h)==0))

yn=real(yn);

end

y=conv(x,h);

n=0:

N-1;

subplot(2,1,1);stem(y);

ylabel('时域计算');

subplot(2,1,2);stem(yn,'.');

ylabel('FFT快速');

5已知序列

分别求两序列4点、8点的DFT。

>>a=[1234];

b=[1112];

y1=conv(b,a);

subplot(2,1,1)

stem(y1);

x1=fft(b,7);

x2=fft(b,7);

x=x1.*x2;

x=ifft(x)

subplot(2,1,2)

stem(x);

title('DFT')

6用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。

设计指标参数为:

在通带截止频率为0.2π,最大衰减为1dB;阻带截止频率为0.3π,最小衰减为15dB。

画出幅频响应特性曲线。

T=1;Fs=1/T;wpz=0.2;wsz=0.3;wp=2*tan(wpz*pi/2);ws=2*tan(wsz*pi/2);rp=1;rs=15;%预畸变校正转换指标

[N,wc]=buttord(wp,ws,rp,rs,'s');%设计过渡模拟滤波器

[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs);%用双线性变换法转换成数字滤波器

fk=0:

1/512:

1;

wk=2*pi*fk;

Hk=freqs(B,A,wk);

figure

(1);

subplot(2,1,1);

plot(fk,20*log10(abs(Hk)));

gridon;

title('模拟滤波器幅值响应曲线');

xlabel('\omega/\pi');

ylabel('幅度(dB)');

axis([0,1,-100,5]);

[Nd,wdc]=buttord(wpz,wsz,rp,rs);%调用buttord和butter直接设计数字滤波器[Bz,Az]=butter(N,wdc);wk=0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2