MATLAB基础篇(上)

news2024/7/5 0:34:02

一、MATLAB简介

  • MATLAB(Matrix Laboratory, 即矩阵实验室)是MathWork公司推出的一套高效率的数值计算和可视化软件.
  • MATLAB是当今科学界最具影响力、也是最具活力的软件, 它起源于矩阵运算, 并已经发展成一种高度集成的计算机语言.
  • 它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能.

A.  MATLAB发展简史

1、 MATLAB的开发单位:

      美国Mathworks公司,Cleve Moler博士

2、几个不同的发展时期

  1. 70年代末,Cleve Moler为讲授矩阵理论和数据分析编写了Linpack与Eispack软件包。
  2. 1984年,成立公司Mathworks,推出第二代MATLAB。内核用C编写。
  3. 1990年,推出系统仿真工具Simulink。
  4. 1993年,Matlab 4.0——Windows版。
  5. 1994年,Matlab 4.2——开始广受重视和应用。
  6. 1999年,Matlab 5.3——32位运算。
  7. 2000年11月,Matlab 6.0。
  8. 2001年5月,Matlab 6.1。
  9. 2002年8月,matlab 6.5—— 加入JIT加速器。

B. MATLAB的特点

  1. 一个变量可以直接当作一个矩阵。
  2.  一个元素可以直接当作一个复数。
  3.  用解释方式对程序加以执行。
  4. 数据可以通过MATLAB绘图功能实现可视化,最复杂的可视效果可以是三维坐标中的立体曲面图。
  5. 不仅能进行数值运算,还能进行符号运算及系统仿真。
  6. 有多达30多个工具箱。
  7. 与其他语言程序或应用程序有方便的接口。例如:C、Fortran、Word等。
  8. 大量繁杂的数学运算和分析可调用MATLAB的函数直接求解。
  9. “教育部全国计算机专业课程指导委员会”已将MATLAB作为推荐课程。
  • MATLAB建立在C/C++语言基础之上, 抽象程度更高, 也更加接近人类的自然语言, 因而在编写程序时可以更多关注问题的整体处理上, 而不是数据的细节处理.
  • MATLAB内置了大量的函数, 用户可以直接使用而不需要再自己编写.  由于MATLAB设计的开放性,  许多领域的专家都为MATLAB编写了各种程序工具箱.  这些工具箱提供了用户在特别应用领域所需的许多函数,  这使得用户不必花大量的时间编写程序就可以直接调用这些函数, 达到事半功倍的效果.
  • MATLAB使用非常简洁的语句来表达丰富的含义, 简单易懂, 与C/C++等高级程序设计语言相比代码量少很多, 因而编程速度快, 非常适合做数学运算.

 二、 MATLAB基本语法

  • MATLAB的基本运算对象是数组(矩阵), 即使是1个数也当作一个1×1的矩阵来看待;
  • MATLAB语法与其它高级程序设计语言相似, 符合一般的书写习惯;
  • MATLAB语句可以以分号来结束, 也可以不用. 若以分号结束,则在命令窗口中不显示计算结果, 否则显示结果;
  • 变量无需预先定义, 可在需要时直接使用;
  • MATLAB的代码区分大小写;
  • 以%作为注释界定符.

1、数组的定义

a=5  %或  a=[5]

A=[2 0 4 1]

B=[4 1 6; 5 9 4; 3 1 2]        %这是个3*3矩阵

规则1:

以方括号为界定符, 元素之间用空格或逗号分隔, 两行之间用分号分隔; 各行元素个数必须相同;

A=1:10
B=1:3:10
C=10:-1:1
X=linspace(-pi,pi,50)

对应的:
A=[1 2 3 4 5 6 7 8 9 10]
B=[1 4 7 10]
C=[10 9 8 7 6 5 4 3 2 1]
X=[-3.1416   -3.0134   -2.8851  ...  2.8851    3.0134   3.1416]

规则2:

  1.  产生等差数列使用a:s:b, 从a开始, 步长为s, 最后一个数不超过b;
  2.  linspace(a,b,n)产生n个数, 将区间[a,b]分成n-1等份.
A=zeros(3,3)     %全零
B=ones(3,3)      %全一
C=eye(3,3)       %单位矩阵

规则3:

特殊矩阵由相应的命令生成, 行数和列数在参数中指定.

