MATLAB实验指导书答案

内容全手写,疏忽之处在所难免,建议PC端打开以获得最佳效果

实验一
实验A MATLAB软件环境以及入门

1.从bin目录下启动MATLAB,如果你找不到你的bin目录在哪,命令行里输入path就可以了
从桌面上启动MATLAB需要在安装时创建桌面快捷方式

2.关键字(for):蓝色
合法字符串(a=‘MATLAB’):紫色
不符合语法规则的输入(a='MATLAB):红色
其它命令(1+1):黑色

  1. 1.2308 ans代表默认输入变量
    (12+2*sin(pi/6))/(3.25.^2)

4.错 对 错 错 对
变量命名规则在书上第5页
abcd-2:不能使用-
3chan:变量开头第一个字符必须为英文字母
a变量:变量命名不能为中文

5.是 不是
compact和loose是控制输出结果之间的间隔,在HOME主页的‘预设’选项里进行设置
MATLAB的默认数值显示是loose和short
无论long,longE,longEng还是longG,它们都是双精度显示15位有效数字,也就是显示最多位有效数字

6.clc:是清屏
clear:清除定义过的变量
clf:用于在画图时清空图形

7.t=0:pi/100:4pi;
y=exp(-t/3).sin(3t);
plot(t,y,’.r’,‘LineWidth’,2);
axis([0,4
pi,-1,1]);
xlabel(‘t’);
ylabel(‘y’);

8.(1)
z=(4+3i)(1+2i)/(2exp(pi*i/6)) % ans=1.8840+5.2631i
real(z) % ans=1.8840
imag(z) % ans=5.2631
abs(z) % ans=5.5902
angle(z) % ans=1.2271
(2)
z1=4+3i;
z2=1+2i;
hold on;
plot([0,z2],‘r’);
plot([0,z1],‘b’);
z4=z1+z2;
plot([0,z4],‘k’);
hold off;

9.一行:z=[1+2i 3+4i;5+6i 7+8i]
分行:z=[1+2i 3+4i
5+6i 7+8i]
z1=real(z); % 虚部:[2 4;6 8]
z2=abs(z); % 模:[2.2361 5.000;7.8102 10.6301]
angle(z); % 幅角:[1.1071 0.9273;0.8761 0.8520]
real(z); % 实部:[1 3;5 7]
z1*z2; % 实虚部矩阵乘机:[20 28;52 76]

不建议用循环法实现,没必要

10.当前工作目录后面有一个三角,你点击它然后选择以你学号命名的文件夹就可以了

11.同上

12.inv:求矩阵的逆运算
plot:最基本的画图命令
max:求最大值
round:取四舍五入后的值

实验B 数组创建,数组元素编址寻访

1.(1)
a,t1,T,F的维度都是2
a的规模是:1 1
t1的规模是:1 10
T的规模是:1 1
F的规模是:0 0
a的长度是1,t1的长度是10,T的长度是1,F的长度是0

a=0;
b=pi;
t1=a:pi/9:pi;
t2=linspace(a,b,10);
T=t1*t2’;
F=find(T<0);
fprintf(’%d %d %d %d\n’,ndims(a),ndims(t1),ndims(T),ndims(F));
fprintf(’%d %d %d %d\n’,size(a),size(t1),size(T),size(F));
fprintf(’%d %d %d %d\n’,length(a),length(t1),length(T),length(F));

分析:以矩阵为例,一个平面矩阵无论几行几列维度都是2,a和t1都是一行一列矩阵,所以维度为2
t1是从0开始以步长pi/9到pi的矩阵,t2是将0到pi这个区间平均分为10等份,T等于t1乘t2的转制,很容易想到T矩阵里面的元素不可能为负,因为相乘的两个矩阵里面的元素就没有负数,F是存储了T中小于0元素的位置,所以F为空矩阵,

(2)
t1完全等于t2
因为t1=[0 0.3491 0.6981 1.0472 1.3963 1.7453 2.0944 2.4435 2.7925 3.1416]
t2=[0 0.3491 0.6981 1.0472 1.3963 1.7453 2.0944 2.4435 2.7925 3.1416]

分析:t1=0:pi/9:pi;t1=linspace(0,pi,10);这两种写法其实是等价的

2.直接输入法:你会的,你可以采用一行形式输入还可以采用分行形式输入
数组编辑器:直接点击HOME主页中的‘新建变量’选项就可以了
M文件创建法:命令行里输入edit

3.(1)
a=magic(5);
b=diag(a);
c=diag(b);

(2)
a=magic(5);
b=a(2:4,2:4);
sum(b);
sum(b’);

4.(1)不能实现
(2)可以实现
(3)不能实现

5.(1)
A(2:2:4,:); %取A的第2,4行
A(:,1:2:5); %取A的1,3,5列
(2)
respace(A’)
(3)
A(2:1:4,:)=[]

6.(1)
先更正一下,把这一问的那个4行3列的矩阵里的第2行第1列元素5改为7,第4行第1列元素改为7改为5
a=[4 2;7 5];
b=[7 1;8 3];
c=[5 9;6 2];
A=reshape(a);
B=reshape(b);
C=reshape©;
D=[A B C];

(2)
C=[a,b,c]
D=reshape(C,1,12);

7.A=rand(3,5); % 产生一个3行4列的数组A
B=find(A>0.5) % 寻找A中大于0.5的元素的位置,输出对应的单下表
[i,j]=ind2sub(size(B),B) % 将单下标转化为全下标

分析:rng(‘default’)就是恢复MATLAB启动时默认的全局随机流,因为计算机产生随机数是在所谓的全局随机流上产生的,说的更简单一点就是计算机产生随机数不是真正意义上的随机数,而是通过一定的算法得到的,不同的全局随机流的算法不一样,所以产生的随机数也不一样。

实验C 数组运算和矩阵运算

1.1:结果相同,两个数组点乘就是对应元素相乘,所以即便交换位置结果也相同
1.2:结果不同,是矩阵的运算符,满足的是矩阵的乘法规则
1.3:结果不同,矩阵的乘法不满足交换律
1.4:结果相同,数组左除和数组右除本质上是一样的
1.5:结果不同,矩阵的除法不满足交换律,矩阵的除法必须先将某一个转换为逆矩阵,然后再相乘
1.6:结果不同,A
(A\B)-B的结果更趋近于0
1.7:结果相同,任何矩阵和单位矩阵做除法运算结果不变

2.X=A’*B % ans=[414;629;374]
3.A=a^2 % ans=[30 36 42;6 81 96;102 126 150]
B=a.^2 % ans=[1 4 9;16 25 36;49 64 81]
4.a<b % ans=[1 0 0;0 0 1]
a>b % ans=[0 1 1;0 0 0]
a==b % ans=[0 0 0;1 1 0]
a<=b % ans=[1 0 0;1 1 1]
a>=b % ans=[0 1 1;1 1 0]
a~=b % ans=[1 1 1;0 0 1]
5.题上告诉你的是角度,所以你不能用sin算要用114页的sind
sind(x) % ans=0.5000 0.7071 0.8660
cosd(x) % ans=0.8660 0.7071 0.5000
tand(x) % ans=0.5774 1.0000 1.7321
cotd(x) % ans=1.7321 1.0000 0.5774
6.a=[2.4568 6.3982 3.9375 8.5042]
round(a) % ans=2 6 4 9

实验二 基本plot及图形标识命令绘图
实验A 基本plot绘图命令实现
1.x=0:2:50;
y=exp(0.1*x);
plot(x,y,‘r.’);

2.x=0:pi/10:2pi;
y=2
exp(-0.5x).cos(4pix);
subplot(1,3,1);
plot(x,y,‘r+’);
title(‘采样点数为21点时’);

x=0:pi/50:2pi;
y=2
exp(-0.5x).cos(4pix);
subplot(1,3,2);
plot(x,y,‘b*’);
title(‘采样点数为101点时’);

x=0:pi/100:2pi;
y=2
exp(-0.5x).cos(4pix);
subplot(1,3,3);
plot(x,y,‘m>’);
title(‘采样点数为201点时’);

3.x=1:0.1:5;
y=sin(x);
grid on;
subplot(2,2,1);
plot(x,y,‘kp’,‘MarkerSize’,1.5);
y=cos(x);
subplot(2,2,2);
plot(x,y,‘r:’,‘MarkerSize’,1.5);
y=sin(x)+cos(x);
subplot(2,2,3);
plot(x,y,‘b-.’,‘MarkerSize’,1.5);
grid off

4.x=0:pi/10:2pi;
y=2
sin(x);
subplot(2,2,1);
bar(x,y,‘g’);
axis([0 7 -2 2]);
title(‘条形图’);
subplot(2,2,2);
stairs(x,y,‘b’);
axis([0 7 -2 2]);
title(‘阶梯图’);
subplot(2,2,3);
stem(x,y,‘k’);
axis([0 7 -2 2]);
title(‘杆图’);
subplot(2,2,4);
fill(x,y,‘y’);
axis([0 7 -2 2]);
title(‘填充图’);

5.x=0:pi/100:2pi;
y1=sin(x);
y2=cos(10
x);
y3=y1.*y2;
plot(x,y1,‘r’,x,y2,‘b’,x,y3,‘k’);

实验B 图形标识命令绘图实现

t=0:pi/10:2*pi;
y=cos(t).exp(-0.4t);
stem(t,y,‘g’,‘Color’,‘k’);
hold on;
stairs(t,y,‘r’,‘LineWidth’,3);
hold off;
box on;

hold on
x=0:pi/1000:2pi;
y1=2
exp(-0.5x).cos(4pix);
y2=2exp(-0.5x).cos(pix);
grid on;
plot(x,y1,‘g.’,x,y2,‘y:’);
legend(‘y1=2exp(-0.5x).cos(4pix)’,'y1=2exp(-0.5*x).cos(pix)’);
xlabel(‘x’);
ylabel(‘y’);

hold on
x=0:pi/1000:2pi;
y1=2
exp(-0.5x).cos(4pix);
y2=2exp(-0.5x).cos(pix);
grid on;
plot(x,y1,‘g.’,x,y2,‘r’);
legend('y1=2exp(-0.5x).cos(4pix)’,'y1=2exp(-0.5x).cos(pix)’);
xlabel(‘x’);
ylabel(‘y’);
k=find(abs(y1-y2)<0.005)
x1=x(k);
y3=2
exp(-0.5x1).cos(4pix1);
plot(x1,y3,‘bp’);

分析:你可能会发现有些相交的点却没有画出蓝色五角星,这很正常,因为所谓连续的曲线不过是数以万计的点构成,只不过过于密我们人眼难以分辨,所以看上去像连续的,实则离散,既然是离散那就存在上述那种情况(有些相交的点却没有画出蓝色五角星)。

% 取a=0.3,b=0.6
x=0:0.001:1;
y=0.(x<0.3 & x>0)+(x-0.3)/(0.6-0.3).(0.3<=x & x<=0.6)+0.*(x>0.6 & x<1);
plot(x,y,‘r’);

实验三
实验A MATLAB控制流
1.(1)if语句
a=input(‘请输入常数a:’);
b=input(‘请输入常数b:’);
c=input(‘请输入常数c:’);
x=input(‘请输入变量x:’);
if x<1.5 & x>=0.5
y=ax.^2+bx+c
end
if x>=1.5 & x<3.5
y=a*(sin(b)).^c+x
end
if x>=3.5 & x<5.5
y=log((abs(b+(c/x))))
end
(2)switch语句
a=input(‘请输入常数a:’);
b=input(‘请输入常数b:’);
c=input(‘请输入常数c:’);
x=input(‘请输入变量x:’);
switch x
case x<1.5 & x>=0.5
y=ax.^2+bx+c
case x>=1.5 & x<3.5
y=a*(sin(b)).^c+x
case x>=3.5 & x<5.5
y=log((abs(b+(c/x))))
end

3.(1)for循环
y=0;
for i=0:1:1000000
y=y+0.2.^i;
end
fprintf(’%d’,y);
(2)
while循环
y=0;
i=0;
while i<=1000000
y=y+0.2.^i;
i=i+1;
end
fprintf(’%d’,y);
(3)不用循环
a1=1;
q=0.2;
n=1000001;
s=(a1*(1-q.^1000001))/(1-q);
fprintf(’%d’,s);

实验B 脚本和函数
1.
x=randi(89,4,5)+10;
y=0;
for i=1:20
y=y+x(i);
end
y=y/20;
for i=1:20
if x(i)<=y
if mod(x(i),2)==0
fprintf(’%d\n’,x(i));
end
end
end

2.(1)编制m脚本文件
while 1
a=input(‘请输入密码:’,‘s’);
if strcmp(a,‘123’)
fprintf(‘密码正确\n’);
break;
else
fprintf(‘重新输入\n’);
continue;
end
end
(2)函数文件
function return1=Untitled(~)
return1=0
while 1
a=input(‘请输入密码:’,‘s’);
if strcmp(a,‘123’)
fprintf(‘密码正确\n’);
return;
else
fprintf(‘重新输入\n’);
continue;
end
end

3.function mat_add(varargin)
n=length(varargin)
a=0;
for k=1:n
a=a+varargin{k};
end
fprintf(’%d\n’,a);

实验C 函数句柄
1.ezplot(@sin);

x=@(t)(2cos(t)-cos(2t));
ezplot(x);
y=@(t)(3*(2sin(t)-cos(2t)));
ezplot(y);

实验四 MATLAB工程技术应用
实验A 零输入响应的MATLAB应用
syms t;
y=dsolve(‘D2y+5Dy+6y-y=0’,‘y(0)=1,Dy(0)=-1’,‘t’);
hold on;
hz=ezplot(y,[-1,6]);
hz1=legend(‘零输入响应’);
set(hz1,‘FontSize’,16,‘Fontangle’,‘italic’);
set(hz,‘Color’,‘b’,‘LineWidth’,1);
plot([0,4],[1,0],‘or’,‘MarkerSize’,3);
text(0,1.1,‘y(0)=1’);
text(4,0.1,‘y(4)=0’);
title(‘零输入响应’);
xlabel(‘时间’);
ylabel(‘分量’);
hold off;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值