matlab实验报告.docx

上传人:b****8 文档编号:27845280 上传时间:2023-07-05 格式:DOCX 页数:22 大小:1.09MB
下载 相关 举报
matlab实验报告.docx_第1页
第1页 / 共22页
matlab实验报告.docx_第2页
第2页 / 共22页
matlab实验报告.docx_第3页
第3页 / 共22页
matlab实验报告.docx_第4页
第4页 / 共22页
matlab实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

matlab实验报告.docx

《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

matlab实验报告.docx

matlab实验报告

《Matlab编程及系统仿真》结业报告

 

专业年级:

2011级通信工程

学号:

110143031118

姓名:

许志远

指导教师:

刘芳

 

2013年1月11日

目 录

 

1、实验一········································

二、实验二········································

三、实验三········································

四、实验四········································

五、实验五········································

六、实验六········································

七、实验七········································

八、实验八········································

九、实验九········································

十、实验十········································

十一、实验十一····································

十二、实验十二····································

1、用蓝色虚线绘制星型线

的图形.

源代码:

theta=0:

0.01:

2*pi;%设置中间变量及步长

x=2*cos(theta).^3;

y=2*sin(theta).^3;

plot(x,y,'b--')%“b”表示运用蓝色线,“--”表示做虚线

程序截图:

2、编写一个函数,使其能产生如下分段函数:

,并调用此函数,绘制x在[0,9],y在[0,1.5]上的f(x)的曲线,要求给x,y轴标注,并指出最大值的位置,写出完整的程序。

源代码:

x=0:

0.1:

9;

y=(0.5*x).*(x>=0&x<=2)+(1.5-0.25*x).*(x>2&x<=6)+(0.5).*(x>6&x<=9);%Y与X的关系式

plot(x,y,'-red')%画出X、Y图像

axis([0,9,0,1.5])%标注X、Y的范围

text(2,1,'(2,1)');%标出最高点

title('分段函数');%标注函数名称

xlabel('x');%标X轴

ylabel('y');%标Y轴

legend('y')

程序截图:

3、求下面两个信号的卷积。

源代码:

>>symsx

>>u=exp(-2*x)

u=

exp(-2*x)

>>v=sin(x)

v=

sin(x)

>>r1=int(u*v,0,+inf)

r1=

1/5

程序截图:

 

4、从键盘输入一串字符,找出该字符串中所有的数字,并保存成数值数组Digital。

源代码:

>>f='abc123def';

>>index=find(f>='0'&f<='9')

index=

456

>>A=f(index);

>>fory=1:

length(A)

fory=1:

length(A)Digital=str2num(A);

end

Digital

end

Digital=

123

Digital=

123

Digital=

123

程序截图:

5、将一个屏幕分成4幅,在左上福和右下幅分别绘制下列函数的图形:

(1)

,绘制x在[-pi/2,pi/2]的红色曲线图;

(2)

,绘制该函数,蓝色。

源代码:

symsxy%定义X、Y

f1=(abs(sin(x)))^0.5;%F1与X之间的函数关系

f4=(x^2/3^2+y^2/4^2);%F4与X、Y之间的函数关系

subplot(2,2,1)%将图像分为2*2的区域并在第一个区域画图

h1=ezplot(f1,[-pi/2,pi/2])%画图并标注X的范围

set(h1,'Color','red')%将图像默认的颜色改为红色

title('f1=(abs(sin(x)))^0.5')%标注函数名称

subplot(2,2,2)

subplot(2,2,3)

subplot(2,2,4)%在第四个区域画图

h4=ezplot(f4-1,[-3,3,-4,4])%画图并标注X、Y的范围

set(h4,'Color','blue')%将图像的默认颜色转化为题目规定的颜色

title('f4=(x^2/3^2+y^2/4^2)')%标注函数名称

程序截图:

6.以构架数组表示3个人的基本信息,构架数组的每一个构架表示一个人的信息。

三个人的基本信息如下:

姓名(Name)

Xujia

wanglibo

huangweiguo

年龄(Age)

20

21

20

成绩(Score)

85

100

52

成绩按如下划分区域:

