Matlab上机题库及详细答案
例1、用一个简单命令求解线性系统
  3x1+ x2 - x3 = 3.6
  x1+2x2+4x3 = 2.1
  -x1+4x2+5x3 = -1.4
解:A=[3 1 -1;1 2 4;-1 4 5];  b=[3.6;2.1;-1.4];
    x=A\b      %Inv(A)* b
    x =  1.4818
        -0.4606
        0.3848
例2、用简短命令计算并绘制在0x6范围内的sin(2x)、sinx2、sin2x。
解:x=linspace(0,6)
    y1=sin(2*x),y2=sin(x.^2),y3=(sin(x)).^2;
    plot(x,y1,x, y2,x, y3)
例3:画出指数衰减曲线y1=exp(-t/3)*sin(3*t)和它的包络y2=exp(-t/3),t的取值范围是(0,4pi)。
解:t=0:pi/100:4*pi;
    y2=exp(-t/3);
    y1=y2.*sin(3*t);
    plot(t,y1,'-r',t,y2,':b',t,-y2,':b')
知识点:
1. A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩
阵第i行、第j列的元素。
2. A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。
A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];
A(2:3,4:5)
A(2:3,1:2:5)
3. 利用end运算符,end表示某一维的末尾元素下标。
A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];
A(end,:)%取A最后一行元素
A([1,4],3:end)%取A第1、4行中第3列到最后一列元素。
4. A(:) 将矩阵A的每一列元素堆叠起来,成为一个行向量。
例4:使用关系运算和元素的逻辑运算出大于60小于100的数的位置。
解:num=round(rand(1,10)*100);%生成<100的整数,   
  %round(A),A中的元素四舍五入到整数,rand(1,10),产生随机数0.0-1.0的1X10矩阵。
    n=(num>60)&(num<100)
    n=n.*num
    Result=find(n)%查非0位置,按索引方式
    as=n(result)%显示这些数字
例5:产生对角线上全1,其余为0的2行3列矩阵的命令是_C_____。     
    A. ones(2,3)  B. ones(3,2)          C. eye(2,3)        D. eye(3,2)
例6:已知a=0:4,b=1:5,下面的运算表达式出错的为_D__。     
    A. a+b        B. a.*b      C. a’*b      D. a*b
例7:有一个2行2列的元胞数组c,则c(2)指的是__D____。     
    A.第1行第2列的元素内容
    B.第2行第1列的元素内容   
    C.第1行第2列的元素
    D.第2行第1列的元素
例8:已知x=0:10,则x有___B___个元素。
    A. 10          B. 11            C. 9                  D. 12
例9:已知数组a=
  则a(:,end)是指___C___
    A. 所有元素  B. 第一行元C. 第三列元素 D. 第三行元素
例10:计算x从0到20,y=sin(x)中,π<x<4π范围中,y>0的所有值。
解:x=0:20;
    x1=x.*((x>pi)&(x<4*pi));
    y=sin(x);
    y1=sin(x1).*(sin(x1)>0)
例11:设A=[1 2 3;4 5 6]为2×3矩阵, 分别建立3×3、3×2和与矩阵A同样大小的零矩阵。
解: zeros(3);zeros(3,2);A=[1 2 3;4 5 6] ;zeros(size(A))
例12: 建立随机矩阵:
(1) 在区间[20,50]内均匀分布的5阶随机矩阵。
(2) 均值为0.6方差为0.1的5阶正态分布随机矩阵
解:>>x=20+(50-20)*rand(5);
  >>y=0.6+sqrt(0.1)*randn(5)
例13: 将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。
解:M=100+magic(5)
M =117  124  101  108  115
  123  105  107  114  116
  104  106  113  120  122
  110  112  119  121  103
  111  118  125  102  109
例14: 先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。
解A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];
  D=diag(1:5);D*A  %用D左乘A,对A的每行乘以一个指定常数
例15:  输入x,y的值,并将它们的值互换后输出。
    程序如下:
x=input('Input x please.');y=input('Input y please.');z=x;x=y;y=z;
disp(x);disp(y);
例16::求一元二次方程ax2 +bx+c=0的根。
程序如下:matlab考试题库及答案
a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;
x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
例17:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。
解:c=input('请输入一个字符','s');
if c>='A' & c<='Z'
  disp(setstr(abs(c)+abs('a')-abs('A')));
elseif c>='a'& c<='z'
    disp(setstr(abs(c)- abs('a')+abs('A')));
elseif c>='0'& c<='9'
    disp(abs(c)-abs('0'));
else
    disp(c);
end
例18:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): 
    price<200          没有折扣
    200≤price<500      3%折扣
    500≤price<1000    5%折扣
    1000≤price<2500    8%折扣
    2500≤price<5000    10%折扣
    5000≤price        14%折扣
输入所售商品的价格,求其实际销售价格。
解:price=input('请输入商品价格');
switch fix(price/100)
  case {0,1}              %价格小于200
      rate=0;
  case {2,3,4}            %价格大于等于200但小于500
      rate=3/100;
  case num2cell(5:9)      %价格大于等于500但小于1000
      rate=5/100;
  case num2cell(10:24)    %价格大于等于1000但小于2500
      rate=8/100;
  case num2cell(25:49)    %价格大于等于2500但小于5000
      rate=10/100;
  otherwise                %价格大于等于5000
      rate=14/100;
end
price=price*(1-rate)        %输出商品实际销售价格
例19已知 ,当n=100时,求  的值。
解:程序如下:
y=0;n=100;for i=1:n;y=y+1/(2*i-1);End
例20:一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数
解:for m=100:999
m1=fix(m/100);m2=rem(fix(m/10),10);m3=rem(m,10);
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3;disp(m);end
例21:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
程序如下:
解:sum=0;cnt=0;val=input('Enter a number (end in 0):');
while (val~=0)
    sum=sum+val;cnt=cnt+1;val=input('Enter a number (end in 0):');
end
if (cnt > 0)
    Sum;mean=sum/cnt
end
例22 :求[100,200]之间第一个能被21整除的整数。
程序如下:
解:for n=100:200
if rem(n,21)~=0
      Continue;end
break
end
例23: 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。