Matlab基础语法篇(上)

Matlab基础语法(上)

一、基知

(一)界面介绍

(二)常用快捷键

快捷键 含义
clear 清空工作区
clc 清空命令行
%%(后面加个空格) 分节
ctrl+回车 只运行本节
F5 运行
ctrl+R 注释
ctrl+T 取消注释
ctrl+I 智能缩进
ctrl+C 终止死循环
strl+N 新建.m文件

(三)常用指令

  • 编辑器中
指令 含义
clear 清空工作区
clc 清空命令行

另:写在其中的每一行代码尾加 ; 结果不会输出到命令行窗口,不加会输出

  • 命令行窗口中
指令 含义
help ___ 调帮助文档
查看历史指令

(四)Matlab帮助系统

  1. 在Matlab官网搜索 (以sum函数为例)

    MATLAB的帮助中心: https://ww2.mathworks.cn/help/index.html


  2. 使用help指令 (以sum函数为例)

注:在有网络和无网络连接的情况下得到的信息可能会有差异

忠告:与同类软件相比,MATLAB的帮助系统非常完善,大家在未来的学习中要要善于利用MATLAB的帮助文档,去经常查阅


二、运算基础

(一)变量

在MATLAB 中变量的命名应遵循如下规则:

  • 变量名必须以字母开头,之后可以是任意的字母、数字或下划线
  • 变量名区分字母的大小写,例如a和A代表不同的变量。
  • 变量名不超过63个字符,第63个字符以后的字符将被忽略。
  • 不能定义与 MATLAB关键字同名的变量(例如if或end)。要获取关键字的完整列表,请在命令行输入iskeyword 并运行
  • 特殊变量: ans、pi、inf(1/0)/-inf(正无穷大/负无穷大)

(二)数据类型

  • 数字:整数和浮点数
  • 字符与字符串:' ' 与 " "
  • 矩阵:[ ]

(三)基本运算符的使用

针对数值、字符或者逻辑值

含义 符号
加法 +
减法 -
乘法 *
除法 /
乘方 ^

(四)练习

题目:对两个字符变量做基本变量

matlab 复制代码
ch1 = 'a';
ch2 = 'b';

ch1 - ch2

三、矩阵基础

(一)矩阵的创建

在MATLAB中,矩阵的创建方法主要有三种,分别是:直接输入法、函数创建法和导入本地文件中的数据。

(1)直接输入法

  • 适用于矩阵中元素数量较少的情况。
  • 输入矩阵时要以中括号 '[ ]' 作为标识符号,矩阵的所有元素必须都在中括号内。
  • 矩阵的同行 之间用','' '来分隔,不同行 之间用';''回车'来分隔。
matlab 复制代码
a = [1 2 3;4 5 6];
a = [1,2,3;4,5,6];

(2)函数创建法

MATLAB提供的用来生成某些特定的矩阵的函数,常用函数:

zerosoneseye。这三个函数分别用来创建全为0的矩阵全为1的矩阵单位矩阵

例:

matlab 复制代码
b = zeros(100);
c = zeros(100,99);


randrandirandn。这三个函数分别用来创建均匀分布的随机数均匀分布的随机整数标准正态分布的随机数
rand : 数的范围在0~1之间

randi : 数的范围在imin~imax之间
randn : 数随机取样至标准正态分布

matlab 复制代码
d = rand(5,6); % 数的范围在0~1之间
e = randi([1,6],1,20); % 数的范围在imin~imax之间
f = randn(5,6); % 数随机取样至标准正态分布



(3)导入本地文件中的数据

MATLAB可读取本地的文件,支持的常见格式如下

  • txt、.dat或.csv(适用于带分隔符的文本文件)
  • xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx或.ods(适用于电子表格文件)

Step1: 在当前文件夹里面创建Excel表格,命名为data.xlsx

Step2: 导入数据

(二)矩阵的修改与删除

(1)矩阵元素的修改:

直接利用等号赋值 的方法对矩阵中引用位置的元素进行修改

②使用线性索引(单下标的索引)的方式对矩阵的元素进行修改

注=:如果你在赋值时将一个或多个元素置于矩阵现有的行和列索引的边界之外 ,则会将矩阵的大小进行拓展 ,MATLAB 会将没有赋值的位置的元素白动用0填充,使其保持为完整的矩形。

matlab 复制代码
A = [1:4;2:5;3:6]
A(2,:) = 10 % 改第二行全部
A([1,3],[1,2]) = 0 % 改(1,1)、(1,2)、(3,1)、(3,2)
A(4) = 10 % 线性索引,这里即改(1,2)

