实验二

(实验报告中附上每题的主要程序和结果)

A

1.创建double类型的变量,并进行计算。

(1)a=87,b=190,计算a+b、a-b、a*b。

>> a=87
a = 87
>> b=190
b = 190
>> a+b
ans = 277
>> a-b
ans = -103
>> a*b
ans = 16530

image-20220831164327351

(2)创建 uint8 类型的变量,数值与(1)中的相同,进行相同的计算。

>> a=uint8(87)
a = 87
>> b=uint8(190)
b = 190
>> a+b
ans = 255
>> a-b
ans = 0
>> a*b
ans = 255

image-20220831164348158

2.计算∶

(1)sin(60°)

(2)e³

(3)cos( 3 4 π \frac{3}{4}π 43π)

>> sind(60)
ans = 0.8660

>> exp(3)
ans = 20.086

>> cos(pi*3/4)
ans = -0.7071

image-20220831164419896

3.设u=2、v=3,计算∶

(1) 4 u v l o g v 4\frac{uv}{logv} 4logvuv

(2) ( e u + v ) 2 v 2 − u \frac{(e^u+v)^2}{v^2-u} v2u(eu+v)2

(3) ( u − 3 v ) u v \frac{\sqrt(u-3v)}{uv} uv( u3v)

>> u=2
u = 2
>> v=3
v = 3

>> 4*u*v/(log(v))
ans = 21.846

>> (exp(u)+v)^2/(v^2-u)
ans = 15.419

>> sqrt(u-3*v)/(u*v)
ans =       0 + 0.4410i

image-20220831164827535

5.判断下面语句的运算结果。

(1)4<20

(2)4<=20

(3)4=20

(4)4~=20

(5)‘b’<B’

>> 4<20
ans = 1
>> 4<=20
ans = 1
>> 4==20
ans = 0
>> 4~=20
ans = 1
>> 'b'<'B'
ans = 0

image-20220831165155349

6.设a=39、b=58、c=3、d=7,判断下面表达式的值。

(1) a>b

(2) a<c

(3) a>b&&b>c

(4) a=d

(5)a|b>c

(6)~~d

>> a=39
a = 39
>> b=58
b = 58
>> c=3
c = 3
>> d=7
d = 7

>> a>b
ans = 0

>> a<c
ans = 0

>> a>b&&b>c
ans = 0

>> a==d
ans = 0

>> a|b>c
ans = 1

>> ~~d
ans = 1

image-20220831165608878

B

1、使用方括号“[ ]”操作符产生一个列向量x,内容为1,2,9,8

>> x=[1;2;9;8]
x =

   1
   2
   9
   8

image-20220831170920076

2、使用方括号“[ ]”操作符产生一个行向量x,内容为1,2,9,8

>> x=[1,2,9,8]
x =

   1   2   9   8

image-20220831170250435

3、使用冒号“:”操作符产生一个行向量x,内容为9,7,5,3,1

>> x=[9:-2:1]
x =

   9   7   5   3   1

image-20220831171101820

4、使用方括号“[ ]”操作符产生一个二维数组A,第1行为9,3,7,1;第2行为1,4,0,7

>> A=[9,3,7,1;1,4,0,7]
A =

   9   3   7   1
   1   4   0   7

image-20220831171319923

5、逐句输入并运行以下命令,观察并记录每一步的运行结果,解释每一条语句的含义。

x=[3,2,0;-6,5,1];

Inx=find(x>=1)

[r, c]=find(x>=1)

sum(x>=2)

>> x=[3,2,0;-6,5,1]%创建一个二维数组,第一行为3,2,0,第二行-6,5,1
x =

   3   2   0
  -6   5   1

image-20220831171616691

>> Inx=find(x>=1)%返回x中大于等于1的元素的下标,按列索引,返回列向量
Inx =

   1
   3
   4
   6

image-20220831172143763

>> [r, c]=find(x>=1)%返回x中大于等于1的元素行坐标和列坐标的向量,(1,1),(1,2),(2,2),(2,3)
r =

   1
   1
   2
   2

c =

   1
   2
   2
   3

image-20220831172445331

>> sum(x>=2)%统计每列大于等于2的个数
ans =

   1   2   0

image-20220831172802425

6、设A=[1,3;2,4],B=[5,6;7,8],则A*B= ____, A.*B= ____。

>> A=[1,3;2,4];
>> B=[5,6;7,8];

>> A*B
ans =

   26   30
   38   44

