MATLAB上机实验报告基础及实例进阶.docx

上传人:b****9 文档编号:26204428 上传时间:2023-06-17 格式:DOCX 页数:42 大小:153.52KB
下载 相关 举报
MATLAB上机实验报告基础及实例进阶.docx_第1页
第1页 / 共42页
MATLAB上机实验报告基础及实例进阶.docx_第2页
第2页 / 共42页
MATLAB上机实验报告基础及实例进阶.docx_第3页
第3页 / 共42页
MATLAB上机实验报告基础及实例进阶.docx_第4页
第4页 / 共42页
MATLAB上机实验报告基础及实例进阶.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

MATLAB上机实验报告基础及实例进阶.docx

《MATLAB上机实验报告基础及实例进阶.docx》由会员分享,可在线阅读,更多相关《MATLAB上机实验报告基础及实例进阶.docx(42页珍藏版)》请在冰豆网上搜索。

MATLAB上机实验报告基础及实例进阶.docx

MATLAB上机实验报告基础及实例进阶

实验1 MATLAB初步

1.举例说明format命令的功能;

功能:

设置显示浮点格式

%n读取一个数字并转换为double

%d读取一个数据并转换为int32

%d8读取一个数据并转换为int8

%d16读取一个数据并转换为int16

%d32读取一个数据并转换为int32

%d64读取一个数据并转换为int64

%u读取一个数据并转换为uint32

%u8读取一个数据并转换为uint8

%u16读取一个数据并转换为uint16

%u32读取一个数据并转换为uint32

%u64读取一个数据并转换为uint64

%f4读取一个数字并转换为double

%f32读取一个数字并转换为float

%f64读取一个数字并转换为double

%s读取一个字符串

%q读取一个可以是双引号括着的字符串

%c读取一个字符,包括空格

%[…]

读取和括号中字符串相匹配的字符。

读取操作在首次遇到不匹配的字符和空格时停止。

例如%[mus]把summer读成summ

%[^…]

读取和括号中字符串不匹配的字符。

读取操作在首次遇到不匹配的字符和空格时停止。

例如%[^mus]把summer读成er

2.说明clc,clf和clear命令的区别;

clc:

清除所有输入和从命令窗口显示输出

clf:

删除从当前图的所有图形对象

clear:

从当前删除所有变量工作空间,释放系统内存。

3.举例说明help命令的功能;

列出所有主要帮助主题在命令窗口。

对应于每个主要帮助主题MATLAB搜索路径上一个文件夹的名字。

4.如何观察和调用历史命令;

通过命令历史窗口执行历史指令:

1)用鼠标左键双击一条指令,即可自动将其发送到命令窗口并立即执行;2)选中一条指令,单击鼠标右键并选择copy菜单,再在命令窗口单击paste按钮即可。

5.如何设置当前路径。

1)选中Matlab快捷启动的图标,鼠标右键菜单选择“属性”;

2)“起始位置”项目后面对应的路径就是启动之后的默认路径,修改成自己期望的路径,然后应用或确定。

 

实验2 矩阵生成与元素标识

1.矩阵的创建

(尽可能用最简单方法);

A=[1300;26130;3523;4923]

B=[151015;20253035;40455055;60657075]

2.生成一个单位矩阵C,其结构与B相同;

>>C=eye(size(B))

C=

1000

0100

0010

0001

3.找出矩阵A中所有大于8的元素位置(行号和列号);

>>[x,y]=find(A>8)

x=

2

4

y=

2

2

4.将矩阵B中大于35且小于65的元素值分别加9;

>>B(find(B>35&B<65))=B(find(B>35&B<65))+9

B=

151015

20253035

49545964

69657075

5.提取矩阵B的主对角组元素。

>>diag(B)

ans=

1

25

50

75

实验3 MATLAB矩阵运算

(1)

1.矩阵的创建

A=[1300;26130;3523;4923]

B=[2-3995;2689;101176;-99-601]

2.矩阵A和矩阵B相乘运算;

>>A*B

ans=

81512332

156393707577

-2612535175

-25146482116

3.求矩阵B的行列式、逆、秩、特征值和特征矢量(说明具体变量名);

行列式:

>>b=det(B)

b=

+05

逆:

>>b1=inv(B)

b1=

秩:

>>b2=rank(B)

b2=

4

特征矢量:

>>b3=eig(B)

b3=

+

4.将矩阵A和矩阵B纵向拼接,并将元素-99所在列乘以9;

>>C=vertcat(A,B)

C=

1300

26130

3523

4923

2-3995

2689

101176

-99-6011

>>[x,y]=find(C==-99)

