这里写自定义目录标题
一、入门概述
matlab通用命令
1.常用命令:clc、clear、disp(显示变量或文字内容)
ps(easy 不多说)
2.标点3.tips:在命令行窗口中想换行输入下一条命令时,按住shift+enter,与QQ相同
二、基础知识
数据类型
1.数值类型:整数(有符号/int、无符号/uint)、浮点数(单精度single、双精度double)
2.取整函数
3.数据类型相关运算规律
4.复数
5.无穷量(Inf)和非数值量(NaN)
无穷量分正负,即Inf和-Inf;
NaN可由0/0或Inf/Inf计算,两结果不等。
6.逻辑类型
关系和逻辑表达式输入时,把任何非零数值当作真,零当作假。输出时真为1,假为0。
注意“==”是对等号两边两个变量进行比较,两边相等时返回1,不等时返回0。
有矩阵A、B:
矩阵的与运算A&B:表示两个矩阵相应元素均非零,则该结果元素值为1,否则为0。(一假全假)
矩阵的或运算A|B:表示两个矩阵相应元素存在非零值,则该结果元素值为1,否则为0。(一真全真)
矩阵的非运算~:若矩阵元素为0,则结果为1,否则为0。
7.字符和字符串
一个字符串是存储在一个行向量中的文本,这个行向量中每一个元素代表一个字符;元素中存放的是字符的内部代码即ASCII码(十进制)。
8.函数句柄
函数调用方法:直接调用和间接调用
直接调用:被调用的函数通常称为子函数,但子函数只能被与其M文件同名的主函数或在M文件中的其他函数所调用,同时在一个文件中只能有一个主函数。(这里没太懂额,还没常用)
间接调用:使用函数句柄。一般格式:
Function_Handle = @Function_Filename
其中Function_Filename是函数所对应M文件的名称或MATLAB内部函数名称。如调用cos函数:F_Handle=@cos
9.结构体类型
创建结构体的方法:
(1)直接通过赋值语句给结构体字段赋值
赋值表达式形式:结构体名称.字段名称(1对多)
Student.Name='Sam';
Student.Grade=6;
Student.Subject={
'Chinese','Math','English'};
Student.Result={
99,99,99};
Student
此Student为一个1×1的结构体数组。
(2)利用struct函数创建结构体
句法形式:
StrArray=struct('field1',var1,'field2',var2,...,'fieldn',varn)
schedule(2)=struct('Day','Thursday','Time','15:00','Number',18)
schedule(1)
scheduleArray=repmat(struct('Day','Thursday','Time','15:00','Number',18),1,2) %repmat:将struct后第一个,前的内容堆叠在1×2的结构体数组中
scheduleArray(1)
scheduleArray(2)
newArray=struct('Day',{
'Thursday','Friday'},'Time',{
'15:00 ','9:00 '},'Number',{
18,6})
newArray(1)
newArray(2)
10.数组类型
在MATLAB中数组与矩阵地位相同,此处介绍数组,后续介绍矩阵。矩阵是数组的子集。
Array=[1 2 3 4 5 6]
Array=i:k
Array=i:j:k
linspace(a,b,100) %100个元素的向量
linspace(a,b,n) %n个元素的向量
Array_a=0:5
Array_b=linspace(0,5,6)
Array_Empty=[] %创建空数组,用于逻辑运算、数组声明、数组清空
11.单元数组类型
单元(Cell)数组是一种无所不包的广义矩阵。组成单元数组的每一个元素称为一个单元。每一个单元可以包括一个任意数组,如数值数组、字符串数组、结构体数组或另一个单元数组,因而每一个单元可以具有不同的尺寸和内存占用空间。
(天呐,这段话太戳我了,这本书是真的好!《MATLAB R2016a完全自学一本通》)
(1)单元数组的创建
①赋值语句创建
用“{}”创建,“,”或空格分隔一个单元,“;”分行。
②利用cell函数创建空单元数组
创建一个m×n的空单元数组,每个单元均为空矩阵,调用格式:
cellName=cell(m,n)
(2)单元数组寻访
C(m,n)指单元数组中第m行第n列单元,C{m,n}指单元数组中第m行第n列单元。
例子来啦:
c={
'x',[1;3;6];10,pi}
a=cell(2,2)
b=cell(1)
C={
3,[4 7;6 6;80 9],'string';sin(pi/8),3>10,'code'}
unitVal_1=C(1,2)
class(unitVal_1)
unitVal_2=C{
2,2}
class(unitVal_2)
(3)单元数组的操作
①合并
a{
1,1}='cellclass';
a{
1,2}=[1 2 2];
a{
2,1}=['a','b','c'];
a{
2,2}=[9 5 6];
a
b={
'Jan'}
c={
a b}
②删除
将单元数组第m行n列位置处单元删除:
C{
m,n}=[]
③改变单元数组形状
将单元数组C变成一个具有M行N列的新单元数组,调用格式:
trimC=reshape(C,M,N)
基本矩阵操作
1.矩阵与数组关系辨析
矩阵以数组的形式存在,一维数组相当于向量,二维数组相当于矩阵,故矩阵是数组的子集。
2.构建矩阵的函数
tips:
①矩阵-向量-标量 (单个实数、复数都是标量)
②空矩阵和零矩阵的区别是:空矩阵没有元素,不占用存储空间;零矩阵占用存储空间。
3.矩阵大小及结构改变
4.矩阵下标引用
(1)双下标索引A(m,n),单下标索引A(k)
(2)单双下标转换:
Matrix=magic(3)
IND=sub2ind(size(Matrix),2,3)
[I J]=ind2sub(size(Matrix),7)
(3)访问多个矩阵元素
灵活使用表2-14
5.矩阵信息的获取
(1)矩阵结构
(2)矩阵大小
(3)矩阵数据类型
(4)矩阵占用内存
whos调用,如 whos A,即可查看A的Name、Size、Bytes、Class
6.矩阵的保存和加载
(1)矩阵寻址
①下标寻址
1)单元素寻访
A(numRow,numColumn)
2)多元素寻访
A(1:m:n) %表示访问第n列的第一个元素至第m个元素
A(m,:) %表示访问第m行的所有元素
A(i:j,m:n) %表示访问从第i行至第j行、从第m列至第n列的矩阵区域
A(i:inc1:j,m:inc2:n) %表示访问从第i行至第j行,行间隔为inc1行,列同理
②线性寻址(没懂,感觉和下标寻址一个意思呢)
3)元素的赋值
通常有两种情况:
· A(i,j)=value %等号左侧为矩阵中的某个元素,右侧为要替换的值
· A=[] %删除矩阵中的所有元素
4)元素的扩展与删除(即赋值的应用)
A=[1 1;2 2];
A(3,:)=3
A(4,1)=4;A(4,2)=5
A(2,:)=[]
矩阵的合并