A=rand(3,3)        %0~1均匀分布随机数矩阵
B=1+9*rand(3,3)    %1~10均匀分布随机数矩阵
C=randn(3,3)       %标准正态分布随机数矩阵

 规则4:

  1. a~b均匀分布随机数矩阵使用a+(b-a)*rand(m,n);
  2. a为期望b为方差的正态分布随机数矩阵使用a+b*randn(m,n).

2、数组元素的存取操作

A(1)         %这个是取向量中的第一个元素

B(1,2)      %第一行第二列元素

B(1,:)       %这是第一行所有矩阵

B(:,1)     

B(2:3,1:2)

规则:

  1. 取向量的元素使用A(n);
  2. 取矩阵的元素使用A(m,n);
  3. 取子矩阵使用A(m1:m2,n1:n2);
  4. 表示“所有” 使用“:”
  5. 使用size(A)来获取 数组 A的行数和列数
>> A=[1 3 5 7 9]
A =
     1     3     5     7     9
>> A(2)
ans =
     3
>> A(6)=11
A =
     1     3     5     7     9    11
>> A(1:end)
ans =
     1     3     5     7     9    11
>> A(end:-1:1)
ans =
    11     9     7     5     3     1
>> length(A)
ans =
     6
>> A=eye(3,3)
A =
     1     0     0
     0     1     0
     0     0     1
>> A(1,2)=2
A =
     1     2     0
     0     1     0
     0     0     1
>> A(2,:)=[1 2 3]
A =
     1     2     0
     1     2     3
     0     0     1
>> A(:,3)=A(:,2)
A =
     1     2     2
     1     2     2
     0     0     0
>> size(A)
ans =
     3     3

3、算术运算

A+B
A-B
%矩阵运算,如果参与运算的变量中有一个是标量, 则MATLAB将标量扩展成维数相同的矩阵, 与另一矩阵做运算

A*B           
A/B           
A\B
A^2
%数组运算
A.*B             %A与B元素对应相乘
A./B             %A与B元素对应相除
A.^2             %A的元素和平方

4 、数组变形

1.C=[A B]       

 
2.C=[A;B]       

 
4.C=A’               

 
4.C=repmat(A,m,n)

5.C=A(:) %将A的所有元素排成一列
6.A(1,:)=[] %删除A的第1行

>> A=eye(2,2) %产生2阶单位矩阵
A =
     1     0
     0     1
>> B=rand(2,2) %产生2阶随机数矩阵
B =
    0.9649    0.9706
    0.1576    0.9572
>> C=[A B] %矩阵横向合并
C =
    1.0000         0    0.9649    0.9706
         0    1.0000    0.1576    0.9572
>> C=[A;B] %矩阵纵向合并
C =
    1.0000         0
         0    1.0000
    0.9649    0.9706
    0.1576    0.9572
>> C=A’ %矩阵转置
C =
     1     0
     0     1
>> C=repmat(A,1,2) %矩阵重复
C =
     1     0     1     0
     0     1     0     1
>> C=A(:) %排成一列
C =
     1
     0
     0
     1
>> A(1,:)=[] %删除一行
A =
     0     1

5、举例

解线性方程组

6x1+3x2+4x3=3

 -2 x1+5 x2+7 x3=-4

8 x1-4 x2-3 x3=-7

A = [6 3 4; -2 5 7; 8 -4 -3]
B = [3;-4; -7]
X = A\B
X = A^(-1)*B
X = inv(A)*B
X = linsolve(A,B)
得到:
X =
    0.6000
    7.0000
   -5.4000

6、常用函数

分类

函数名

意义

基本数学函数

abs(x)

实数的绝对值或复数的模

sqrt(x)

开平方 

real(z)

复数z的实部 

imag(z)

复数z的虚部 

round(x)

取整,四舍五入

fix(x)

取整,无论正负,舍去小数至最近整数 

floor(x)

取整,舍去正小数至最近整数 

ceil(x)

取整,加入正小数至最近整数 

exp(x)

自然指数 

pow2(x)

2的指数 

分类

函数名

意义

基本数学函数

rem(x,y)

求x除以y的馀数 

gcd(x,y)

整数x和y的最大公因数 

lcm(x,y)

整数x和y的最小公倍数 

log(x)

以e为底的对数,即自然对数或 

log2(x)

以2为底的对数 

log10(x)

以10为底的对数

sign(x)

符号函数. 当x<0时, sign(x)=-1; 当x=0时, sign(x)=0; 当x>0时, sign(x)=1. 

分类

函数名

意义

三角函数

