MATLAB

  • 一、安装的目录结构
  • 二、常用的菜单及工具
    • 布局
    • 设置路径
    • 设置工作路径
  • 三、常用命令
  • 四、 基础知识
    • 数据类型
      • 复数类型
      • `inf 和 NaN`
      • 字符与字符串
    • 函数句柄
    • 结构体
      • 结构体的构建
      • 访问结构体数组的数据
    • 单元数组类型
      • 单元数组的构造
      • 单元数组的读取
      • 单元数组的删除
  • 五、矩阵的基本操作
    • 矩阵的构造
      • 简单矩阵构造
      • 特殊矩阵构造
      • 向量的构造
    • 矩阵的合并
      • 简单合并
      • 函数
    • 矩阵下标引用
      • 交换矩阵行,列元素
    • 矩阵的结构变化
    • 稀疏矩阵
      • 创建:
      • 查看稀疏矩阵
  • 六、运算符和特殊符号
    • 算数运算符
  • 七、字符串处理函数
    • 创建字符数组
    • 创建字符串单元数组
    • 字符串比较函数
    • 字符串的查找与替换
    • 字符串类型与数字类型转换函数

一、安装的目录结构

文件夹 描述
\bin 系统中的可执行的相关文件
\extern 外部程序接口的工具
\help 帮助系统
\ja 国际化文件
\java java支持程序
\notebook 是一个兼备数学计算、图形显示和文字处理功能的集成环境
\sys 所需要的工具和操作系统
\toolbox 各种工具箱
\uninstall 卸载程序
rtw Real-Time-Workshop 软件包
simulink 用于动态模拟、仿真和分析
stateflow 用于状态机设计的功能强大的图形化开发和设计工具

二、常用的菜单及工具

布局

在布局中可以设置窗口的布局。

设置路径

如果你写了一个函数或者脚本在别的文件夹中,那么可以在设置路径中,将其加入到MATLAB的搜索路径上来。

设置工作路径

简单来说就是文件保存的地方。

三、常用命令

命令 说明
cd 显示或改变当前工作目录
dir 显示当前目录或指定目录下的文件
clc 可以清除命令窗口显示的内容,但并不清除工作空间。
clf 清除图形窗口
clear 清理内存变量,将所有的都会清空(要小心)
echo 工作窗信息显示开关
disp 显示变量或者文章内容(就是变量里面对应得值)
! 调用DOS命令
save 保存变量到指定文件
load 加载指定文件的变量
home 将光标移至命令窗口的最左上角

当命令后面有分号时,按Enter键,不会显示运行结果,所有可以用来进行多行输入。

四、 基础知识

数据类型

MATLAB中,每种基本数据类型均以矩阵的形式出现,该矩阵可以是0*0矩阵到任意大小的n维矩阵。如图

复数类型

复数包含独立的两个部分,即实部和虚部。

虚部可以用 i 或 j 表示。
产生复数有以下几种方法:

  1. 赋值语句
a = 5 +10i;
  1. 函数complex
x = 5;
y = 10;
z = complex(x,y);

其中 x为实部,y为虚部。也可以这样

x = 5;
z = complex(x);

x为实部,虚部为0.

inf 和 NaN

int 可以表示正无穷大,-inf表示负无穷大。
NaN 表示一个既不算是实数也不是复数的数值。
0/0 , inf / inf 结果都为 NaN

字符与字符串

规定用char表示一个字符。一个char类型的1*你数组则可以称为字符串。

常用的的两种表示字符串的方法;

  1. 用一对单引号
 str = 'hello word'
  1. char函数构造一个字符串
 str = char([97,98])

函数句柄

matlab函数句柄就是c语言里面的函数指针,在matlab里面叫它handle,句柄嘛,有了它就可以操纵这个对象(这里也可以叫做函数),这个概念其实可以推广到很多东西,图形fig,自定义函数句柄(也就是下面将会展示的),matlab自带函数句柄,以及某些函数返回的函数句柄,某些类对象或者表达式,也可以叫做句柄。