x=

8

y=

1

>>C(:

y)=C(:

y)*9

C=

9300

186130

27523

36923

18-3995

18689

901176

-891-601

实验4 MATLAB矩阵运算

(2)

1.将矩阵A和矩阵B横向拼接,并提取合并后矩阵的主对角元素。

>>D=cat(2,A,B)

D=

13002-3995

261302689

3523101176

4923-99-601

>>diag(D)

ans=

1

61

2

3

2.求下列矩阵的列均值、列和、列方差、所有元素的平均值,

>>A=[123;654;9910001050]

>>B=[2-3995;2689;101176;-99-601]

列和:

>>sum(A)

ans=

10610071057

>>sum(B)

ans=

-85811421

均值:

>>mean(A)

ans=

>>mean(B)

ans=

列方差:

>>var(A)

ans=

+005*

>>var(B)

ans=

+003*

所有元素的平均值:

>>mean(mean(A))

ans=

>>mean(mean(B))

ans=

3.已知5座城市的坐标分别为:

(,)、(0,)、(13..8,)、(,)、(,)。

用不同标记标出各城市,并用兰色虚线连接两两城市;然后根据城市间的两两距离,寻找距离最短的两座城市,并用红色点划线连接。

d=[;0;;;];

plot(d(1,1),d(1,2),'*');

holdon;

plot(d(2,1),d(2,2),'+');

plot(d(3,1),d(3,2),'o');

plot(d(4,1),d(4,2),'s');

plot(d(5,1),d(5,2),'d');

flag=[];dist=1000000;

fori=1:

4

forj=i+1:

5

x=[d(i,1)d(j,1)];

y=[d(i,2)d(j,2)];

plot(x,y,'--')

d1=sqrt((x

(1)-x

(2))^2+(y

(1)-y

(2))^2);

ifd1

dist=d1;

flag=[ij];

end

end

end

plot(d(flag,1),d(flag,2),'');

实验5 MATLAB矩阵运算(3)

1.求下列矩阵的列均值、列和、列方差、所有元素的平均值,

 

5、已知5座城市的坐标分别为:

(,)、(0,)、(13..8,)、(,)、(,)。

用不同标记标出各城市,并用兰色虚线连接两两城市;然后根据城市间的两两距离,寻找距离最短的两座城市,并用红色点划线连接。

实验6 MATLAB绘图

(1)

1.试绘制

,式中

y=x^3:

clear;clc;

x=-2*pi:

pi/180:

2*pi;

plot(x.^3,'r');

gridon;

y=x^2:

clear;clc;

x=-2*pi:

pi/180:

2*pi;

plot(x.^2,'g');

gridon;

y=sin(x):

clear;clc;

x=-2*pi:

pi/180:

2*pi;

plot(sin(x),'b');

gridon;

2.试绘制

clear;clc;

x=-5:

:

5;

y=x;

z=1./(((1-x).^2+y.^2).^;

plot(z);

3.生成一个周期为2π,占空比为的方波;

clear;clc;

t=0:

pi/180:

10*pi;

y=square(t,30);

plot(t,y);

grid

ylim([])

4.绘制y的杆状图

clear;clc;

x=0:

pi/10:

10*pi;

y=exp.*x).*cos(x)

plot(y);

stem(x,y)

5、已知5座城市的坐标分别为:

(,)、(0,)、(13..8,)、(,)、(,),用不同标记标出各城市,并用兰色虚线连接两两城市。

实验7 MATLAB绘图

(2)

编写程序产生如下信号,并按要求绘制相应的曲线。

利用save as命令把图形分别保存成.fig格式和.jpg格式的图像文件。

 

(1)信号形式y=sin(2x+pi/4),利用plot命令绘制该信号在0<=x<+2pi区间内,且采样间隔为pi/1000的曲线。

填加网格线,标题为“正弦信号曲线”,横坐标显示“x”,纵坐标显示“y”。

 

clc;clear;

x=0:

pi/1000:

2*pi;

y=sin(2.*x+pi/4);

plot(y);

grid;

title('正弦信号曲线');

xlabel('x');

ylabel('y');

saveas(gcf,'');

saveas(gcf,'');

(2)将上述信号左平移或右平移2得到两个新信号y2和y3,利用hold命令在同一图中显示三条曲线并通过线型和颜色加以区分。

 

clc;clear;

x=0:

pi/1000:

2*pi;

y=sin(2.*x+pi/4);

y2=sin(2.*x+pi/4+2);

y3=sin(2.*x+pi/4-2);

plot(y);

holdon;

plot(y2,'g');

plot(y3,'r');

grid;

