MATLAB编程与工程应用(第二版)第1章习题解答
答案来自于Charles Sun 欢迎指正。
-
1.创建变量myage,并存储你的年龄。将该变量的值减1,然后再给变量的值加2。
>> myage=21;
>> myage=myage-1;
>> myage=myage+2; -
2.创建一个变量myage并存储你的年龄。将变量值减1;将变量值加2。
>> myage=21;
>> myage=myage-1;
>> myage=myage+2; -
3.使用内置函数namelengthmax找出在你所用的MATLAB版本中标识符名称的最大长度。
>> namelengthmax
ans =
63 -
4.探索format命令的更多应用细节。使用 help format 找出各种选项,并用format bank 命令上机显示美元币值格式。
>>format bank
>>1/3
ans=
0.33 -
5.找出一个能得到如下输出格式的format选项:
>>5/6+2/7
ans=
67/112
>>format rat -
6.先考虑如下表达式的结果,然后上机验证之。
25/4*4
3 + 4^2
4\12 +4
3^2
(5 - 2) * 3
此题为了让你了解运算符顺序,很简单,自行上机实验 -
7.创建一个pounds变量,以磅为单位来存储重量。将这个重量转化为千克,然后将结果赋给变量kilos。转换关系是1千克=2.2磅。
>> pounds=50;
>> kilos=2.2*pounds
kilos =
110.0000 -
8.由三个并联电阻R1,R2,R3给出的总电阻RT可用下式求出:
RT=1/(1/R_1 +1/R_2 +1/R_3 )
创建三个电阻变量并存储每个变量的值,计算总电阻RT的值。
>> R1=1;
>> R2=2;
>> R3=3;
>> RT=1/(1/R1+1/R2+1/R3);
>> RT
RT =
0.5455 -
9.创建一个ftemp变量,存储单位为华氏度(F)的温度值。将这个值转换为摄氏温度值,并将其结果存储在变量ctemp中。转换公式是C=(F-32)x 5/9。
>>ftemp=100;
>>ctemp=(ftemp-32)*5/9
ctemp =
37.7778 -
10.给出一个具有某单位量纲的数值,然后将其转换成另一量纲下的数值。
。。。。 -
11.sin函数可以计算并返回以弧度为单位的角度的正弦值。使用help elfun来查找能返回以度为单位的角度的正弦函数名。调用这个函数,以90度为参数验证其结果为1。
>> sind(90)
ans =
1 -
12.一个向量可以用笛卡尔坐标x和y表示,也可以用极坐标r和θ来表示。它们之间的关系如下面的方程所示:
x= r x cos(θ)
y= r x sin(θ)
给极坐标变量r和θ赋值,然后计算相应的笛卡尔坐标x和y。
>> r=3;
>> O=45;
>> x=r*cosd(O); -
13.风通常能使人感觉到气温比实际更低。在给定气温T(华氏度)和风速V(英里/每小时)的条件下,用风冷因子(Wind Chill Factor,WCF)测量冷的程度。对WCF的一个测量公式是:
WCF=35.7+0.6T-35.7(V0.16)+0.43T(V0.16)
定义温度T和风速V变量并给其赋值,用上式计算WCF的值。
>> T=40;
>> V=6;
>> WCF=35.7+0.6T-35.7(V0.16)+0.43T(V0.16)
WCF =
41.9400 -
14.用help elfun或实验的方法来回答下面的问题:
- fix(3.5)和floor(3.5)一样吗?
- fix(3.4)和fix(-3.4)一样吗?
- fix(3.2)和floor(3.2)一样吗?
- fix(-3.2)和floor(-3.2)一样吗?
- fix(-3.2)和ceil(-3.2)一样吗?
>> fix(3.5)
ans =
3
>> floor(3.5)
ans =
3
>> fix(3.4)
ans =
3
>> fix(-3.4)
ans =
-3
>> fix(3.2)
ans =
3
>> floor(3.2)
ans =
3
>> fix(-3.2)
ans =
-3
>> floor(-3.2)
ans =
-4
>> fix(-3.2)
ans =
-3
>> ceil(-3.2)
ans =
-3
- fix(-3.2)和ceil(-3.2)一样吗?
-
15.写出在MATLAB中下面表达式的表示方式:
根号19
3的1.2次方
tan(π)
sqrt(19)
3^1.2
tan(pi) -
16.用intmin和intmax来确定int32与int64类型各自存储的值的范围。
>> intmin('int32')
ans =
-2147483648
>> intmax('int32')
ans =
2147483647
>> intmin('int64')
ans =
-9223372036854775808
>> intmax('int64')
ans =
9223372036854775807 -
17.对实数来说是否也有和intmin、intmax等效的函数?用help查找一下。
>> realmax('double')
ans =
1.7977e+308
>> realmin('double')
ans =
2.2251e-308
- 18.用double型(默认)变量存储一个小数。将变量的值转换为int32类型,并将结果存在一个新变量里。
\>> DoubleNum=37.5;
\>> int32Num=int32(DoubleNum)
int32Num =
38 -
19.产生一个随机数:
- 范围在0到1之间的实数
- 范围在0到20之间的实数
- 范围在20到50之间的实数
- 范围在0到10之间的整数
- 范围在0到11之间的整数
- 范围在50到100之间的整数
>> rand
>> rand*20
>> rand*30+20
>> randi(10)
>> randi(11)
>> randi(50)+50
- 范围在50到100之间的整数
-
20.。。。
-
21.在ASCII字符编码中,字母表中的字母按一定顺序排列,即a在b前,同样A在B前。然而,大写和小写字母哪个在前呢?
>> double('A')
ans =
65
>> double('a')
ans =
97 -
22.按字符编码的方法,将字符串'xyz' 向前移动两个字符的位置。
>> charName='xyz';
>> charName=char(charName-2)
charName =
vwx -
23.使用冒号操作符,创建下面的向量:
3 4 5 6
1.0000 1.5000 2.0000 2.5000 3.0000
5 4 3 2
>> vec=[3:1:6]
vec =
3 4 5 6
>> vec1=[1.0000:0.5000:3.0000]
vec1 =
1.0000 1.5000 2.0000 2.5000 3.0000
>> vec2=[5:-1:2]
vec2 =
5 4 3 2 -
24.用linspace函数,创建下面的向量:
4 6 8
-3 -6 -9 -12 -15
9 7 5
>> vec=linspace(4,8,3)
vec =
4 6 8
>> vec1=linspace(-3,-15,5)
vec1 =
-3 -6 -9 -12 -15
>> vec2=linspace(9,5,3)
vec2 =
9 7 5 -
25.分别使用linspace函数和冒号操作符创建下面的向量:
1 2 3 4 5 6 7 8 9 10
2 7 12
>> vec=[1:10]
vec =
1 2 3 4 5 6 7 8 9 10
>> vec1=linspace(1,10,10)
vec1 =
1 2 3 4 5 6 7 8 9 10
>> vec2=[2:5:12]
vec2 =
2 7 12
>> vec3=linspace(2,12,3)
vec3 =
2 7 12 -
26.创建一个myend变量,存储范围在8到12之间的随机整数。使用冒号操作符,创建一个范围从1到myend且步长是3的向量。
>> myend=randi(4)+8;
>> vec=[0:3:myend]
vec =
0 3 6 9 -
27.使用冒号操作符和转置操作符,创建一个值在-1到1之间,步长为0.2的列向量。
>> vec=[-1:0.2:1]' -
28.写一个表达式查找向量中位置为奇数的元素,不考虑向量的长度。上机用向量测试所写表达式的正确性,向量中既有奇数也有偶数。
>> vec=[1:10];
>> n=[1:2:numel(vec)];
>> vec2=vec(n)
vec2 =
1 3 5 7 9 -
29.创建一个向量变量vec,长度任意。然后写一个赋值语句,将向量的前半部分存储在一个变量中,后半部分存储在另一个变量中。确保赋值语句的通用性,并且计算vec向量元素的个数是奇数还是偶数(提示:使用四舍五入函数,如fix)。
。。。 -
30.产生一个2 x 3的随机数矩阵:
- 实数,每个数的范围为0到1
- 实数,每个数的范围为0到10
- 整数,每个数的范围为5到20
>> rand(3,2)
>> 10*rand(3,2)
>> randi([5,20],2,3)
- 整数,每个数的范围为5到20
-
31.创建一个向量变量vec,取值是1到5之间的随机整数。创建一个cols变量,取值是1到5之间的随机整数。创建一个全零矩阵,其维数由rows和cols的值给出。
>> rows=randi(4)+1;
>> cols=randi(4)+1;
>> zeros(rows,cols) -
32.采用一个有效的方法来创建下面的矩阵:
mat=
7 8 9 10
12 10 8 6
然后,给出矩阵mat的表达式,- 定位到第一行、第三列的元素
- 定位到整个第二行
- 查找前两列
>> mat=[7:10;12:-2:6]
mat =
7 8 9 10
12 10 8 6
>> mat(1,3)
ans =
9
>> mat(2,:)
ans =
12 10 8 6
>> mat(:,1:2)
ans =
7 8
12 10
- 查找前两列
-
33.创建一个2 x 3的矩阵变量mymat。将该矩阵变量传递给下面的每个函数并确保你理解它们的结果:fliplr、flipud和rot90。可以有多少种方法重建它?
>> mymat=[1,2,3;4,5,6];
>> fliplr(mymat);
>> flipud(mymat);
>> rot90(mymat); -
34.创建一个4 x 2的零矩阵,并将其存储在一个变量中。然后,把矩阵中第二行的值换成3和6。
>> x=zeros(4,2);
>> x(2,:)=[3;6]
x =
0 0
3 6
0 0
0 0 -
35.创建一个向量x,它包括均匀分布在-π到π之间的20个数。创建一个y向量,其值为sin(x)。
>> x=linspace(-pi,pi,20);
>> y=sin(x) -
36.创建一个3 x 5的随机整数矩阵,每个值的范围在-5到5之间,再用sign获得每个元素的值。
>> a=randi([-5,5],3,5);
>> b=sign(a) -
37.创建一个4 x 6 的随机整数矩阵,每个值的范围在-5到5之间,并将其存储在一个变量中。创建另外一个矩阵,对应存储原始矩阵中每个元素的绝对值。
>> a=randi([-5,5],4,6);
>> b=abs(a) -
38.创建一个3 x 5 的随机实数矩阵,删除第三行。
>> a=rand(3,5);
>> a(3,:)=[]
>> y=r*sind(O); -
39.创建一个向量变量vec。假设你不知道有多少个元素在向量中(即要使你的表达式通用),给出尽可能多的表达式来获取向量中的最后一个元素。
>>vec = 1 : 1:1000;
>>vec(end)
>>vec(numel(vec)) -
40.创建一个矩阵变量mat。假设你不知道有多少个元素、多少行和列在矩阵中,给出尽可能多的表达式来获取矩阵中的最后一个元素。
同上 -
41.创建一个三维矩阵并获取其大小。
>> mat = zeros(3,5);
>> mat(:,:,1) = zeros(3,5);
>> mat(:,:,2) = zeros(3,5); -
42
>>myc = clock
>> today = myc(1:3)
>> now = myc(4:6)
>> now = fix(now)