sin(x)

正弦函数

cos(x)

余弦函数

tan(x)

正切函数

asin(x)

反正弦函数

acos(x)

反余弦函数

atan(x)

反正切函数 

sinh(x)

双曲正弦函数

cosh(x)

双曲余弦函数

tanh(x)

双曲正切函数

asinh(x)

反双曲正弦函数

acosh(x)

反双曲余弦函数

atanh(x)

反双曲正切函数

分类

函数名

意义

杂项

min(x)

向量x的元素的最小值 

max(x)

向量x的元素的最大值 

mean(x)

向量x的元素的平均值 

diff(x)

向量x的相邻元素的差 

length(x)

向量x的元素个数

size(x)

数组元素个数

sort(x)

对向量x的元素进行排序

norm(x)

向量x的欧氏长度

sum(x)

向量x的元素总和

prod(x)

向量x的元素总乘积

cumsum(x)

向量x的累计元素总和

分类

函数名

意义

矩阵计算

det(A)

矩阵行列式

rank(A)

矩阵的秩

inv(A)

矩阵的逆

norm(A)

矩阵范数

trace(A)

矩阵的迹

eig(A)

矩阵特征值和特征向量

rref(A)

化为行阶梯形

cond(A)

矩阵条件数

lu(A)

LU分解

chol(A)

Cholesky分解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级python环境配置(anaconda+pycharm+cuda+cudnn+pytorch)

文章目录 前言一、如何下载anaconda1、下载网址2、版本选择3、下载流程4、注意事项 二、如何下载pycharm1、下载网址2、下载流程 三、更新NVIDIA驱动1、下载网址2、选择相应配置进行下载 四、如何下载cuda1、查看可安装的cuda版本号2、下载网址3、下载流程4、注意事项 五、如何…

牛客网数据库sql实战基础知识

sql基础知识 1.concat(a,“-”,b)&#xff1a; 将a和b列&#xff0c;连接成字符串&#xff0c;用-分割后输出成一列。&#xff08;分隔符在参数中间&#xff09; 2.insert into values(),()&#xff1a; 插入多列时用逗号分割&#xff0c;不需要在最外层加再加括号。 3.inse…

工信部新材料大数据创新联盟成立,龙讯旷腾作为首批会员单位参与大会

近日&#xff0c;“新材料大数据创新联盟”成立大会暨第一届理事会在京召开。为深入贯彻国家创新驱动发展战略&#xff0c;联盟在工业和信息化部指导下&#xff0c;由北京科技大学、中国钢研科技集团有限公司、中关村材料试验技术联盟联合材料和信息技术领域重点高校、科研院所…

浅学CSS

目录 CSS 是什么 基本语法规范 引入方式 内部样式表 行内样式表 外部样式 代码风格 样式格式 样式大小写 空格规范 选择器 选择器的功能 选择器的种类 基础选择器 标签选择器 类选择器 id 选择器 通配符选择器 基础选择器小结 复合选择器 后代选择器 子选…

<C语言> 指针(上)

1.指针是什么&#xff1f; 指针&#xff08;Pointer&#xff09;是一种特殊的变量类型&#xff0c;它存储了一个内存地址。可以将指针视为存储了另一个变量的地址的变量。通过指针&#xff0c;可以直接访问和修改内存中的数据。 指针提供了一种间接访问内存的方式&#xff0c…

SpringCloud源码探析(七)-整合Elasticsearch

1.概述 ElasticSearch是一个基于Lucene的搜索服务器&#xff0c;提供了一个分布式多用户能力的全文搜索引擎。它是基于JAVA语言开发&#xff0c;并且是基于RESTful web接口进行查询和结果返回&#xff0c;是一款非常流行的企业级搜索引擎。Elasticsearch的核心功能包括存储数据…

Redis缓存问题与缓存更新机制

目录 ​编辑 一、缓存问题 1.1 缓存穿透 1.1.1 问题来源 1.1.2 解决方案 1.1.2.1 缓存空对象 1.1.2.2 使用布隆过滤器 1.2 缓存击穿 1.2.1 问题来源 1.2.2 解决方案 1.2.2.1 设置热点数据永远不过期 1.2.2.2 新增后台定时更新缓存线程&#xff08;逻辑不过期&#xff09; 1.2.…

详解Java Synchronized锁升级原理

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;JAVA多线程 &#x1f96d;本文内…

