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
  • 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
  • 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)
  • 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)

你可能感兴趣的:(MATLAB编程与工程应用(第二版)第1章习题解答)