满分(100),优秀(90-99),良好(80-89),及格(60-79),%不及格(<60),请标出每个学生的成绩等级。

源代码:

fori=1:

10

a(i)=89+i;

b(i)=79+i;

c(i)=69+i;

d(i)=59+i;

end

c=[d,c];%及格范围60~79

Name={'xujia20','wanglibo21','huangweiguo22'};

%元胞数组

Mark={100,85,52,};

Rank=cell(1,3);

%创建一个1*3的构架数组S,它有三个域。

S=struct('Name',Name,'Marks',Mark,'Rank',Rank);

fori=1:

3

switchS(i).Marks

case100%得分为100时

S(i).Rank='满分';%列为'满分'等级

casenum2cell(a)%得分在90和99之间

S(i).Rank='优秀';%列为'优秀'等级

casenum2cell(b)%得分在80和89之间

S(i).Rank='良好';%列为'良好'等级

casenum2cell(c)%得分在60和79之间

S(i).Rank='及格';%列为'及格'等级

otherwise%得分低于60

S(i).Rank='不及格';%列为'不及格'等级

end

end

%将学生姓名,得分,登记等信息打印出来

disp(['学生姓名','年龄','得分','等级']);disp('')

fori=1:

3;

disp([S(i).Name,blanks(6),num2str(S(i).Marks),S(i).Rank]);

end

结果:

学生姓名年龄得分等级

xujia20100满分

wanglibo2185良好

huangweiguo2252不及格

 

程序截图:

 

7.创建脚本实现随机数序列的各元素由大到小排列,其中随机数服从U(-5,9)的均匀分布,并且序列长度为10。

.

源代码:

a=14*rand(1,10)-5;

fori=1:

10

forj=1:

10-i

ifa(j)

t=a(j);

a(j)=a(j+1);

a(j+1)=t;

end

end

end;

a

程序截图:

8.已知ln(1+x)的泰勒展开式为:

,要求从键盘输入x的取值,由展开式计算ln(1+x)的值,迭代结束的条件为:

要加入的下一项系数小于默认的精度eps。

要求程序显示系数k以及展开式的结果。

(x<1)

源代码:

functions=m6

x=input('请输入一个介于0到1的数');

a=1;

b=1;

s=0;

fori=1:

10000000

ifabs(b./i)

disp(i);

break;

end

b=b.*x;

s=s+a.*b/i;

a=-a;

end

程序截图:

 

9、产生40个服从正态分布N(-1,4)的随机数,计算它们的最大值,最小值,平均值,中间值,元素和,标准差和方差,并按照绝对值大小进行排序,同时标出原来的序列号。

源代码:

>>a=2*rand(1,40)-1;

