清风数学建模matlab学习笔记

目录

一、matlab基本小常识(使用英文标点符号)

1.1 分号

1.2 注释

1.3 清除

二、输出和输入函数

2.1 disp函数

2.2 字符串合并

2.3 将数字转化为字符串

三、SUM函数

3.1 向量求和

3.2 矩阵求和

四、matlab提取矩阵中指定的元素

4.1 取指定行和列的元素

4.2 取指定某一行的全部元素

4.3 取指定的某一列的全部元素

4.4 取指定的某些行的全部元素

4.5 取全部元素

五、size函数

六、repmat函数

七、matlab中矩阵的运算

7.1 矩阵间的乘法(*  )

7.2 求逆矩阵(  inv()  )

7.3 矩阵间的除法(/    inv() )

7.4 两个形状相同的矩阵对应元素之间的乘除法(.*   ./)

7.5 矩阵中每个元素和常数相乘相除(*    .*     /     ./)

7.6 矩阵内每个元素同时乘方(.^)

八、matlab中求矩阵的特征值和特征向量

8.1 求矩阵的特征值

8.2 求矩阵的特征向量

九、find函数的基本用法

9.1 返回向量中不为0的元素的位置索引

9.2 返回矩阵中不为0的元素的位置索引

十、矩阵与常数的大小判断运算

十一、判断语句


非原创,听清风数学建模做的笔记,曾学过C语言、Python,但在matlab上是小白一枚~ 

一、matlab基本小常识(使用英文标点符号)

1.1 分号

% 在每一行的语句后面加上分号表示不显示运行结果
a = 3;

>> a = 3;
>> 


a = 5

>> a = 5

a =

     5

1.2 注释

% (1)多行注释:选中要注释的若干语句,快捷键Ctrl+R
% a = 3;
% a = 5

% (2)取消注释:选中要取消注释的语句,快捷键Ctrl+T
 

1.3 清除

% clear可以清楚工作区的所有变量
clear

% clc可以清除命令行窗口中的所有文本,让屏幕变得干净
clc

% 这两条一起使用,起到“初始化”的作用
clear;clc  

二、输出和输入函数

2.1 disp函数

% matlab中disp()就是屏幕输出函数,类似于c语言中的printf()函数
 

>> disp('我是清风,大家好鸭~~~记得投币关注我哦')
我是清风,大家好鸭~~~记得投币关注我哦

a = [1,2,3]    %同一行中间用逗号分隔,也可以不用逗号,直接用空格
a = [1 2 3]

>> a = [1,2,3]

a =

     1     2     3

>> a = [1 2 3]

a =

     1     2     3

disp(a) 
% 注意,disp函数比较特殊,这里可要分号,可不要分号哦。在每一行的语句后面加上分号,表示不显示结果,但是disp()函数比较特殊,加不加分号,都显示运算结果。因为disp()功能就是在屏幕中打出字符串。
disp(a);

>> disp(a)
     1     2     3

>> disp(a);
     1     2     3

2.2 字符串合并

% matlab中两个字符串的合并有两种方法

% (1)strcat(str1,str2……,strn) 
 strcat('字符串1','字符串2') 

>> strcat('字符串1','字符串2')

ans =

字符串1字符串2

% (2)[str 1,str 2,……, str n]或[str1  str2  ……  strn]
['字符串1'  '字符串2']
['字符串1','字符串2']

>> ['字符串1'  '字符串2']
['字符串1','字符串2']

ans =

字符串1字符串2


ans =

字符串1字符串2

2.3 将数字转化为字符串

% 一个有用的字符串函数:num2str  将数字转换为字符串
c = 100
num2str(c)
disp(['c的取值为' num2str(c)])
disp(strcat('c的取值为', num2str(c)))
 

>> c = 100

c =

   100

>> num2str(c)

ans =

100

>> disp(['c的取值为' num2str(c)])
c的取值为100
>> disp(strcat('c的取值为', num2str(c)))
c的取值为100

disp(['c的取值为' c])  %这里c并不是字符串,而是数字,num2str(c)才是字符串
disp(c)  %输出的是c这个数字

>> disp(['c的取值为' c])
c的取值为d
>> disp(c)
   100

2.4 input函数