A(5,6) = 888 % 添加的时候超边了会进行拓展

(2)矩阵元素的删除:

如果我们将等号右侧变成空向量[ ],则可以删除对应位置的元素。需要注意的是,通常只能删除矩阵的整行或者整列 ,否则会报错。

也可以通过线性索引 来删除矩阵的元素。使用线性索引删除后,MATLAB会将矩阵中剩下的元素按照线性索引的顺序放入到一个向量中。另外,使用线性索引可以删除任意位置的元素,不需要删除矩阵的一整行或者一整列。

matlab 复制代码
A(:,[1,end]) = [] % 删除第1列和最后一列的元素
A(1) = [] % 线性索引才可删除单个元素,但矩阵会变成向量

(三)矩阵的拼接重构重排

(1)矩阵的拼接:

  • 横向拼接 :A和B的行数相同 ,那么使用[A,B][A,B]以及 cat(2,A,B)都能将 A和 B横向拼接成一个大的矩阵
  • 纵向拼接 :A和B的列数相同 ,那么使用[A;B]以及cat(1,A,B)都能将A和B纵向拼接成一个大的矩阵。
matlab 复制代码
A = [1:4;2:5;3:6]
B = ones(3,2)
C = [A B]
matlab 复制代码
A = [1:4;2:5;3:6]
B2 = ones(2,4)
B3 = ones(3,4)
D = [A;B2;B3]

(2)矩阵的重构重排:

reshape函数:更改矩阵的形状

(reshape(A,m,n)可把n写成[ ],让系统自己推算)

matlab 复制代码
A = randi(10,2,6)
B = reshape(A,3,[]) % 先取第1列,再取第2列......,即A(:)==B(:)

sort 函数:对向量或者矩阵 进行排序,sort(A,dim),在最后面加一个输入参

数'descend',变成从大到小的降序排列

  • dim = 1 时,沿着行方向(从上至下)对矩阵的每一列升序排列
  • dim = 2 时,沿着列方向(从左至右)对矩阵的每一行升序排列
matlab 复制代码
A = randi(10,2,6)
sort(A,1)
sort(A,2)
sort(A,1,'descend')

sortrows函数:基于矩阵的某一列对矩阵进行排序,同一行的元素不会改变

sortrows(score,列),在最后面加一个输入参数'descend',变成从大到小的降序排列

就是我们要更改之后的大小

matlab 复制代码
A = randi(10,2,6)
sortrows(A,2,'descend')

四、矩阵的运算

(一)调用函数运算

例:

matlab 复制代码
A = randi(10,3,4)

sum(A,1) % 计算每一列的和
sum(A,2) % 计算每一行的和
sum(A(:)) % ==sum(sum(A))==sum(A,"all") 将A这个指针变成一个向量,计算总和
prod(A,"all")

(二)算数运算

(1)加减:

五种算数运算兼容模式 ,按对应位置元素运算

(2)乘除乘方:

  • * 和 .* 分别表示线代中的矩阵相乘两个矩阵中对应元素相乘
matlab 复制代码
A = randi(10,3,4)
B = randi(10,4,4)
A*B
C = randi(10,3,4)
D = randi(10,1,4)
C.*D
  • /(右除)、\(左除)和 ./
  • ^ 和 .^ (幂运算、乘方)
matlab 复制代码
A2 = randi(10,3,3)
A2 ^ 3 % == A * A * A

(3)转置 '(默认将复数变成共轭复数)和 .'

matlab 复制代码
B = [1 2 3+i;2-i 2 3]
B'
B.'

(三)关系运算

关系运算符可以用来比较两个数组中元素的关系,如果比较的结果为真,则MATLAB 会返回逻辑值1;如果结果为假,则会返回逻辑值0。

matlab 复制代码
A = [1:4] %先会给自己叠三行
B = ones(3,4)
A == B

相关推荐
lzb_kkk几秒前
【JavaEE】JUC的常见类
java·开发语言·java-ee
SEEONTIME几秒前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
起名字真南19 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
tyler_download31 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
小小小~31 分钟前
qt5将程序打包并使用
开发语言·qt
hlsd#32 分钟前
go mod 依赖管理
开发语言·后端·golang
小春学渗透33 分钟前
Day107:代码审计-PHP模型开发篇&MVC层&RCE执行&文件对比法&1day分析&0day验证
开发语言·安全·web安全·php·mvc
杜杜的man36 分钟前
【go从零单排】迭代器(Iterators)
开发语言·算法·golang
亦世凡华、36 分钟前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
测试界的酸菜鱼1 小时前
C# NUnit 框架:高效使用指南
开发语言·c#·log4j