1、何为函数句柄?

函数句柄也是MATLAB中的一种常见的数据类型,

它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C++),或者函数引用(Perl)。

它的作用是将一个函数封装成一个变量,使其能够像其它变量一样在程序的不同部分传递。。引入函数句柄可使函数调用变得更加灵活方便,极大地提高了函数调用的速度和效率。MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便地调用,提高函数的可用性和独立性.

2、函数句柄的创建:

方式①:直接加@

语法:@函数名fun1 = @sin;

方式②:str2func函数

语法:str2fun(‘函数名’)
fun2 = str2func(‘cos’);

方式③:str2func函数

语法:@(参数列表)单行表达式
    fun3 = @(x, y)x.^2 + y.^2;

结构体

结构体的构建

方法一:利用赋值语句。

personel.name = 'lili';
personel.score = 99;
personel.salary = [100,4566,1];

输出personel会得到

personel = 包含以下字段的 struct:name: 'lili'score: 99salary: [100 4566 1]

还可以用以下语句将结构体数组扩展成1*2的结构体。意思就是一行两列。相当于结构体数组嘛。

personel(2).name = 'lili';
personel(2).score = 99;
personel(2).salary = [100,4566,1];

如此personel(1)对应得值就为空矩阵。

方法二:利用struct函数

基本调用语法 strArray = struct('field' , vall,...)

调用的方法:

  1. 方法一:单独使用
personel(3) = struct('name','lili','score',45.2,'salary',[4512,554])
  1. repmat()函数配合使用
repmat(struct('name','lili','score',45.2,'salary',[4512,554]),1,3)

如此数组中的所有元素具有和输入一样的内容

  1. struct 函数的输入为单元数组
struct('name',{'lili','dana','jone'},'score',{45.2,48.4,45.8},'salary',{[4512,554],[],[]})

结构体的属性由单元数组指定。

结果:

访问结构体数组的数据

  1. 访问结构体数组的某个元素的某个元素的某个属性。
personel(2).name;
  1. 访问结构体数组的某个元素的某个元素的某个属性的元素值。
personel(2).salar(3);
  1. 访问结构体数组的所有元素的某个元素的某个属性的元素值。
personel.name;

单元数组类型

就类似于c语言中的数组,只不过数组的类型是任意的。就有点像Python 的列表。

单元数组的构造

1. 左标志法。
就是把单元标志{}放到左边,例如下面构建一个1*2 的单元数组。

c{1,1} = 'csdn';
c{1,2} = eye(3,3);

2. 右标志法。

c(1,1) = {'csdn'};
c(1,2) = {eye(3,3)} ;

以上的还可以简化成

c = {'csdn',eye(3,3)}

单元数组的读取

  1. 读取单个
str = c{1,1}
  1. 读取多个
c(2,:)
% 这个是注释标记 ,输出第一行的所有值。

注意:如 str = c(1,1) 输出的类型是 Cell ,而 str = c{1,1} 就是其对应得值。 c{1,1} 输出的类型是 Cell ,而 c(1,1) 就是其对应得值。

单元数组的删除

将空矩阵赋值给单元数组的某一行或一整列,就可以删除。

如,删除c的第一行

c(1,:) = []

五、矩阵的基本操作

把1$\times$1的矩阵称为标量,把1 ×\times×n的矩阵称为向量。空矩阵用[]表示。

可以用 whos来输出变量的信息。

矩阵的构造

简单矩阵构造

最简单的构造矩阵方法是采用矩阵构造符[ ],构造一行的矩阵可以把矩阵元素放在矩阵构造符[ ]中,并以空格或者逗号来隔开它们,其代码设置如下:

row = [E1 E2 … Em] 或 row = [E1 ,E2, … ,Em]

如果是多行的话:行与行之间用

分号隔开 ;

特殊矩阵构造