蓝桥杯专题-试题版含答案-【猴子吃桃问题】【小光棍数】【九九乘法表】【谁是最好的Coder】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

(Linux) 套接字socket基础

文章目录 前言基本原理 Codeserverclient 核心函数socketbindlistenacceptrecvsendconnectclose 多线程改进END 前言 本文将以纯C语言描述&#xff0c;编译器gcc。 C/C没有标准的网络库&#xff0c;因为都需要用到各个平台的接口才行。 本文讲解Linux下最基础的socket编程&a…

uniapp 常用提示弹框整理

一. 加载提示弹框 在执行数据查询、页面数据渲染等过程中弹出提示。以页面渲染为例&#xff1a; //前端数据请求时&#xff0c;显示加载提示弹框 uni.showLoading({title: 加载中... }); // 数据从后端接口返回后&#xff0c;提示弹框关闭 uni.hideLoading();效果如下&#x…

Sui Builder House京都站|创意大赛获奖名单公布

Sui Builder House京都站于6月30日&#xff08;周五&#xff09;圆满结束&#xff0c;这是一次Sui生态系统项目演示和展示各自产品的良好机会。构建者们向大家展示了游戏、NFT、DeFi和基础设施赛道的项目&#xff0c;同时现场演讲还介绍了Sui的最新进展以及有关AI和用户体验设计…

React环境安装配置

React环境安装配置 一、前提二、React安装 一、前提 安装本地React环境需要Node.js&#xff0c;如果具有Node环境跳过即可。如果没有安装则可参考该篇文章安装Node环境&#xff0c;点击查看 二、React安装 全局安装React 首先打开命令行&#xff0c;建议以管理员身份输入命…

20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)

20230704测试STC32G实验箱9.6&#xff08;STC32G12K128&#xff09;开发板的虚拟串口&#xff08;C语言深入了解&#xff09; 06第五集&#xff1a;C语言运算符和进制数入门上.mp4 07第五集&#xff1a;C语言运算符和进制数入门下.mp4 2023/7/4 19:00 下次 在【冲哥】录视频的时…

024、数据库管理之数据同步工具TiCDC

TiCDC TiCDCTiCDC介绍架构与原理适用场景对已有TiDB进行扩容部署TiCDC管理工具TiCDC同步任务查询所有TiCDC同步任务查询TiCDC指定的同步任务管理TiCDC同步任务动态更新任务监控TiCDC 实验数据同步完整实操缩容当前TiCDC节点 TiCDC TiCDC介绍 TiCDC 是一款通过拉取 TiKV 变更日…

leetcode 42-接雨水

解法一&#xff1a;双指针&#xff08;暴力按列计算&#xff09; 首先&#xff0c;如果按照列来计算的话&#xff0c;宽度一定是1了&#xff0c;我们再把每一列的雨水的高度求出来就可以了。 可以看出每一列雨水的高度&#xff0c;取决于该列左侧最高的柱子和右侧最高的柱子中…

VMware虚拟机的基本操作:快照和克隆

VMware虚拟机的基本操作 一、虚拟机快照二、克隆 一、虚拟机快照 “快照”是虚拟机磁盘文件&#xff08;VMDK&#xff09;在某个点及时的副本。系统崩溃或系统异常&#xff0c;你可以通过使用恢复到快照来保持磁盘文件系统和系统存储。当升级应用和服务器及给它们打补丁的时候…

一桩关于Json序列化引发的惨案(Go系统)

文章目录 前言突然崩了排查问题关于go的json库什么是反射 解决大结构体序列化的性能问题干掉大结构体减少反射使用一些好用的第三方序列化包 自定义序列化 写在最后 前言 一个风和日丽的下午&#xff0c;线上系统突然开始报警&#xff08;系统温馨提示&#xff0c;您的服务接口…

部署Git服务器

哈喽&#xff0c;大家好&#xff0c;本次为大家演示如何部署git服务器. 首先要准备gitea和phpstudy_pro phpstudy一路nest即可&#xff0c;可以帮你安装mysql和阿帕奇。 登录127.0.0.1:3000注册gitea即可。 如何在上传公钥的时候出现500的错误&#xff0c;加入这句便可解决…

SpringBoot+Vue+Element-ui实现文件下载

目录 1.后端代码部分 2.前端代码部分 3.效果展示 1.后端代码部分 GetMapping("downloadFile")public void downloadFile(RequestParam("filename") String filename,HttpServletResponse response) throws Exception {// 告知浏览器这是一个字节流&…