MATLAB基础知识点,数据分析
树图思维导图提供 MATLAB基础知识点 在线思维导图免费制作,点击“编辑”按钮,可对 MATLAB基础知识点 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:0a60b904d0ce9bbe27a73515953b9b04
MATLAB基础知识点思维导图模板大纲
MATLAB操作界面的组成
续行符...
设置当前文件夹——cd命令 用单引号把文件夹地址包含在内
MATLAB的(标识符)搜索路径——
一个字符串,先判断它是1.变量还是2.内部函数(所以当设置变量sin=1时,是先搜索变量名=1,而不是搜索三角函数sin),再判断是否3.程序文件名,如果是程序文件名,则先在当前文件夹下搜索,没搜索到然后再到文件搜索路径中(主页→设置路径)的文件夹中搜索。
设置路径
path(path,'e:\work')
在主页的设置路径中设置文件搜索路径,设置路径,添加路径。
这个路径可以在上面截图添加,也可以直接在对应的文件夹右键添加,删除也可以右键删除或者在上面截图中删除。
当搜索路径冲突时(有两个同名的文件)——1.搜索文件名时,先搜索当前文件夹,然后再到文件搜索路径中(主页→设置路径)的文件夹中搜索。2.如果文件没有保存在这两个文件路径下,则找不到这个文件。
数值数据类型的分类
MATLAB默认数据类型为:double
整型 (可以当成函数)
int8函数
a = int8(5)
其他函数
无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、无符号64位整数。
带符号整数:带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数。
无/带符号8位整数数据范围:
注意:
class函数——可以用class函数得出数据类型
class(5)
浮点型
single函数:将其他类型的数据转换为单精度型。
double函数:将其他类型的数据转换为双精度型。
复数型
复型数据包括实部和虚部两个部分,实部和虚部默认为double双精度型,虚数单位用i或j来表示。
real函数:求复数的实部
imag函数:求复数的虚部
数值数据的输出格式
format 格式符——设置命令行窗口输出显示格式
format
——自行将输出格式重置为默认值,即浮点表示法的短固定十进制小数点格式(short (default))和适用于所有输出行的宽松行距。
format style
——将命令行窗口中的输出显示格式更改为 style 指定的格式。
style
注意:format命令只影响数据输出格式,而不影响数据的计算和存储。数值格式仅影响数字显示在命令行窗口输出中的方式,而不是 MATLAB® 计算或保存它们的方式。
示例
常用数学函数
exp指数函数:以e为底的指数函数
B=exp(A)
函数在运算时是将函数逐项作用于矩阵的每个元素上,所以最后运算的结果就是一个与自变量同型的矩阵。
三角函数——三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。
正弦
sin 参数的正弦,以弧度为单位——sin(pi/2)
sind 参数的正弦,以度为单位——sind(90)
sinpi 准确地计算 sin(X*pi)
asin 反正弦(以弧度为单位)
asind 反正弦(以度为单位)
sinh 双曲正弦
asinh 反双曲正弦
余弦
cos 以弧度为单位的参数的余弦
cosd 以度为单位的参数的余弦
cospi 准确计算 cos(X*pi)
acos 反余弦(以弧度为单位)
acosd 反余弦(以度为单位)
cosh 双曲余弦
acosh 反双曲余弦
正切
tan 以弧度表示的参数的正切
tand 以度表示的参数的正切
atan 反正切(以弧度为单位)
atand 反正切(以度为单位)
atan2 四象限反正切
atan2d 四象限反正切(以度为单位)
tanh 双曲正切
atanh 反双曲正切
余割
csc 输入角的余割(以弧度为单位)
cscd 以度为单位的参数的余割
acsc 反余割(以弧度为单位)
acscd 反余割(以度为单位)
csch 双曲余割
acsch 反双曲余割
正割
sec 角的正割(以弧度为单位)
secd 参数的正割,以度为单位
asec 反正割(以弧度为单位)
asecd 反正割(以度为单位)
sech 双曲正割
asech 反双曲正割
余切
cot 角的余切(以弧度为单位)
cotd 以度为单位的参数的余切
acot 反余切(以弧度为单位)
acotd 反余切(以度为单位)
coth 双曲余切
acoth 反双曲余切
斜边
hypot 平方和的平方根(斜边)
转换
度/弧度转换
deg2rad——角度转弧度 将角从以度为单位转换为以弧度为单位
rad2deg——弧度转角度 将角的单位从弧度转换为度
坐标转换
说明:
笛卡尔坐标系——就是直角坐标系和斜坐标系的统称。
cart2pol:将笛卡尔坐标转换为极坐标(二维)或柱坐标(三维)
[theta,rho] = cart2pol(x,y)
——可将二维笛卡尔坐标数组 x 和 y 的对应元素转换为极坐标 theta 和 rho。
[theta,rho,z] = cart2pol(x,y,z)
——可将三维笛卡尔坐标数组 x、y 和 z 转换为柱坐标 theta、rho 和 z。
cart2sph:将笛卡尔坐标转换为球面坐标
[azimuth,elevation,r] = cart2sph(x,y,z)
——将笛卡尔坐标数组 x、y 和 z 的对应元素转换为球面坐标 azimuth、elevation 和 r。
pol2cart:将极坐标或柱坐标转换为笛卡尔坐标
[x,y] = pol2cart(theta,rho)
——将极坐标数组 theta 和 rho 的对应元素转换为二维笛卡尔坐标或 xy 坐标。
[x,y,z] = pol2cart(theta,rho,z)
——将柱坐标数组 theta、rho 和 z 的对应元素转换为三维笛卡尔坐标或 xyz 坐标。
sph2cart:将球面坐标转换为笛卡尔坐标
[x,y,z] = sph2cart(azimuth,elevation,r)
——将球面坐标数组 azimuth、elevation 和 r 的对应元素转换为三维笛卡尔坐标,即 xyz 坐标。
abs绝对值函数:可以求实数的绝对值、复数的模、字符串的ASCII码值。
取整函数——用于取整的函数有 round、fix、floor、ceil
round:函数是按照四舍五入的规则来取整。
fix:是固定取靠近0的那个整数,也就是舍去小数取整。
floor:是向下取整,取小于等于这个数的第一个整数。
ceil:是向上取整,取大于等于这个数的第一个整数。
应用1:分别求一个三位正整数的个位数字、十位数字和百位数字。
rem取余函数:除后的余数,返回用 b 除以 a 后的余数,其中 a 是被除数,b 是除数。此函数通常称为求余运算
r = rem(a,b)
应用2:求[1,100]区间的所有素数。
isprime:确定哪些数组元素为质数
TF = isprime(X)
——返回与 X 大小相同的逻辑数组。如果 X(i) 为质数,则 TF(i) 的值为 true。否则,值为 false。
find:查找非零元素的索引值,可以记为 find(1)——查找真元素的索引值(索引从1开始)
k = find(X) ——返回一个包含数组 X 中每个非零元素的线性索引的向量。注意:如果是矩阵的话,按列来数序号索引
1.算术运算[加 减 乘 除],点运算(针对于*、/、\、^)
2.关系运算
3.逻辑运算——&(与)、|(或)和~(非,逻辑求反)。——参与逻辑运算的a和b是两个(或分别是)标量或者矩阵——另外:&&逻辑与 两边的则是表达式(最后一张图)||逻辑或——经验证,&和&&的效果是一样的
4.运算符优先级
1.字符串的表示
在MATLAB中(这个PPT的版本是 R2016a),字符串是用单引号括起来的字符序列。
2.字符串的操作
y=eval(s)—— 字符串的执行函数:s是一个字符串,这个eval函数会把这个字符串的单引号去掉,把剩下的部分当做一种运算。
y=abs(s)—— 绝对值函数:1.可以用来求一个数(矩阵)的绝对值(矩阵)2.可以用来获取字符串矩阵所对应的ASCII码数值矩阵,相当于取字符的绝对值。 3.复数的模
Y = double(X)——双精度数组:1.将 X 中的值转换为双精度。2.也可以用来获取字符串矩阵所对应的ASCII码数值矩阵, 相当于把字符类型转换成双精度类型。
double 是 MATLAB® 中的默认数值数据类型(类),它可为大多数计算任务提供足够的精度。数值变量自动存储为 64 位(8 字节)双精度浮点值。
y=char(s)—— 字符串函数:把ASCII码矩阵转换为字符串矩阵。
L = length(X) ——最大数组维度的长度:返回 X 中最大数组维度的长度。对于向量,长度仅仅是元素数量。对于具有更多维度的数据,长度为 max(size(X))。空数组的长度为零。
字符串的比较
关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。也可以是字符串向量(数组)和单个字符作比较。
字符串比较函数:用于判断字符串是否相等,有4种比较方式,函数如下
strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0。
strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
strncmpi(s1,s2,n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
字符串的查找与替换
findstr(s1,s2):返回短字符串在长字符串中的开始位置。findstr 的输入参数的顺序并不重要,如果您不确定两个输入参数中哪个更长,此函数会很有用。
与 contains(长字符串包含短字符串就会返回1,否则0) 或 strfind(固定了长短参数的顺序) 函数不同。【不推荐用这两个函数,有是新版的】
strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。
1.矩阵元素的引用方式
(1)通过小括号+下标来引用矩阵的元素
(2)通过序号来引用
序号与下标的关系
sub2ind——下标转序号函数:将矩阵中指定元素的行、列下标转换成存储的序号
ind2sub——序号转下标函数:将把矩阵元素的序号转换成对应的下标
2.利用冒号表达式获得子矩阵
end运算符:表示某一维的末尾元素下标。
3.利用空矩阵删除矩阵的元素
4.改变矩阵的形状
reshape(A,m,n)——重塑函数:在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。
注意:reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。
A(:) ——将矩阵A的每一列元素堆叠起来,成为一个列向量。
2.冒号表达式
linspace(a,b,n) ——线性等分向量 函数,生成n个元素(包括a, b),分成n-1段
1.一般矩阵C——[矩阵元素] 必须是同种类型,比如都是double,都是char。但 {单元矩阵元素} 里的可以是不同的类型,[结构矩阵元素] 里的也必须是同种结构体类型。
2.结构矩阵 a ——引用元素只能用a(1),a(2),a(3),得到一个结构体(截图里的每行),而不能用a(2,2)这种方式引用。——相当于是一个列向量,每个元素都是一个结构体
引用:
举例1:存一个学生的信息
c.name='xiaoming'
c.age=18
c.gender=1
c.height=1.75
c.family=[1 2 ;5 6]
>> c =
name: 'xiaoming'
age: 18
gender: 1
height: 1.7500
family: [2x2 double]
c.family
>> ans =
1 2
5 6
举例2:存多个学生的信息
s(1).name='xiaoming'
s(1).age=18
s(1).gender=true
s(1).height=1.75
s(2).name='xiaomei'
s(2).age=17
s(2).height=1.60
s(2).gender=false
>> s
s =
1x2 struct array with fields:
name
age
gender
height
>> s(1)
ans =
name: 'xiaoming'
age: 18
gender: 1
height: 1.7500
>> s(2)
ans =
name: 'xiaomei'
age: 17
gender: 0
height: 1.6000
s(3).name='atu'
s(3).age=19
>> s
s =
1x3 struct array with fields:
name
age
gender
height
>> s(1)
ans =
name: 'xiaoming'
age: 18
gender: 1
height: 1.7500
>> s(2)
ans =
name: 'xiaomei'
age: 17
gender: 0
height: 1.6000
>> s(3)
ans =
name: 'atu'
age: 19
gender: []
height: []
3.单元矩阵 b(元胞数组)—— 引用和普通矩阵一样,可以用空格分隔,也可以用逗号分隔,可以用b(1)→10,或者b(2,2)→‘wang’
引用:c=b
1.变量(标识符)
在MATLAB中,变量名是以字母开头,后接字母、数字或下画线的字符序列,最多63个字符。
变量名区分字母的大小写。
标准函数名以及命令名必须用小写字母。
2.赋值语句两种格式
变量=表达式
表达式
其他:π pi和除号
π:pi
除号:/
3.预定义变量
预定义变量是在MATLAB工作空间中驻留,由系统本身定义的变量。
ans 是默认赋值变量
i和j 代表虚数单位
pi 代表圆周率
NaN 代表非数
Inf 代表无穷
补充:NaN和Inf(比如说分母为0则会产生nan和inf)
NAN是指not a number(非数,数据的缺失)。
INF是指Infinity(无穷)。
浮点数变成NAN的情况:
① 有一个及以上参数为NaN时 如:1.0f/NaN、1.0f*NaN、NaN+1.0f、NaN-1.0f、Nan^1.0f等
② 下列运算的情况
除法:0/0、∞/∞、∞/(−∞)、(−∞)/∞、(−∞)/(−∞)
乘法:0*∞、0*−∞
加法:∞ + (−∞)、(−∞) + ∞
减法:∞ - ∞、(−∞) - (−∞)
指数:0^0、∞^0、1^∞、∞^(−∞)
浮点数变成+INF(极大值) 如:1.0f/0
浮点数变成-INF(极小值) 如:-1.0f/0
内存变量的删除与修改
直接在变量工作区修改即可
who命令与whos命令
4.内存变量文件——.mat文件
用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
save命令:创建内存变量文件。
save mydata.mat a b c
mydata.mat是存储多个变量的文件,如果存储多个变量,一般就用.mat,不用其他后缀文件
save('mydata.data', 'data', '-ascii')
mydata后缀可以是.dat .data .txt .mat
data 一般是一个矩阵变量
mydata.data 一般是一个文件如下,把它load下来的话赋给一个变量就得到一个矩阵
mydata.data文件用法:
Data_File='iris_normalized100.data';
AllData_File=load(Data_File);
[NumberofSamples, ~]=size(AllData_File);
save mydata a b
也可以省略.mat,但一般不要省略。
load命令:装入内存变量文件。
load('mydata.mat')
load mydata.mat
可以不用括号,只用 load+文件名,但是这个文件名只能是当前文件夹或者设置路径中的,并且地址中不能有空格。否则会报错。
load('D:\MATLAB_Project\ELM csdn code\数据集\iris_data.mat')
也可以用括号加单引号,单引号里面的地址可以是空格(引号里面的地址能有空格在好多地方都适用),这个地址不需要是当前地址或者设置路径中的,但前提是这个地址下的文件必须是真实文件而不是快捷键
load mydata
也可以省略.mat,但一般不要省略。
树图思维导图提供 Linux 网络基础知识 在线思维导图免费制作,点击“编辑”按钮,可对 Linux 网络基础知识 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:199680f0e48eac8a1aeaadb90447d4f4
树图思维导图提供 抓住重点 在线思维导图免费制作,点击“编辑”按钮,可对 抓住重点 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:4c49e4799ddf94a339c56e46eb96a826