特殊的矩阵

向量的构造

用于产生向量的运算符" : "

  1. 冒号可以用来构造步长为1 的递增向量。
A = 1:5
% 1 2 3 4 5

如果 后边小于前边返回一个空矩阵。

2.也可以构造任意步长的向量
格式

A = a : step: b
  1. linspace函数
    用于创建指定长度的等距向量。
A = linspace(-6,6,4)

在 -6,6 ,之间产生等距的四个点。

矩阵的合并

注意合并后的矩阵要保证是方形的所以要注意格式。

简单合并

C = [A B] 用于水平方向合并矩阵 A 和 B

C = [A ;B] 用于垂直方向合并矩阵 A 和 B

函数


dim就是维数,英文dimension 的缩写
比如说dim =1就是按照行来算的(x)dim = 2就是列 (y),dim = 3 就是第三维(z)
例如x是三维数组 dim1就按照行排练,2就是列,3就是第三维:

矩阵下标引用

1.A(1,2)

2.对于二维矩阵M * N的有以下线性公式

A(i,j)=A((j−1)∗M+i)A(i,j) = A((j-1)*M+i) A(i,j)=A((j−1)∗M+i)

3.访问多个矩阵元素
A(1:k:j)表示矩阵第j列的1k个元素。A(i,1:k)表示矩阵第i行的1k个元素。A(1:k:j) 表示矩阵第j 列的1~k个元素。\\ A(i,1:k) 表示矩阵第i行的1~k个元素。 A(1:k:j)表示矩阵第j列的1 k个元素。A(i,1:k)表示矩阵第i行的1 k个元素。
行的话,行数写在前边。

因为冒号:表示一列或一行的所有元素,可以写成
.A(:,4)

.A(:)输出矩阵的所有元素。
4.end该维的最后一个元素
如上面的可以写成,其中第四列为最后一列
.A(:,end)

交换矩阵行,列元素

A([4 2],:) %答案的第一行是第二行的数据,然后才是第四行的
A(:,[1 3]) %答案的第一行是第1列的数据,然后才是第3列的

交换行

A([m n ],:) = A([n m ],:)
% m,n 是交换的两行

交换列

A(:.[2 4]) = A(:,[4,2])

矩阵的结构变化

函数名 描述
fliplr(A) 矩阵每一行均进行逆序排列
flipud(A) 矩阵每一列均进行逆序排列
flipdim(A,dim) 生成一个在dim维矩阵A内的元素交换位置的多维矩阵
rot90(A) 生成一个由矩阵A逆时针旋转90度而得到的新矩阵
rot90(A,k) 生成一个由矩阵A逆时针旋转k*90度而得到的新矩阵
reshape(A,m,n) 生成一个m*n维的矩阵

详细:
函数链接

稀疏矩阵

定义在稀疏矩阵上的运算生成稀疏矩阵,满矩阵就生成满矩阵。

创建:

A = [0,0,1,0;0,2,0,0;3,0,0,0;0,0,4,0];% 满矩阵
A = sparse(A)
%转换为满矩阵
A= full(A)

查看稀疏矩阵

  • nnz(A):返回非零元素个数
  • nonzeros(A):返回非零值
  • nzmax:返回用于存储非零值的空间长度

对于矩阵可以用 spy()函数来查看图像

六、运算符和特殊符号

运算符包括算数运算符、关系运算符和逻辑运算符。

算数运算符

运算符 用法 描述
+ A+B A+B把矩阵A和B相加,A和B必须是具有相同的长度的矩阵,除非有一个是标量
- A-B A+B把矩阵A和B相减,A和B必须是具有相同的长度的矩阵,除非有一个是`标量
.* A.*B 元素相乘。相当于对应元素相乘,不是用矩阵的乘法法则
./ A./B 元素的右除法。矩阵A除以矩阵B对应的元素
.\ A.\B 元素的左除法。矩阵B除以矩阵A对应的元素
.^ A.^B 元素的乘方。等于 [A(i,j) ^ B(i,j)]
.‘ A.’ 矩阵转秩。(‘在键盘中L键盘右边第二个)
* A*B 矩阵乘法。对于非标量矩阵来说,A的列必须等于B的行
/ A/B 为方程 X*A = B 的解
\ A\B 为方程 A*X = B 的解
^ A^B 矩阵乘方
A’ 矩阵转秩

补充说明^运算符:

当A和B都是标量时表示 标量A的B次方幂;
当A为方针,B为正整数时,表示矩阵A的B次乘积,因此矩阵的逆可以用 A^-1 得到;
B为负数时,表示矩阵 A的逆的B次乘积,
当 B为非整数时有如下表达式:

A ^ B = V∗[λ1B.λnB]/VV*\left[ \begin{matrix} \lambda_1^B & & \\ & . & \\ & &\lambda_n^B \\ \end{matrix} \right] /VV∗⎣⎡​λ1B​​.​λnB​​⎦⎤​/V

其中 λ1B...λnB为矩阵A的特征值,V为对应的特征向量矩阵。\lambda_1^B...\lambda_n^B为矩阵A的特征值,V为对应的特征向量矩阵。 λ1B​...λnB​为矩阵A的特征值,V为对应的特征向量矩阵。

七、字符串处理函数

MATLAB中字符串是指 1 ×\times× n 的字符数组。

创建字符数组

  1. 可以用一对单引号来表示字符串
str = ' I am ';
  1. 可以用strcat()函数得到一个新的字符串
a = 'Hello ';
b = 'Word';
c = strcat(a,b)
% 得到 HelloWord

注意:用该函数合并的时候会把字符串结尾的空串删除。如果要保留可以用矩阵合并符[ ]来实现。

a = 'Hello ';
b = 'Word';
c = [a b]
% 得到 Hello Word
  1. 可以构建二维字符数组,不过要注意的是二维字符数组的每一行具有相同的长度才可以,可以用空格来补充。
str = ['second';'string']
  1. 利用函数char()来创建字符。用该函数时,如果长度不同会自动补齐。
str = char('first','second')

创建字符串单元数组

cellstr()函数
如下:

str = ['name';'string']
% 输出:
str =
name
string

转换:

str = cellstr(str)
% 输出:
str =
'name'
'string'

那么区别是什么呢,字符串单元数组,类似于python中的列表中的元素是字符串。而且在转换后会自动将多余的空格去掉。

检测长度:

length(str{1})
%
ans = 4

可以用char()函数转换成字符数组。

str = str(str);
length(str(1:))
%
ans = 6

字符串比较函数

函数功能:

strcmp(s1, s2):用于比较字符串s1、s2是否相等,如果相等,返回结果1,否则返回0;

strncmp(s1, s2, n):用于比较字符串s1、s2前n个字符是否相等,如果相等,返回结果1,否则返回0;

strcmpi(s1, s2):在忽略字母大小写的前提下,比较字符串s1、s2是否相等,如果相等,返回结果1,否则返回0;

strncmpi(s1, s2, n):在忽略字母大小写的前提下,比较字符串s1、s2前n个字符是否相等,如果相等,返回结果1,否则返回0。

也可以用关系运算符比较字符串
要要求
字符串维度必须一致(长度一样)

str1 = 'cannal';
str2 = 'casual';
c = str1 == str2

结果

c =1×6 logical 数组1   1   0   0   1   1

字符串的查找与替换

.strfind(s1,s2):返回字符串s2在字符串s1中的开始位置。
.strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。

注意还有个findstr(s1,s2)函数,区别在于findstr函数中s1 s2无先后顺序区别,返回短字符串在长字符串中的开始位置。

>> strfind('ababedabababedfg','bed')
ans =4    12
>> strfind('bed','ababedabababedfg')
ans =[]
>> findstr('bed','ababedabababedfg')
ans =4    12>> strrep('ababedabababedfg','bed','toy')
ans ='abatoyababatoyfg'

字符串类型与数字类型转换函数


下一篇:
MATLAB学习笔记(二)

MATLAB学习笔记(一)相关推荐

  1. Matlab学习笔记——数据文件定位

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...

  2. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  3. linspace函数matlab_从零开始的matlab学习笔记——(29)泰勒逼近函数

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图....更多内容尽在个人专栏:matlab学习 上一节我们成功制作了能自己转圈的三维螺旋线,这里我们再来 ...

  4. matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 翻了翻优化工具箱,发现内容 ...

  5. 取模(mod)与取余(rem)的区别——Matlab学习笔记

    取模(mod)与取余(rem)的区别--Matlab学习笔记http://www.bieryun.com/1099.html 昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem ...

  6. matlab 线性规划_从零开始的matlab学习笔记——(37)线性规划——后传

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 呼,终于将matlab的优 ...

  7. MATLAB学习笔记——二维和三维绘图

    MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...

  8. MATLAB学习笔记(十八)

    MATLAB学习笔记(十八) 一.Simulink仿真基础 1.1 Simulink的启动 1.2 系统仿真模型的创建 1.3 仿真参数的设置 1.4 总结 二.子系统的创建与封装 2.1 子系统的创 ...

  9. MATLAB学习笔记(十七)

    MATLAB学习笔记(十七) 一.符号对象 1.1 符号对象的建立 1.2 符号对象的运算 1.3 符号矩阵 二.符号微积分 2.1 符号函数的极限 2.2 符号函数的导数 2.3 符号函数的积分 三 ...

最新文章

  1. c语言里的宏(翻译)4
  2. 一份来自28岁.NET老程序员的自白
  3. 低代码平台真的能拯救程序员的996吗?
  4. 三维全景导航、偏航识别、深度学习偏航引擎,滴滴导航若干关键功能的技术突破与实践...
  5. Gradient-Based Learning Applied to Document Recognition 部分阅读
  6. stm32 python界面开发_【STM32开发】使用Qt Creator 开发STM32
  7. python keystone_keystone命令与client接口学习
  8. 系统动力学建模代做,vensim建模代做,流图建模,不确定分析。
  9. 基于TCP/IP实现串口到网络的通讯转换
  10. c语言学习笔记(7)单引号,双引号和逻辑符号的用法
  11. ipa在线安装搭建_在线安装IPA 文件和视频下载
  12. 在ARM板上运行Qt程序
  13. Starbound正式版的Mod制作(三)简…
  14. 什么是MES生产制造执行系统?实施系统有哪些好处?
  15. 联想 Thinkpad T440p驱动程序下载列表(转发文章)
  16. 程序员适合做自由职业者吗?
  17. 英语语法---动词详解
  18. 中国电信欢go建立话费话费异常预警(国际)
  19. csdn外包电子商务认证设想讨论稿——CSDN外包实践(36)
  20. 3.GraphPad图表分类

热门文章

  1. linux 信号 sigaction(是signal的扩展,在多线程应用中替代了signal)(除了信号值信息外,还可以附加数值信息(以及指针:不可跨进程):sigqueue()函数)
  2. ubuntu16.04 apt-get 报错:E: Unable to locate package update(E: Unable to locate package upgrade)(没解决)
  3. Intel Realsense D400系列后面的盖子是干嘛用的?
  4. Intel Realsense D435 composite_frame类 frame类 video_frame类 depth_frame类的关系
  5. linux——vim命令详细说明
  6. 架构师养成之道-02-jvm原理
  7. HashSet 和 TreeSet的区别
  8. spring cloud全家桶_阿里架构师玩转spring全家桶(实战篇),附赠3本spring电子书...
  9. 重写了GD32VF103的启动脚本和链接脚本
  10. linux如何启动文件夹,linux 下常见启动文件配置