title('正弦信号曲线');

xlabel('x');

ylabel('y');

saveas(gcf,'');

saveas(gcf,'');

 

(3)利用subplot命令将上述三个信号利用子图来显示;利用figure命令将上述三个信号分别在不同的窗体中同时显示。

 

Subplot:

clc;clear;

x=0:

pi/1000:

2*pi;

y=sin(2.*x+pi/4);

y2=sin(2.*x+pi/4+2);

y3=sin(2.*x+pi/4-2);

subplot(3,1,1);

plot(y);

holdon;

subplot(3,1,2);

plot(y2,'g');

subplot(3,1,3);

plot(y3,'r');

grid;

title('');

xlabel('x');

ylabel('y');

saveas(gcf,'');

saveas(gcf,'');

 

figure:

clc;clear;

x=0:

pi/1000:

2*pi;

y=sin(2.*x+pi/4);

y2=sin(2.*x+pi/4+2);

y3=sin(2.*x+pi/4-2);

figure;

plot(y);

grid;

holdon;

figure;

plot(y2,'g');

grid;

figure;

plot(y3,'r');

grid;

title('');

xlabel('x');

ylabel('y');

saveas(gcf,'');

saveas(gcf,'');

(4)z = 0:

:

40;x = cos(z);y = sin(z),利用plot3命令绘制三维曲线并填加相应的坐标轴标注。

clc;clear;

z=0:

:

40;

x=cos(z);

y=sin(z);

plot3(x,y,z);

xlabel('x');

ylabel('y');

zlabel('z');

saveas(gcf,'');

saveas(gcf,'');

实验8 MATLAB序设计

(1)

1.分别用for和while循环语句编写程序,求出

for:

clc;clear;

s=0;

forn=1:

10

s=s+5^n;

end

s

s=

 

clc;clear;

s=0;

n=1;

whilen<=10

s=s+5^n;

n=n+1;

end

s

s=

2.试不用循环语句,改用MATLAB的矩阵函数求解1题。

clc;clear;

n=1:

10;

s=5.^n;

sum(s)

ans=

3.编写一个函数文件testfun:

对于任意整数,若大于0,则返回该数的余弦值,否则返回其绝对值。

并将实整数-66代入求此函数的运行结果。

functiontestfun(x)

if(x>0)

y=cos(x);

else

y=abs(x);

end

y

>>testfun(-66)

y=

66

 

4.输入x,y的值,并将它们的值互换后输出。

functionchange(x,y)

a=x;

x=y;

y=a;

x

y

>>x=2;

>>y=1;

>>change(x,y)

x=

1

y=

2

5.利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。

A=rand(1,10);

temp=1;

while(temp==1)

temp=0;

forn=1:

9;