>> A.*B
ans =

    5   18
   14   32

image-20220831173305267

7、在MATLAB命令窗口运行以下语句,回车后结果等于0的是( B )。

A.>>uint8(60.76) B.>>uint8(-60.76) C.>>uint8(1234.567) D.>>uint8(0.76)

image-20220831173644995

8、下列不可作为合法变量名的是( A )。

A.for B.a123 C.H_h D.xyz_2a

image-20220831173722147

9、如果x=1:2:8, 则x(1)和x(4)分别是:1、7

image-20220831173628910

11、要求计算水在温度为0℃、20℃、40℃、60℃、80℃时的黏度,已知水的黏度随温度的变化公式为:
μ = μ 0 1 + a t + b t 2 \mu=\frac{\mu_0}{1+a t+b t^2} μ=1+at+bt2μ0
其中μ为0℃水的黏度,值为1.785×10~3。a=0.03368,b=0.000221

(提示,把水的不同温度建立一个向量,再计算)

>> t=[0,20,40,60,80];
>> a=0.03368;
>> b=0.000221;
>> u0=1.785*10^(-3);
>> u=u0./(1+a*t+b*t.^2)
u =

   1.7850e-03   1.0131e-03   6.6092e-04   4.6772e-04   3.4940e-04

image-20220831175337502

12、在区间[50,100]上生成随机向量A,满足各元素为整型,均匀分布且长度为20。

>> A=round(rand(1,20)*50+50)
A =

   63   78   63   80   50   63   96   76   94   59   54   74   95   79   63   92   88   51   66   59

image-20220831175627027

13、请生成均值为87.5、方差为0.55的正态分布随机向量。

>> x=87.5+sqrt(0.55).*randn(1,100);
>> mean(x)%求均值
ans = 87.488
>> var(x)%求方差
ans = 0.5426

image-20220831181139070

14、解方程组:(请给出解题步骤)

在这里插入图片描述

>> A=[2,3,-1;8,2,3;45,3,9]
A =

    2    3   -1
    8    2    3
   45    3    9

>> b=[2;4;23]
b =

    2
    4
   23

>> a=inv(A)
a =

   0.032967  -0.109890   0.040293
   0.230769   0.230769  -0.051282
  -0.241758   0.472527  -0.073260

>> x=a*b
x =

   0.5531
   0.2051
  -0.2784

image-20220831182131488

15、使用zeros函数产生一个3*4的二维数组A,使用ones函数产生一个2*4的二维数组B,将A、B拼接成5*4的二维数组C

>> A=zeros(3,4)
A =

   0   0   0   0
   0   0   0   0
   0   0   0   0

>> B=ones(2,4)
B =

   1   1   1   1
   1   1   1   1

>> C=[A;B]
C =

   0   0   0   0
   0   0   0   0
   0   0   0   0
   1   1   1   1
   1   1   1   1

image-20220831182607185

16、使用rand函数产生一个3*4的二维数组A,寻访A矩阵中大于0.3并且小于0.7的所有元素,赋给B

>> A=rand(3,4)
A =

   0.426386   0.774643   0.251818   0.046557
   0.799538   0.545791   0.489983   0.148796
   0.766139   0.329620   0.031150   0.914178

>> B=A(A>0.3&A<0.7)
B =

   0.4264
   0.5458
   0.3296
   0.4900

image-20220831184254959

17、已知

t=0:0.1:8*3;

a=(cos(2*t+4.5)3)+(sin(0.2t+14)*4);

a1=randn(1,length(a));

a2=a+a1;

plot(a2)

a2是一个准周期的信号,求每个周期内的信号最大值及所在横轴位置。

img

r=1:240;

r1=reshape(r,30,8)

代码实现:

t=0:0.1:8*3;
a=(cos(2*t+4.5)*3)+(sin(0.2*t+14)*4);
a1=randn(1,length(a));
a2=a+a1;
plot(a2)
r=1:240;
r1=reshape(r,30,8);

%方法一
[m,p]=max(a2(r1));
m
ind=sub2ind([30 8],p,1:8)

%方法二
%{
[m,ind]=max(a2(r1));
m
[1:8]*30+ind-30
%}

%方法三
%{
max_values=max(a2(r1))
ind=[];
for k=1:1:8
  value=max_values(k);
  ind(k)=find(a2==value);
end
ind
%}

输出结果:

image-20220901075609329

image-20220901075508105

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