% 一般我们会将输入的数、向量、矩阵、字符串等赋给一个变量,这里我们赋给A
A = input('请输入A:');
B = input('请输入B:')
% 注意观察工作区,并体会input后面加分号和不加分号的区别。输入A之后,屏幕没有反应,因为我们在语句后加了分号,加了分号就不显示运算的结果;但是如果观察工作区就会发现,有新生成变量A。

>> A = input('请输入A:');
请输入A:1000
>> 
>> B = input('请输入B:')
请输入B:2000

B =

        2000

三、SUM函数

3.1 向量求和

% 如果是向量(无论是行向量还是列向量),都是直接求和
E = [1,2,3]
sum(E)
E = [1;2;3]
sum(E)

>> E = [1,2,3]
sum(E)

E =

     1     2     3


ans =

     6

>> E = [1;2;3]
sum(E)

E =

     1
     2
     3


ans =

     6

3.2 矩阵求和

%  如果是矩阵,则需要根据行和列的方向作区分

E = [1,2;3,4;5,6]
% a=sum(x); %按列求和(得到一个行向量)
a = sum(E)
a = sum(E,1)

>> E = [1,2;3,4;5,6]

E =

     1     2
     3     4
     5     6

>> a = sum(E)

a =

     9    12

>> a = sum(E,1)

a =

     9    12

% a=sum(x,2); %按行求和(得到一个列向量)
a = sum(E,2)

>> E = [1,2;3,4;5,6]

E =

     1     2
     3     4
     5     6

>> a = sum(E,2)

a =

     3
     7
    11

% a=sum(x(:));%对整个矩阵求和
a = sum(sum(E))
a = sum(E(:))

>> E = [1,2;3,4;5,6]

E =

     1     2
     3     4
     5     6

>> a = sum(sum(E))

a =

    21

>> a = sum(E(:))

a =

    21

% E(:) 表示把矩阵转变为一个列向量

>> E = [1,2;3,4;5,6]

E =

     1     2
     3     4
     5     6

>> E(:)

ans =

     1
     3
     5
     2
     4
     6

四、matlab提取矩阵中指定的元素

4.1 取指定行和列的元素

A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A
A(2,1)
A(3,2)

>> A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(2,1)

ans =

     1

>> A(3,2)

ans =

    0.2500

4.2 取指定某一行的全部元素

% 取指定的某一行的全部元素(输出的是一个列向量)
A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];A
A(2,:)
A(5,:)

>> A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(2,:)

ans =

    1.0000    1.0000    4.0000    0.3333    3.0000

>> A(5,:)

ans =

    0.3333    0.3333    2.0000    0.3333    1.0000

4.3 取指定的某一列的全部元素

% 取指定的某一列的全部元素(输出的是一个列向量)
A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];A
A(:,1)
A(:,3)

>> A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(:,1)

ans =

    1.0000
    1.0000
    0.2500
    3.0000
    0.3333

>> A(:,3)

ans =

     4
     4
     1
     3
     2

4.4 取指定的某些行的全部元素

% 取指定的某些行的全部元素(输出的是一个矩阵)
A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];A
A([2,5],:)      % 只取第二行和第五行(一共2行)
A(2:5,:)        % 取第二行到第五行(一共4行)
A(2:2:5,:)     % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)

>> A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A([2,5],:)

ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(2:5,:)

ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(2:2:5,:)     % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)

ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    3.0000    3.0000    3.0000    1.0000    3.0000


1:3:10
10:-1:1

>> 1:3:10

ans =

     1     4     7    10

>> 10:-1:1

ans =

    10     9     8     7     6     5     4     3     2     1


A(2:end,:)      % 取第二行到最后一行
A(2:end-1,:)    % 取第二行到倒数第二行

>> A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(2:end,:)

ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(2:end-1,:)

ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000

4.5 取全部元素

% 取全部元素(按列拼接的,最终输出的是一个列向量)
A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];A
A(:)

>> A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000

>> A(:)

ans =

    1.0000
    1.0000
    0.2500
    3.0000
    0.3333
    1.0000
    1.0000
    0.2500
    3.0000
    0.3333
    4.0000
    4.0000
    1.0000
    3.0000
    2.0000
    0.3333
    0.3333
    0.3333
    1.0000
    0.3333
    3.0000
    3.0000
    0.5000
    3.0000
    1.0000