if(A(1,n)

t=A(1,n);

A(1,n)=A(1,n+1);

A(1,n+1)=t;

temp=1;

end

end

end

A

A=

Columns1through4

Columns5through8

Columns9through10

 

实验9 MATLAB序设计

(2)

1.编写一个M函数文件计算下列级数的和:

x和n的值由input指令给出。

functionf=test

x=input('Inputthex:

\n');

n=input('Inputthen:

\n');

j=1;

f2=0;

fori=1:

n;

j=1;

fork=1:

i;

j=j*k;

f1=x^i/j;

end

f2=f2+f1;

end

f=f2+1;

>>test

Inputthex:

12

Inputthen:

12

ans=

+04

2.编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示,重新输入。

functiontest

n=0;

k=0;

n=input('请输入密码(整数)\n');

while(k==0)

ifn==123

disp('密码正确')

k=1;

else

k=0;

n=input('密码错误,请重新输入密码(整数)\n');

end

end

 

>>test

请输入密码(整数)

124

密码错误,请重新输入密码(整数)

124

密码错误,请重新输入密码(整数)

123

输入正确

 

3.编制m文件,输入n(正整数),显示所有小于n的质数。

functionleap=panduan(n)

leap=1;

fori=2:

sqrt(n+1)

ifmod(n,i)==0

leap=0;

break;

end

end

functionzhishu(n)

form=2:

n

ifpanduan(m)==1

disp(m);

end

end

>>zhishu(15)

2

3

5

7

11

13

4.数组[1:

99]中素数(即质数)元素的和

functionleap=panduan(n)

leap=1;

fori=2:

sqrt(n+1)

ifmod(n,i)==0

leap=0;

break;

end

end

 

functionsum1

k=0;

form=1:

99

ifpanduan(m)==1

k=k+m;

end

end

k

>>sum1

k=

1061

5.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值以及平方和。

functioncal

s=0;

n=0;

s2=0;

temp=input('');

while(temp~=0)

s=s+temp;

s2=s2+temp.^2;

n=n+1;

temp=input('');

end

s./n

s2

 

cal

1

2

3

4

5

6

7

8

9

0

ans=

5

s2=

285

实验10 MATLAB数据文件I/O

(1)

1.教材《MATLAB基础与实例进阶》页,思考与练习2操作题

(1)-

(2)

(1)将工作目录下的后缀为‘.dat’的文件更改为‘.bin'作为后缀。

filename1='';

fid1=fopen(filename1,'r');

a=fread(fid1)

filename2='';

fid2=fopen(filename2,'r');

fwrite(fid2,a);

b=fread(fid2)

(2)使用MATLAB导入一个WAVE格式的音频文件,并比较与waveread函数读取音频文件的差异。

用waveread函数读取音频文件时:

[y,fs,nbits]=wavread(file),file指定音频文件名,y是音频数据。

另外该语句还能够返回该音频文件的采样率fs,和采样位数nbits,而使用MATLAB导入WAVE格式的音频文件,是不能控制音频文件的采样率,不能够精确调整。

实验11 MATLAB数据文件I/O

(2)

1.教材《MATLAB基础与实例进阶》页,思考与练习2操作题(3)-(4)

(3)读取例4-8中最后两列数据。

fid=fopen('','w');

alldata=reshape([1:

20],4,5);

fwrite(fid,alldata);

fid=fopen('');

fseek(fid,12,'bof');

last_two=fread(fid,[4,2])

fclose(fid);

(4)使用textread函数读出例4-12中的所有浮点数,要求小数点后只有一位数。

clc;clearall;closeall;

[names,rest]=textread('','%s%[^\n]','delimiter',',');

a1=str2num(rest{1});

a2=str2num(rest{2});

a3=str2num(rest{3});

a4=str2num(rest{4});

b=[a1(3),a2(3),a3(3),a4(3)];

fprintf('%4.1f\n',b);

实验12 高级图形用户界面设计

(1)

1.教材《MATLAB基础与实例进阶》页,思考与练习2操作题

(1)-

(2)

(1)建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且在按下鼠标器的左键之后显示Left Button Pressed字样。

h0=figure('Color',[1,0,0],'Name','图形窗口','Numbertitle','off','WindowButtonDownFcn','text,,''LeftButtonPressed'')','toolbar','none');

(2)利用图形对象绘制下列曲线,要求先用默认属性创建线条对象,再通过句柄操作改变曲线颜色、线型和线宽,并利用文本对象给曲线添加标注。

clc;clearall;closeall;

x1=0:

.001:

1;

y1=(1+x1.^2)/(1+x1.^4);

subplot(311)

hline1=plot(x1,y1)

x2=0:

pi/100:

2*pi;

y2=3*x2+sin(x2)-exp(x2);

subplot(312)

hline2=plot(x2,y2)

x3=-1000:

1:

1000;

y3=log(x3+sqrt(1+x3.^2))/2;

subplot(313)

hline3=plot(x3,y3)

set(hline1,'color','r','linestyle','-','linewidth',;

set(hline2,'color','g','linestyle','+','linewidth',;

set(hline3,'color','b','linestyle','.','linewidth',;

gtext('y=(1+x^2)/(1+x^4);');

gtext('y=3*x+sin(x)-exp(x)');

gtext('y=log(x+sqrt(1+x^2))/2');

 

实验13 高级图形用户界面设计

(2)

1.教材《MATLAB基础与实例进阶》页,思考与练习2操作题(3)-(4)

(3)在一个图形窗口中创建两坐标轴用以显示不同图形,并创建快捷菜单以改变曲线颜色

clc;clearall;closeall;

h0=figure('toolbar','none','menubar','none','position',[380200500350],...

'name','控件的综合应用');%创建图形窗口

h_axes1=axes('Position',[],'box','on');%创建坐标轴

h_axes2=axes('Position',[],'box','on');%创建坐标轴

%在第一个坐标轴上画图

t=0:

:

6*pi;

yy=cos(t);

b=1/2/pi;

h_line=plot(h_axes1,t,yy,'LineWidth',2);

axis([20]);

%在第二个坐标轴上画图

t=0:

:

6*pi;

yy=sin(t);

b=1/2/pi;

h_line2=plot(h_axes2,t,yy,'LineWidth',2);

axis([20]);

h_menu1=uimenu('label','颜色1');%创建菜单

h_submenu11=uimenu(h_menu1,'la

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

当前位置:首页 > 农林牧渔 > 水产渔业

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

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