>>disp(['最大值为:

',num2str(max(a))]);

disp(['最小值为:

',num2str(min(a))]);

disp(['平均值为:

',num2str(mean(a))]);

disp(['中间值为:

',num2str(median(a))]);

disp(['所有数字和为:

',num2str(sum(a))]);

disp(['标准差为:

',num2str(std(a))]);

disp(['方差为:

',num2str(var(a))]);

[a_numbera_sort]=sort(abs(a));

disp(['绝对值大小的顺序:

',num2str(a(a_sort))]);

disp(['原来的序列号为:

',num2str(a_sort)]);

结果:

中间值为:

0.11464

所有数字和为:

3.6234

标准差为:

0.45747

方差为:

0.20928

绝对值大小的顺序:

0.0056258-0.00689510.0681580.0833480.093142

-0.110240.13614-0.142220.18713-0.24104

0.24262-0.24325-0.259170.28982-0.31606

-0.317610.320460.362550.36445-0.38142

0.38913-0.39077-0.394470.39580.40548

0.41894-0.420550.45423-0.61314-0.62069

0.635950.643260.663590.676240.67699

-0.698250.707310.720020.79954-0.96072

原来的序列号为:

62130143738348204

4017352427292631232

399131636728311110

25235133151918222

 

程序截图:

10、在一个坐标轴中绘制图形y1=sin(x)和图形y2=e(x-1)^2,要求

(1)对坐标轴进行标注,x轴名称为“x”,y轴名称为“y1和y2”;

(2)用legend函数在图形窗口的左上角区分两个图形,图形1的曲线为红色,点划线,图形二的曲线为蓝色,实线。

源代码:

>>x1=0:

0.01:

2*pi;

y1=sin(x1);

plot(x1,y1,'r-.')

holdon

x2=0.1:

0.01:

2;

y2=exp((x2-1).^2);

plot(x2,y2,'b-')

xlabel('x');

ylabel('y1y2');

legend('y1','y2',2)

程序截图:

11.现有table.txt文件存放某班级n个学生的成绩(没有相同的成绩且n为奇数),打开该文件,找出其中间值,并将其放在所有成绩构成的数组的中间位置,其它成绩的相对位置不变。

源代码:

clear;

clc;

b=input('请输入成绩的个数:

');

fori=1:

b

a(i)=input('请输入成绩:

');

end

fid=fopen('table.txt','w');

count=fwrite(fid,a,'int32');

closestatus=fclose(fid);

clear;

clc;

fid=fopen('table.txt','r');

a=fread(fid,'int32');

d=a';

disp(['原来的数字顺序是:

',num2str(d)]);

b=numel(a);

disp(['thenumber=',num2str(b)]);

a_mediian=median(a)

c=find(a_mediian==a);

e=(b+1)/2;

ifc

forj=c+1:

e

t=d(b);

i=b;

whilei>1

d(i)=d(i-1);

i=i-1;

end

d

(1)=t;

end

elseifc>e

forj=e+1:

c

t=d

(1);

fori=1:

b-1

d(i)=d(i+1);

end

d(b)=t;

end

else

end

disp(['插入后的数字顺序:

',num2str(d)]);

 

程序截图:

 

12、现有table.txt文件存放某班级15个学生的成绩,打开该文件,将其中90分以上的成绩放在矩阵A中,80~89放在B中,70~79放在C中,60~69放在D中,60分以下放在E中,统计各矩阵中的学生人数,并显示,统计所有学生的最高分和最低分,并显示,计算及格率和不及格率,并显示。

源代码:

clear;

clc;

fid=fopen('table.txt','r');%打开第11题的table.txt的数据

a=fread(fid,'int32');

closestatus=fclose(fid);%关闭文件

b=a';

disp(['第11题数据为:

',num2str(b)]);

c=numel(b)

m=0;n=0;k=0;j=0;l=0;

fori=1:

c

ifb(i)>=90

m=m+1;

A(m)=b(i);

elseifb(i)>=80&b(i)<=89

n=n+1;

B(n)=b(i);

elseifb(i)>=70&b(i)<=79

k=k+1;

C(k)=b(i);

elseifb(i)>=60&b(i)<=69

j=j+1;

D(j)=b(i);

else

l=l+1;

E(l)=b(i);

end

end

disp(['90分以上的有:

',num2str(numel(A))]);

disp(['80分以上的有:

',num2str(numel(B))]);

disp(['70分以上的有:

',num2str(numel(C))]);

disp(['60分以上的有:

',num2str(numel(D))]);

disp(['不及格的有:

',num2str(numel(E))]);

disp(['最高分有:

',num2str(numel(b))]);

disp(['最低分有:

',num2str(numel(b))]);

e=numel(E);

f=e/c;

disp(['不及格率:

',num2str(f)]);

 

程序截图:

对《Matlab实用教程》课程的学习及本次实验的感想:

在学习Matlab时,不免要和之前学过的C语言进行比较。

相较而言,Matlab的优点还是有很多的,最大的优点是,它的程序语言更贴近于生活语言,所以在编写代码时,比C语言要简洁的多。

在学习本课程的过程中,我也遇到了刘芳老师之前谁说过的情况:

把matlab和C语言在一定程度上有一些混淆。

根本原因在于之前的C语言学的不是太深,也不是很差。

因此,深入理解matlab是很重要的。

本次实验中,题目难度不一,最后两题用到了文件的存储与读取,之前的C语言课程设计也用到了文件的相关知识,总的来说,对我还是有一定难度的。

同时,实验题中,有很多细节的东西,很多标示符需要精确记忆,这也是matlab的特色,通过实验,巩固了所学知识,也拓展了很多未深入讲解的知识。

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1