实验一 Matlab基础知识
一、 实验目的:
1. 熟悉启动和退出Matlab的方法。
2. 熟悉Matlab命令窗口的组成。
3. 掌握建立矩阵的方法。
4. 掌握Matlab各种表达式的书写规则以及常用函数的使用。
二、 实验内容:
1. 求[100,999]之间能被21整除的数的个数。(rem)
2. 建立一个字符串向量,删除其中的大写字母。(find)
3. 输入矩阵,并找出其中大于或等于5的元素。(find)
4. 不采用循环的形式求出和式的数值解。(sum)
三、 实验步骤:
l 求[100,199]之间能被21整除的数的个数。(rem)
1. 开始→程序→Matlab
2. 输入命令:
»m=100:999;
»p=rem(m,21);
»q=sum(p==0)
ans=43
l 建立一个字符串向量,删除其中的大写字母。(find)
1. 输入命令:
»k=input('’,’s’);
Eie48458DHUEI4778
»f=find(k>=’A’&k<=’Z’);
f=9 10 11 12 13
»k(f)=[ ]
K=eie484584778
l 输入矩阵,并找出其中大于或等于5的元素。(find)
1. 输入命令:
»h=[4 8 10;3 6 9; 5 7 3];
»[i,j]=find(h>=5)
i=3 j=1
1 2
2 2
3 2
1 3
2 3
l 不采用循环的形式求出和式的数值解。(sum)
1. 输入命令:
»w=1:63;
»q=sum(2.^w)
q=1.8447e+019
实验二 Matlab基本程序
一、 实验目的:
1. 熟悉Matlab的环境与工作空间。
2. 熟悉M文件与M函数的编写与应用。
3. 熟悉Matlab的控制语句。
4. 掌握if,switch,for等语句的使用。
二、 实验内容:
1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n值以及对应的y值。
2. 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。
3. 编写M函数文件表示函数 ,并分别求x=12和56时的函数值。
4. 编程求分段函数,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y。
三、 实验步骤:
l 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n值以及对应的y值。
1. 打开Matlab,新建M文件
2. 输入命令:
y=0;i=1
while 1
f=1/(2i-1);
y=y+f
if y>5
break;
end
i=i+1
end
n=i-1
y=y-f
3. 保存,命名为eg1,并在命令窗口输入eg1:
»eg1
n=3094
y=4.9999
l 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。
1. 打开Matlab,新建M文件
2. 输入命令:
C=input(‘请输入成绩’);
for i=1:length(c)
if c(i)>=90& c(i)<=100
grade(i)=’优’;
elseif c(i)>=80& c(i)<=89
grade(i)=’良’;
elseif c(i)>=70& c(i)<=79
grade(i)=’中’;
elseif c(i)>=60& c(i)<=69
grade(i)=’及’;
else
grade(i)=’不’;
end
end
grade
3. 保存,命名为eg2,并在命令窗口输入
»eg2
请输入成绩[100,59,60,79,70,69,80,59,99]
grade=
优不及中中及良不优
l 编写M函数文件表示函数 ,并分别求x=12和56时的函数值。
1. 打开Matlab,新建M函数文件
2. 输入命令:
function y=hs(x)
y=2*sqrt(x.^2+10)-5
3. 保存,命名为hs,并在命令窗口输入
»hs(12)
y=19.8193
ans=19.8193
l 编程求分段函数,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y。
1. 打开Matlab,新建M函数文件
2. 输入命令:
function y=zhi(x)
for i=1:length(x)
if x(i)<0&x(i)~=-3
y(i)=x(i).^2+x(i)-6;
elseif x(i)>=0&x(i)<5&x(i)~=3&x(i)~2
y(i)=x(i).^2-x(i)-5*x(i)+6;
else y(i)=x(i).^2-x(i)+1;
end
end
y
3. 保存,保存名为zhi,并在命令窗口输入
»x=[-5,-3,1,2,2.5,3,3.5];
»zhi(x)
y=Columns 1 through 6
14.0000 13.0000 2.0000 3.0000 -0.2500 7.0000
Column 7
0.7500
ans=Columns 1 through 6
14.0000 13.0000 2.0000 3.0000 -0.2500 7.0000
Column 7
0.7500
实验三 Matlab的基本绘图命令
一、 实验目的:
1. 熟悉二维、三维绘图函数的基本命令。
2. 熟悉图形修饰与控制的基本方法。
3. 了解特殊图形的绘制。
二、 实验内容:
1. 在同一图形窗口按不同纵坐标绘制200e-0.05x sinx和0.8e-0.5xsin(10x)曲线,要求x的取值范围为[0,20],并加图例注解。
2. 将一个图形窗口分割成四个子窗口,并在四个窗口中分别以条形图,填充图,阶梯图,杆图绘制曲线y=2e-0.5x。
3. 已知t取值范围(0,20π),步长成π/100,x=sint,y=cost,z=tsintcost,绘制三维曲线。
4. 已知:t=-3:0.125:3,x=sin2t, y=cos2t,z=x2+2y2,绘制该函数的四种三维图,坐标轴范围[-1,1,-1,1,0,2] 。
三、 实验步骤:
l 在同一图形窗口按不同纵坐标绘制200e-0.05x sinx和0.8e-0.5xsin(10x)曲线,要求x的取值范围为[0,20],并加图例注解。
1. 打开Matlab文件编辑器,编写程序如下:
x=0:0.01;20;
y1=200.*exp(-0.05x).*sin(x);
y2=(0.8).*exp(-0.5x).*sin(10x);
plot y y(x,y1,x,y2);
legend (‘y1’,’y2’);
2. 运行程序,结果如图所示:
l 将一个图形窗口分割成四个子窗口,并在四个窗口中分别以条形图,填充图,阶梯图,杆图绘制曲线y=2e-0.5x。
1. 打开Matlab文件编辑器,编写程序如下:
x=0:1:10;
y=2.*exp(-0.5*x);
subplot(2,2,1);
bar(x,y,’b’);
xlabel(‘x’);
ylabel(‘y’);
subplot(2,2,2);
fill (x,y,’y’);
xlabel(‘x’);
ylabel(‘y’);
subplot(2,2,3)
stairs(x,y,’m’);
xlabel(‘x’);
ylabel(‘y’);
subplot(2,2,4);
stem(x,y,’c’);
xlabel(‘x’);
ylabel(‘y’);
2. 运行程序,结果如图所示:
l 已知t取值范围(0,20π),步长成π/100,x=sint,y=cost,z=tsintcost,绘制三维曲线。
1. 打开Matlab文件编辑器,程序如下:
t=0:pi/100:20*pi;
x=sin(t);
y=cos(t);
z=t.*sin(t).*cos(t);
plot(x,y,z);
grid on;
2. 运行程序,结果如图所示:
l 已知:t=-3:0.125:3,x=sin2t, y=cos2t,z=x2+2y2,绘制该函数的四种三维图,坐标轴范围[-1,1,-1,1,0,2] 。
1. 打开Matlab文件编辑器,编写程序如下:
t=-3:0.125:3;
x=sin(2*t);
y=cos(2*t);
[x,y]=meshgrid(x,y);
z=x.^2+2*(y.^2);
mesh (x,y,z);
axis([-1,1,-1,1,0,3]);
figure
Mesh(x,y,z);
axis([-1,1,-1,1,0,3]);
figure
surf(x,y,z);
axis([-1,1,-1,1,0,3]);
figure
surf(x,y,z);
axis([-1,1,-1,1,0,3]);
2. 运行程序,结果如图所示:
实验四 MATLAB数值与符号计算
一、 实验目的:
1. 掌握多项式建立表示的方法,及基本多项式运算指令
2. 掌握函数绘图指令及方法
3. 掌握求数值导数、数值积分、代数方程数值求争解的方法。
4. 掌握定义符号对象,求符号函数极限、导数和积分方法。
二、 实验内容:
1. 求多项式x4+8x3-10的根。
2. 求有理式(3x2+6x+9)(x2+2x)的导数。
3. 定义函数myfun: y(1,2)=[200*sin(x)/x, x^2],绘制该函数在x=[-20,20]区间内的图形。
4. 计算: ,其中f(x)=sin(x),f(x)=1/cos(x)。
5. 求:
三、 实验步骤:
l 求多项式x4+8x3-10的根。
1. 打开Matlab,在命令窗口输入:
»p=[1,8,0,0,-10]
»r=root s(p)
2. 运行结果:
r=-8.0194
1.0344
-0.5075+0.9736i
-0.5075-0.9736i
l 求有理式(3x2+6x+9)(x2+2x)的导数。
1. 打开Matlab,在命令窗口输入:
»a=[3,6,9]
»b=[1,2,0]
»w=conu(a,b)
2. 运行结果:
w=
3 12 21 18 0
3. 在命令窗口输入
»k=polyder(w)
4. 运行结果:
k=
12 3 6 42 18
l 定义函数myfun: y(1,2)=[200*sin(x)/x, x^2],绘制该函数在x=[-20,20]区间内的图形。
1. 打开Matlab,在命令窗口输入:
function myfun=f(x);
myfun(1)=200.*sin(x)/x;
myfun(2)=x.^2;
end
2. 保存函数文件
3. 在命令窗口输入:
»plot(‘myfun’)[-20,20]
4. 运行结果如下:
l 计算: ,其中f(x)=sin(x),f(x)=1/cos(x)。
1. 打开Matlab,在命令窗口输入:
»syms x;
»m=1/cos(x);
»int (sin(x),x)
2. 运行结果如下:
ans=
log(1/cos(x))+log(sin(x)+1)
l 求:
1. 打开Matlab,在命令窗口输入:
»syms x y;
»n=log(x+exp(y))/sqrt(x^2+y^2);
»v=limit((limit(n,x,1)),y,0)
2. 运行结果如下:
v=log(2)
l 计算 I= ,其中D为直线y=x2所围部分。
1. 打开Matlab,在命令窗口输入:
»syms x,y;
»f=(1/2)*(2-x-y);
»int((int(f,y,x^2,2-x)),x-2,1)
2. 运行结果如下:
ans=
81/40
实验五 simulink仿真
一、实验目的:
1.熟悉simulink仿真环境
2.能够利用simulink建立仿真框图,完成简单系统的仿真。
二、实验内容:
1. 应用simulink 实现下列系统的仿真,并试试改变信号源后的结果。
2. 利用simulink解二阶微分方程
其中 u(t)为单位阶跃函数
三、实验步骤:
1. 打开Matlab,启动simulink。
2. 新建Model文件:
在simulink库中,sources取出,,,在signal routing中取出,在continuous中取出,在sinks中取出,,。
l 利用simulink解二阶微分方程 其中 u(t)为单位阶跃函数
1. 打开Matlab,启动simulink。
2. 新建Model文件,建立如下系统的仿真
3. 点击仿真按钮,然后双击“scope”,将会出现如下图形,单击保存。
Simulation→configuration paramenters
→sturt time 0.0
Stuk time20.0
Kelative tolerance 1e-7
实验六 MATLAB信号工具箱
一、实验目的:
1、熟悉MATLAB信号处理工具箱。
2、掌握MATLAB中信号的产生函数及信号的基本运算。
二、实验内容:
1、产生一周期为0.05的三角波,宽度值各为0,0.5,1。
2、产生一个3GHZ的高斯单脉冲,采样频率为100GHZ。
3、已知两离散系列,n1=1:5;x1=[1 0.7 0.4 0.1 0];
n2=3:8;x2=[0.1 0.3 0.5 0.7 0.9 1]
三、实验步骤:
l 产生一周期为0.05的三角波,宽度值各为0,0.5,1。
1. 打开Matlab,新建M文件,编写如下程序:
t=0:0.0001:0.1;
m=sawtooth(2*pi*20*t,0);
p=sawtooth(2*pi*20*t,0.5);
m=sawtooth(2*pi*20*t,1);
subplot(3,1,1);
plot(t,m);
xlabel(‘t’);
ylabel(‘m’);
subplot(3,1,2);
plot(t,p);
axis([0,0.2,-1,1]);
xlabel(‘t’);
ylabel(‘p’);
subplot(3,1,3);
plot(t,n);
xlabel(‘t’);
ylabel(‘n’);
2. 运行该程序,结果如下图所示:
l 产生一个3GHZ的高斯单脉冲,采样频率为100GHZ。
1. 打开Matlab,新建M文件,编写程序如下:
a=3eq;
b=100eq;
tc=gmonopuls('cutoff’,a);
t=-3*tc:1/b:3*tc;
y=gmonoplus(t,a);
plot(t,y);
2. 点击保存,运行该程序,如图所示:
l 已知两离散系列,n1=1:5;x1=[1 0.7 0.4 0.1 0];n2=3:8;x2=[0.1 0.3 0.5 0.7 0.9 1]试编程实现两系列的相加与相乘。
1. 打开Matlab,新建M文件,编写如下程序:
n1=1:5;
x1=[1 0.7 0.4 0.1 o];
n2=3:8;
x2=[0.1 0.3 0.5 0.7 0.7 1];
n=1:8;
x10=[x1 zeros(1,8-length(n1))];
axis([1 8 0 1]);
x20=[zeros(1,8-length(n2)),x2];
axis([1 8 0 1]);
x=x10+x20;
y=x10.*x20;
subplot(4,1,1);
stem(n1,x1);
axis([1 8 0 1]);
subplot(4,1,2);
stem(n,x10);
axis([1 8 0 1]);
subplot(4,1,3);
stem(n2,x2);
axis([1 8 0 1]);
subplot(4,1,4);
stem(n,x20);
axis([1 8 0 1]);
figure(2)
subplot(2,1,1);
stem(n,x);
axis([1 8 0 1]);
subplot(2,1,2);
stem(n,y);
sxis([1 8 0 1]);
2. 点击保存,然后运行该程序,结果如图: