数模学习:二,MATLAB的基本语法使用

注释代码:

(1)在每行语句后面加上分号,则++不显示该行代码的运算结果++。

在每行代码前加%,则该行代码会被注释掉

(2) 多行注释:

选中要注释的多行语句,按快捷键Ctrl + R

(3) 取消注释:

选中要注释的多行语句,按快捷键Ctrl + T; 也可以逐行删去%或;。

删除与清空操作:

(1) clear可以清楚工作区的所有变量;

(2)clc可以清除工作区的所有变量,让屏幕变得干净。

(3)故在很多代码开头,都会见到:

复制代码
clear; clc(注意分号也可用于区分行的作用)

这两条一起使用,起到初始化的作用,防止之前的结果对新脚本文件(后缀名是 .m )产生干扰、

输入和输出操作:

disp函数:

matlab中disp函数就是屏幕输出函数,相当于c++中的cout函数。

例如:

复制代码
disp('hello world')

字符串用单引号或双引号围起来均可

再输出一个行向量:

复制代码
a = [1,2,3];  //加分号避免直接显示该变量的值
a = [1 2 3] ;  //同一行之间可以用逗号分隔,也可以用空格分隔
disp(a)

输出一个列向量;

复制代码
a= [1;2;3];  //分号可以用来分隔每一行的元素
disp(a)

注意:disp函数比较特殊,在后面不管加不加分号都会展现输出结果;

MATLAB中两个字符串的合并:

(1) 借助strcat函数:

复制代码
strcat(str1,str2,str3,......strn) //中间用逗号隔开

(2)看成为一个向量的形式:

复制代码
['字符串1','字符串2']
或
['字符串1' '字符串2']

一个有用的字符串函数------num2str------将数字转化为字符串:

如要输出一个 "字符串 + 数字", 将数字当成字符串展示时, 一定要将其转化成字符串后再输出:

复制代码
c = 100;
disp(['c = ' c])
% 输出结果为:c= d  //通过ASCII码来解释
% 想要输出 c= 100,则应该写为:
disp(['c = ' num2str(c)])

input函数:

一般我们会将输入的数、向量、矩阵、字符串等赋给一个变量,这里我们赋给A

复制代码
A = input('请输入A:' );  %%加上分号,输入后不展示输入的值

B = input('请输入B:' )   %%不加分号,输入后展示输出的值

sum函数:

(1) 如果是向量(无论是行向量,还是列向量)都是直接求和。

复制代码
e = [1 2 3];
 sum(e)

(2) 如果是矩阵,则需要根据行和列的方向进行区分。

复制代码
%%MATLAB中矩阵的表示:
e = [1, 2; 3, 4; 5, 6]  %%矩阵同行元素用,或空格隔开,不同行之间用分号隔开


a = sum(e)
>> 9 12   %%直接对矩阵求和,实际上是按列求和,得到一个行向量;


a = sum(e, 1)   %%   dim(维度) [ dim = 1,表示按列; dim = 2,表示按行;]
>> 9 12   %%加指标1,还是按照列求和

a = sum(e, 2)   %% 加指标2 ,按照行求和,得到一个列向量
>>  3
    7
    11  
%想对整个矩阵进行求和,有两种方法:
% 法1------------按行/列求和后,再进行一次求和
 a = sum(sum(e))
%法2------  
 % e(:) 表示按照列的方向分开后再拼接起来。
 a = sum(e(:)) 

MATLAB中如何提取出矩阵中指定位置的元素:

(1) 取指定行和指定列的一个元素:

假设矩阵为A,a = A( i, j ) 表示是矩阵第i行,第j列的元素。

(2) 取指定某一行的全部元素(输出一个行向量):

a = A( i , : ) 表示是输出矩阵A 第i行的全部元素。

(3) 取指定某一列的全部元素(输出一个列向量):

a = A( : , i ) 表示是输出矩阵A 第i列的全部元素。

(4) 取指定的某些行的全部元素;

补充------MATLAB中等差数列的生成:
起始值: 等差d : 结束值

例如:

复制代码
1: 10: 100
>> 1 11 21 31 41 51 61 71 81 91

A([2,5],:)   %%只取第二行和第五行

A(2:5, :)    %%取第二行到第五行

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

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

(5) 取出全部元素:

复制代码
A(:) %按列拼接,最终输出得到一个列向量

size函数:

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

例如:

复制代码
A = [1,2,3;4,5,6];
size(A)

>>   2    3    %%该矩阵有2行,3列

若要单独返回行数或列数:

复制代码
r = size(A, 1);  %返回行数
c = size(A, 2);  %返回列数

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, 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

Matlab中矩阵的运算

1,
MATLAB在矩阵的运算中," * " 号和 " / "号代表矩阵之间的乘法与除法。
(注:矩阵的除法就是A * B矩阵的逆)

例:

复制代码
A = [1, 2; 3, 4]
B = [1,0;1,1]

A * B

>>ans =

     3     2
     7     4

2,若要实现相同形状矩阵之间对应元素之间的乘除法则需要用到点乘和点除,即

" .* " 和" ./ "。

复制代码
A = [1,2,3;4,5,6];
A .* 2

>>ans =

     2     4     6
     8    10    12

3,每个元素同时和常数乘除,既可以使用点乘和点除,也可以直接使用乘除来实现。

4,若要对矩阵的每一个元素进行乘方,既可以写成 A .* A,也可以写成A .^ 2。

求矩阵的特征值与特征向量:

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

(1) E = eig(A):求矩阵A的全部特征值,构成向量E。

复制代码
A = [1 2 3;2 2 1;2 0 3];
E = eig(A)

>>E =

   -1.3166
    5.3166
    2.0000

(2)[V,D] = eig(A):求矩阵A的全部特征值,同时构成对角阵D,并求A的特征向量构成V的列向量

(V中的每一列都是D中与之相同列的特征值的特征向量)。

复制代码
A = [1 2 3;2 2 1;2 2 3];
[V,D] = eig(A)

>>V =

   -0.5806   -0.8327    0.2322
   -0.4531    0.5309   -0.8169
   -0.6765    0.1572    0.5280

D =

    6.0561         0         0
         0   -0.8412         0
         0         0    0.7852

find函数的基本用法:

find函数可以用来返回向量或矩阵中不为0的元素的位置索引。

复制代码
>> A = [1 0 4 -3 0 0 0 8 6];
>> ind = find(A)

ind =

     1     3     4     8     9

若只返回前2个不为0的元素位置:

复制代码
ind = find(A, 2)

上面的例子是向量,若A是一个矩阵,又将怎么返回呢?

复制代码
>> A = [1 -3 0;0 0 8;4 0 6];
>> ind = find(A)

ind =

     1
     3
     4
     8
     9
%再一次印证了矩阵在matlab中的存储是按照列存储的,即:
对于矩阵A:
1  -3  0
0  0   8
4  0   6
存储方式为:
1
0
4
-3
0
0
0
8
6

假如我们需要按照行列的信息输出怎么办?

复制代码
[r,c] = find(A)  //r表示行,c表示列
>> A = [1 -3 0;0 0 8;4 0 6];
>> ind = find(A)

ind =

     1
     3
     4
     8
     9

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

r =

     1
     3
     1
     2
     3


c =

     1
     1
     2
     3
     3
即有(1,1)元素不为0,(3,1)元素不为0,(1,2)元素不为0.......

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

共有 三种判断运算符,大于 > ,小于 < , 等于 == ;

矩阵与常数的比较结果会返回一个逻辑矩阵。对应位置的1表示符合条件,0表示与条件不符

复制代码
>> A = [1 -3 0;0 0 8;4 0 6];
>> A > 0

ans =

  3×3 logical 数组

   1   0   0
   0   0   1
   1   0   1

判断语句

if所在行不需要冒号,语句的最后一定要以end结尾;中间的语句要注意缩进;

复制代码
>> a = input("请输入考试分数");

>> if a >= 85
      disp("优秀")
   elseif a >= 60
      disp("合格")
   else
      disp("挂科")
   end
相关推荐
peter67682 分钟前
kvm学习小结
学习
zcyf08091 小时前
kafka理论学习汇总
java·分布式·学习·kafka
*TQK*2 小时前
线性代数——行列式⭐
笔记·学习·线性代数
四夕白告木贞2 小时前
stm32week13
stm32·单片机·嵌入式硬件·学习
九亿AI算法优化工作室&2 小时前
结合大语言模型的机械臂抓取操作学习
人工智能·学习·语言模型·自然语言处理
我想吃余3 小时前
Linux学习笔记(一):Linux下的基本指令
linux·笔记·学习
傻欣4 小时前
代码随想录学习笔记---二叉树
笔记·学习·算法
_李小白5 小时前
【OSG学习笔记】Day 13: 事件处理——响应键盘与鼠标
笔记·学习·计算机外设