天天看点

matlab求两向量夹角_matlab入门练习

练习题来自:

湖心亭:MATLAB基础练习(一)​zhuanlan.zhihu.com

matlab求两向量夹角_matlab入门练习
1、按要求写出实现该功能的代码

(1)使用方括号“[ ]”操作符产生一个列向量x,内容为1,2,4,7

(2)使用方括号“[ ]”操作符产生一个行向量x,内容为1,2,4,7

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

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

>> b = [1;2;4;7]

b =

     1
     2
     4
     7

>> a =[1,2,4,7]

a =

     1     2     4     7


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

c =

     9     7     5     3     1


>> d = [9,4,5,1;1,0,4,7]

d =

     9     4     5     1
     1     0     4     7
           

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

>> a = zeros(3,2)

a =

     0     0
     0     0
     0     0

>> b = ones(3,4)

b =

     1     1     1     1
     1     1     1     1
     1     1     1     1

>> c=[a b]

c =

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

(6)使用rand函数产生一个3*4的二维数组A,使用逻辑1标识的方式寻访A矩阵中大于0.3并且小于0.7的所有元素,赋给B

>> a = rand(3,4)

a =

    0.0975    0.9575    0.9706    0.8003
    0.2785    0.9649    0.9572    0.1419
    0.5469    0.1576    0.4854    0.4218

>> b = [a>0.3 & a<0.7]

b =

  3×4 logical 数组

   0   0   0   0
   0   0   0   0
   1   0   1   1
           
2、练习矩阵定位函数find的使用

逐句输入并运行以下命令,观察每一步的运行结果,弄明白每一条语句的含义。

clear;

X=[3 2 0; -5 6 1]

indices =find(X>=1) %%语句1

[row,col] =find(X>=1) %%语句2

>> clear;
>> X = [3 2 0;-5 6 1]

X =

     3     2     0
    -5     6     1

>> indices = find(X>=1) %%语句1

indices =

     1
     3
     4
     6

>> [row,col] = find(X>=1)

row =

     1
     1
     2
     2


col =

     1
     2
     2
     3
           
3、练习子矩阵的赋值、删除等操作

已知:A =

1 25 7 20

14 23 6 18

12 23 15 16

20 10 5 9

在MATLAB中给A赋值并完成以下操作:

(1) 给A中第6个元素赋值为100;

(2) 给A的第五列赋值[1,2,3,4];

(3) 将矩阵A第2—4行中第1,3,5列元素赋值给矩阵B;

(4) 求矩阵A的大小(行列数);

(5) 将A赋值给矩阵C,删除C的第一行和第三行并显示;

(6) 将矩阵A重排成5行4列的矩阵(提示:查找reshape函数的帮助)。

>> A = [1 25 7 20;14 23 6 18;12 23 15 16;20 10 5 9]

A =

     1    25     7    20
    14    23     6    18
    12    23    15    16
    20    10     5     9

>> A(6)=100

A =

     1    25     7    20
    14   100     6    18
    12    23    15    16
    20    10     5     9

>> A(:,end+1)=[1;2;3;4]

A =

     1    25     7    20     1
    14   100     6    18     2
    12    23    15    16     3
    20    10     5     9     4

>> B = A(2:4,[1,3,5])

B =

    14     6     2
    12    15     3
    20     5     4

>> size(A)

ans =

     4     5

>> 
>> C=A

C =

     1    25     7    20     1
    14   100     6    18     2
    12    23    15    16     3
    20    10     5     9     4

>> C([1,3],:)=[]

C =

    14   100     6    18     2
    20    10     5     9     4

>> A

A =

     1    25     7    20     1
    14   100     6    18     2
    12    23    15    16     3
    20    10     5     9     4

>> A=reshape(A,5,4)

A =

     1   100    15     9
    14    23     5     1
    12    10    20     2
    20     7    18     3
    25     6    16     4

           
4、练习常用函数的使用:

逐句输入并运行以下命令,观察每一步的运行结果。

(1)

x=[3,2,1,0]

a=length(x)

b=size(x,

1

)%%

行数

c=size(x,

2

)%%

列数

s=sum(x)

x = [3 2 1 0]
x =

     3     2     1     0

>> a = length(x)

a =

     4

>> b = size(x,1)

b =

     1

>> c = size(x,2)

c =

     4

>> s = sum(x)

s =

     6

           

(2)

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

b=size(x,1)

c=size(x,2)

d=size(x,3)%%

如果维度小于3则返回1

s=sum(x)

s2=sum(x(:))

>> x=[3 2 1 0;5 6 8 7]

x =

     3     2     1     0
     5     6     8     7

>> b=size(x,1)

b =

     2

>> c=size(x,2)

c =

     4

>> d=size(x,3)

d =

     1

>> s=sum(x)

s =

     8     8     9     7

>> s2=sum(x(:))

s2 =

    32
           
5、按要求编写fun函数:

函数输入参数:一个向量

函数输出参数:该向量中所有大于0的元素的和

功能:求该向量中所有大于0的元素的和

函数调用示例:s=fun([-1, 0, 2, 3, -5, 4])

function [count]=fun(a)
length=size(a(:));
count=0;
for i=1:length
    if a(i)>0
        count=count+a(i);
    end
end