五、size函数

% size(A)函数是用来求矩阵A的大小的,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数

A = [1,2,3;4,5,6]
B = [1,2,3,4,5,6]
size(A)
size(B)

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

A =

     1     2     3
     4     5     6

>> size(A)

ans =

     2     3
>> B = [1,2,3,4,5,6]

B =

     1     2     3     4     5     6

>> size(B)

ans =

     1     6

% 将矩阵A的行数返回到第一个变量r,将矩阵的列数返回到第二个变量c

[r,c] = size(A)

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

A =

     1     2     3
     4     5     6

>> [r,c] = size(A)

r =

     2


c =

     3

r = size(A,1)  %返回行数
c = size(A,2) %返回列数

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

A =

     1     2     3
     4     5     6

>> r = size(A,1)

r =

     2

>> c = size(A,2)

c =

     3

六、repmat函数

% B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。
A = [1,2,3;4,5,6]
B = repmat(A,2,1)
B = repmat(A,3,2)

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

A =

     1     2     3
     4     5     6

>> B = repmat(A,2,1)

B =

     1     2     3
     4     5     6
     1     2     3
     4     5     6

>> B = repmat(A,3,2)

B =

     1     2     3     1     2     3
     4     5     6     4     5     6
     1     2     3     1     2     3
     4     5     6     4     5     6
     1     2     3     1     2     3
     4     5     6     4     5     6

七、matlab中矩阵的运算

7.1 矩阵间的乘法(*  )

% MATLAB在矩阵的运算中,“*”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B))
A = [1,2;3,4]
B = [1,0;1,1]
A * B

>> A = [1,2;3,4]

A =

     1     2
     3     4

>> B = [1,0;1,1]

B =

     1     0
     1     1

>> A * B

ans =

     3     2
     7     4

7.2 求逆矩阵(  inv()  )

inv(B)  % 求B的逆矩阵

>> B = [1,0;1,1]

B =

     1     0
     1     1

>> inv(B)

ans =

     1     0
    -1     1

7.3 矩阵间的除法(/    inv() )

% MATLAB在矩阵的运算中,“*”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B))

B * inv(B)
A * inv(B)
A / B

>> B = [1,0;1,1]

B =

     1     0
     1     1

>> inv(B)

ans =

     1     0
    -1     1

>> B * inv(B)

ans =

     1     0
     0     1
>> A = [1,2;3,4]

A =

     1     2
     3     4

>> B = [1,0;1,1]

B =

     1     0
     1     1

>> inv(B)

ans =

     1     0
    -1     1

>> A * inv(B)

ans =

    -1     2
    -1     4

>> A / B

ans =

    -1     2
    -1     4

7.4 两个形状相同的矩阵对应元素之间的乘除法(.*   ./)

% 两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./”
A = [1,2;3,4]
B = [1,0;1,1]
A .* B
A ./ B

>> A = [1,2;3,4]

A =

     1     2
     3     4

>> B = [1,0;1,1]

B =

     1     0
     1     1

>> A .* B

ans =

     1     0
     3     4

>> A ./ B

ans =

     1   Inf
     3     4

7.5 矩阵中每个元素和常数相乘相除(*    .*     /     ./)

% 每个元素同时和常数相乘或相除操作都可以使用
A = [1,2;3,4]
A * 2
A .* 2
A / 2 
A ./ 2

>> A = [1,2;3,4]

A =

     1     2
     3     4

>> A * 2

ans =

     2     4
     6     8

>> A .* 2

ans =

     2     4
     6     8

>> A / 2

ans =

    0.5000    1.0000
    1.5000    2.0000

>> A ./ 2

ans =

    0.5000    1.0000
    1.5000    2.0000

7.6 矩阵内每个元素同时乘方(.^)

% 每个元素同时乘方时只能用 .^
A = [1,2;3,4]
A .^ 2

>> A = [1,2;3,4]

A =

     1     2
     3     4

>> A .^ 2

ans =

     1     4
     9    16

A ^ 2 
A * A

>> A = [1,2;3,4]

A =

     1     2
     3     4

>> A .^ 2

ans =

     1     4
     9    16

>> A ^ 2

ans =

     7    10
    15    22

>> A * A

ans =

     7    10
    15    22

八、matlab中求矩阵的特征值和特征向量

8.1 求矩阵的特征值

% 在Matlab中,计算矩阵A的特征值和特征向量的函数是eig(A)

A = [1 2 3 ;2 2 1;2 0 3]
% E=eig(A):求矩阵A的全部特征值,构成向量E。
E=eig(A)

>> A = [1 2 3 ;2 2 1;2 0 3]

A =

     1     2     3
     2     2     1
     2     0     3

>> E=eig(A)

E =

   -1.3166
    5.3166
    2.0000

8.2 求矩阵的特征向量

A = [1 2 3 ;2 2 1;2 0 3]

E=eig(A)

% [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)
[V,D]=eig(A)

>> A = [1 2 3 ;2 2 1;2 0 3]

A =

     1     2     3
     2     2     1
     2     0     3

>> E=eig(A)

E =

   -1.3166
    5.3166
    2.0000

>> [V,D]=eig(A)

V =

    0.8364   -0.6336   -0.2408
   -0.3875   -0.5470   -0.8427
   -0.3875   -0.5470    0.4815


D =

   -1.3166         0         0
         0    5.3166         0
         0         0    2.0000

九、find函数的基本用法

9.1 返回向量中不为0的元素的位置索引

% find函数,它可以用来返回向量或者矩阵中不为0的元素的位置索引。
clc;X = [1 0 4 -3 0 0 0 8 6]
ind = find(X)

>> X = [1 0 4 -3 0 0 0 8 6]

X =

     1     0     4    -3     0     0     0     8     6

>> ind = find(X)

ind =

     1     3     4     8     9


% 其有多种用法,比如返回前2个不为0的元素的位置:
ind = find(X,2)

X =

     1     0     4    -3     0     0     0     8     6

>> ind = find(X,2)

ind =

     1     3

9.2 返回矩阵中不为0的元素的位置索引

%上面针对的是向量(一维),若X是一个矩阵(二维,有行和列),索引该如何返回呢?
X = [1 -3 0;0 0 8;4 0 6]
ind = find(X)

>> X = [1 -3 0;0 0 8;4 0 6]

X =

     1    -3     0
     0     0     8
     4     0     6

>> ind = find(X)

ind =

     1
     3
     4
     8
     9


% 这是因为在Matlab在存储矩阵时,是一列一列存储的,我们可以做一下验证:
X(4)

>> X = [1 -3 0;0 0 8;4 0 6]

X =

     1    -3     0
     0     0     8
     4     0     6

>> X(4)

ans =

    -3

% 假如你需要按照行列的信息输出该怎么办呢?
[r,c] = find(X)
[r,c] = find(X,1) %只找第一个非0元素

>> X = [1 -3 0;0 0 8;4 0 6]

X =

     1    -3     0
     0     0     8
     4     0     6

>> [r,c] = find(X)

r =

     1
     3
     1
     2
     3


c =

     1
     1
     2
     3
     3
 
>> X = [1 -3 0;0 0 8;4 0 6]

X =

     1    -3     0
     0     0     8
     4     0     6

>> [r,c] = find(X,1) %只找第一个非0元素

r =

     1


c =

     1

十、矩阵与常数的大小判断运算

% 共有三种运算符:大于> ;小于< ;等于 ==  (一个等号表示赋值;两个等号表示判断)
clc
X = [1 -3 0;0 0 8;4 0 6]
X > 0
X == 4

>> X = [1 -3 0;0 0 8;4 0 6]

X =

     1    -3     0
     0     0     8
     4     0     6

>> X > 0

ans =

     1     0     0
     0     0     1
     1     0     1

>> X == 4

ans =

     0     0     0
     0     0     0
     1     0     0

十一、判断语句

% Matlab的判断语句,if所在的行不需要冒号,语句的最后一定要以end结尾 ;中间的语句要注意缩进。
a = input('请输入考试分数:')
if a >= 85  
    disp('成绩优秀')
elseif a >= 60 
    disp('成绩合格')
else
    disp('成绩挂科')
end
 

>> a = input('请输入考试分数:')
if a >= 85  
    disp('成绩优秀')
elseif a >= 60 
    disp('成绩合格')
else
    disp('成绩挂科')
end
请输入考试分数:77

a =

    77

成绩合格

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值