MATLAB教程一:MATLAB基础知识
文章目录
- 1.1 MATLAB数值数据
- 1.2 MATLAB矩阵的表示
- 1.3 矩阵元素的引用
- 1.4 MATLAB基本运算
- 1.5 字符串处理
1.1 MATLAB数值数据
数值数据类型的分类:
整型:分为无符号整型、带符号整型。分别有8位整数、16位整数、32位整数、64位整数。
- int8 函数:将数值转化成8位带符号整型数据。
- uint8 函数:将数值转化成8位无符号整型数据。
>> x=int8(129)
x =127
>> x=uint8(129)
x =129
浮点型:分为单精度型和双精度型。
- class 函数:获取变量或对象的类型。
- single 函数:将其他类型的数据转换为单精度型。
- double 函数:将其他类型的数据转换为双精度型。
>> class(4)
ans ='double'
>> class(single(4))
ans ='single'
>> class(double(4))
ans ='double'
复型:复型包括实部和虚部两个部分,实部和虚部默认为双精度型,虚数单位用 i 或 j 来表示。
- real 函数:求复数的实部。
- imag 函数:求复数的虚部。
>> 6+5i
ans =6.0000 + 5.0000i
>> real(6+5i)
ans =6
>> imag(6+5j)
ans =5
数值数据的输出格式:
format:用于针对数据的显示形式进行控制,而不影响数据的计算和存储。
>> format long
>> 50/3
ans =16.666666666666668
>> format
>> 50/3
ans =16.6667
常用的数学函数:
三角函数:分为以弧度为单位的函数和以角度为单位的函数。
- sin():以弧度为单位的三角函数。
- sind():以角度为单位的三角函数。
- 其他三角函数同理。
>> sin(pi/2)
ans =1
>> sind(90)
ans =1
绝对值函数:abs 函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
>> abs(-4)
ans =4
>> abs(3+4i)
ans =5
>> abs('a')
ans =97
取整函数:用于取整的函数有fix、floor、ceil、round。
- fix 函数:是固定取靠近0的那个整数,也就是舍去小数取整。
- floor 函数:是向下取整,取小于等于这个数的第一个整数。
- ceil 函数:是向上取整,取大于等于这个数的第一个整数。
- round 函数:是按照四舍五入的规则来取整。
>> round(4.7)
ans =5
>> fix(-3.2)
ans =-3
>> floor(3.6)
ans =3
>> ceil(-3.8)
ans =-3
应用举例:
分别求一个三位正整数的个位数字、十位数字和百位数字。
- rem(a,b) 函数:返回 a 除以 b 后的余数。
>> m=345;
>> m1=rem(m,10)
m1 =5
>> m2=rem(fix(m/10),10)
m2 =4
>> m3=fix(m/100)
m3 =3
求[1,100]区间的所有素数。
- isprime 函数:判断是否为素数(质数),是素数则返回1,否则返回0。
- find 函数:返回向量或者矩阵中不为0的元素的位置索引。
>> x=1:100;
>> k=isprime(x);
>> k1=find(k);
>> p=x(k1)
p =1 至 13 列2 3 5 7 11 13 17 19 23 29 31 37 4114 至 25 列43 47 53 59 61 67 71 73 79 8 3 89 97
1.2 MATLAB矩阵的表示
矩阵的建立:
利用直接输入法建立矩阵
>> A=[1,2,3;4,5,6;7,8,9]
A =1 2 34 5 67 8 9
利用已建好的矩阵建立更大的矩阵
>> A=[1,2,3;4,5,6;7,8,9];
>> B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];
>> C=[A,B;B,A]
C =1 2 3 -1 -2 -34 5 6 -4 -5 -67 8 9 -7 -8 -9-1 -2 -3 1 2 3-4 -5 -6 4 5 6-7 -8 -9 7 8 9
利用实部矩阵和虚部矩阵构成复数矩阵
>>B=[1,2,3;4,5,6];
>>C=[6,7,8;9,10,11];
>>A=B+i*C
A =1.0000 + 6.0000i 2.0000 + 7.0000i 3.0000 + 8.0000i4.0000 + 9.0000i 5.0000 +10.0000i 6.0000 +11.0000i
冒号表达式:
A:B:C :返回包含 A 和 B 之间的差值为 C 的行向量。
A 为初始值,B 为步长,C 为终止值。若省略步长,则步长为1。
>> t=0:1:5
t =0 1 2 3 4 5
linspace(A,B,N):返回包含 A 和 B 之间的 N 个等间距点的行向量。
A 为第一个元素,B 为最后元素,N 为元素总数。
>> x=linspace(0,pi,6)
x =0 0.6283 1.2566 1.8850 2.5133 3.1416
结构矩阵和单元矩阵:
结构矩阵:由结构数据构成的矩阵就是结构矩阵,结构矩阵里的每个元素就是结构数据类型。
>> a(1).x1=10; a(1).x2='liu'; a(1).x3=[11,21;34,78];
>> a(2).x1=12; a(2).x2='wang'; a(2).x3=[34,191;27,578];
>> a(3).x1=14; a(3).x2='cai'; a(3).x3=[13,890;67,231];
单元矩阵:建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵元素用大括号括起来。
>> b= {10,'liu',[11,21;34,78];12,'wang',[34,191;27,578];14,'cai'[13,890;67,231]}
b = [10] 'liu' [2x2 double][12] 'wang' [2x2 double][14] 'cai' [2x2 double]
1.3 矩阵元素的引用
矩阵元素的引用方式:
通过下标来引用矩阵的元素。
>> A=[1,2,3;4,5,6]
A =1 2 34 5 6
>> A(1,2)
ans =2
通过序号来引用矩阵的元素。
矩阵元素的序号:在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。矩阵元素的序号就是矩阵元素在内存中的排列顺序。
>> A=[1,2,3;4,5,6]
A =1 2 34 5 6
>> A(3)
ans =2
关于矩阵的函数:
sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。
格式为:D=sub2ind(S,I,J)
D 为序号,S 为行数和列数组成的向量,I 为转换矩阵的行下标,J 为转化矩阵的列下标。
>> A=[1:3;4:6]
A =1 2 34 5 6
>> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])
D =1 26 4
ind2sub函数:将把矩阵元素的序号转换成对应的下标。
格式为:[I,J]=ind2sub(S,D)
I 为行下标,J 为列下标,S 为行数和列数组成的向量,D 为序号。
>> A=[1:3;4:6]
A =1 2 34 5 6
>> [I,J]=ind2sub(size(A),[2,3,5])
I =2 1 1
J =1 2 3
reshpe函数:在矩阵总元素保持不变的前提下,将矩阵A重新排成 m×n 的二维矩阵。
注意:reshape函数只是改变原矩阵的行数和列数,并不改变原矩阵元素个数及其存储顺序。
>> x=[23,45,65,34,65,34,98,45,78,65,43,76];
>> y=reshape(x,3,4)
y =23 34 98 6545 65 45 4365 34 78 76
关于矩阵的操作:
end运算符:表示某一维的末尾元素下标。
>> A=[1,2,3,4,5,6,7,8,9,10]
A =1 2 3 4 5 6 7 8 9 10
>> B=A(end:-1:1)
B =10 9 8 7 6 5 4 3 2
A( : ):将矩阵 A 的每一列元素堆叠起来,成为一个列向量。
>> A=[1,2,3,4,5,6,7,8,9,10]
A =1 2 3 4 5 6 7 8 9 10
>> B=A(:)
B =12345678910
1.4 MATLAB基本运算
基本算术运算:
基本算术运算符:+(加)、-(减)、*(乘)、/(右除) 、 \(左除)、 ^(乘方)。
注意:MATLAB的运算是在矩阵意义下进行的,单个数据的算术运算只是矩阵运算的特例。
加减运算:若两矩阵同型,则运算时两矩阵的相应元素相加减。一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。
乘法运算:矩阵A和B进行乘法运算,要求A的列数与B的行数相等。一个标量也可以和矩阵进行乘法运算,这时把标量和矩阵的每一个元素进行乘法运算。
除法运算:在MATLAB中,有两种矩阵除法运算:右除 / 和左除 \。
>> A=[1,2,3;4,2,6;7,4,9];
>> B=[4,3,2;7,5,1;12,7,92];
>> C1=B/A
C1 =-0.1667 -3.3333 2.5000-0.8333 -7.6667 5.500012.8333 63.6667 -36.5000
>> C2=A\B
C2 =0.5000 -0.5000 44.50001.0000 0.0000 46.00000.5000 1.1667 -44.8333>> a=[10.5,25]
a =10.5000 25.0000
>> a/5
ans =2.1000 5.0000
>> 5\a
ans =2.1000 5.0000
点运算:两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。
点运算符:.* 、./、.\、.^(在基本运算符前加点)。
>> A=[1,2,3;4,5,6;7,8,9];
>> B=[-1,0,1;1,-1,0;0,1,1];
>> C=A.*B
C =-1 0 34 -5 00 8 9
>> D=A*B
D =1 1 41 1 101 1 16
>> A.^2
ans =1 4 916 25 3649 64 81
关系运算:
关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等 于)、==(等于)、~=(不等于)。
1、两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
>> 3>4
ans =0
>> x=5
x =5
>> x==5
ans =1
2、参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
3、参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
% 建立3阶方阵A,判断A的元素是否为偶数。
>> A =[24,35,13;22,63,23;39,47,80]
A =24 35 1322 63 2339 47 80
>> P=rem(A,2)==0
P =1 0 01 0 00 0 1
逻辑运算:
逻辑运算符:&(与)、|(或)和~(非)。
1、 参与逻辑运算的是两个标量 a 和 b ,那么运算规则为:
a&b:a、b 全为非零时,运算结果为1,否则为0。
a|b:a、b 中只要有一个为非零时,运算结果为1 。
~a:当 a 为零时,运算结果为1;当 a 为非零时,运算结果为0。
>> 3<4 & 6>5
ans =1
>> ~(9==1)
ans =1
>> ~9==1
ans =0
2、参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元 素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
3、参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵 中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成。
应用举例:
水仙花数是指各位数字的立方之和等于该数本身的三位正整数。 求全部水仙花数。
>> m=100:999;
>> m1=rem(m,10);
>> m2=rem(fix(m/10),10);
>> m3=fix(m/100);
>> k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)
k =54 271 272 308
>> s=m(k)
s =153 370 371 407
1.5 字符串处理
字符串表示:
字符串是用单引号括起来的字符序列。若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示,也可以建立多行字符串,形成字符串矩阵。
>> char='I like MATLAB!'
char ='I like MATLAB!'
>> char(8:13)
ans ='MATLAB'>> ch=['abcdef';'123456'];
>> ch(2,3)
ans =3
应用举例:
建立一个字符串向量,然后对该向量做如下处理:
① 取第1~5个字符组成的子字符串。
② 将字符串倒过来重新排列。
③ 将字符串中的小写字母变成相应的大写字母,其余字符不变。
④ 统计字符串中小写字母的个数。
- length(x) 函数:返回 x 中最大数组维度的长度。
>> Char='ABc123d4e56Fg9';
>> subchar=Char(1:5) % 第一步
subchar ='ABc12'
>> revch=Char(end:-1:1) % 第二步
revch ='9gF65e4d321cBA'
>> k=find(Char>='a'&Char<='z') % 第三步
k =3 7 9 13
>> Char(k)=Char(k)-('a'-'A')
Char ='ABC123D4E56FG9'
>> length(k) % 第四步
ans =4
字符串的操作:
字符串的查找与替换:
- findstr(s1,s2):返回短字符串在长字符串中的开始位置。
- strrep(s1,s2,s3):将字符串 s1 中的所有子字符串 s2 替换为字符串 s3。
>> p=findstr('This is a test!','is')
p =3 6
>> p=findstr('is','This is a test!')
p =3 6
>> result=strrep('This is a test!','test','class')
result ='This is a class!'
字符串与数值之间的转换:
abs和double函数:都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
char 函数:可以把ASCII码矩阵转换为字符串矩阵。
>> s1='MATLAB';
>> a=abs(s1)
a =77 65 84 76 65 66
>> char(a+32)
ans ='matlab'
字符串的比较:字符串的比较有两种方法,即利用关系运算符或字符串比较函数。
关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1 ,要么是0。
>> 'www0'>='W123'
ans =1 1 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。
>> strcmp('www0', 'w123')
ans =0
>> strncmpi('Www0','w123',1)
ans =1
1)
a =77 65 84 76 65 66
>> char(a+32)
ans ='matlab'
MATLAB教程一:MATLAB基础知识相关推荐
- Nmap扫描教程之Nmap基础知识
Nmap扫描教程之Nmap基础知识 Nmap扫描Nmap基础知识 Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(Network Mapper).Nmap工具可以用来扫描电脑上开放的端口 ...
- WPF教程一:基础(转)
WPF教程一:基础 一.WPF简介 WPF:WPF即Windows Presentation Foundation,翻译为中文"Windows呈现基础",是微软推出的基于Windo ...
- MATLAB(1)基础知识
参考1:https://www.bilibili.com/video/BV19J411W7Ta?p=29 参考2:https://blog.csdn.net/njuese/article/detail ...
- Matlab中图像函数大全 - [基础知识]
图像增强 1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n ...
- Matlab 结构体数组 基础知识 struct(自学文档)
struct 结构体数组 全页展开 说明 结构体数组是使用名为字段的数据容器将相关数据组合在一起的数据类型.每个字段都可以包含任意类型的数据.可以使用 structName.fieldName 格式的 ...
- 归一化相关 matlab,matlab – 归一化互相关的基础知识
为了说明normxcorr2的使用,请考虑以下示例(改编自 this page) %# Make light gray plus on dark gray background template = ...
- java并发编程一:基础知识
一.线程安全性 1.1 什么是线程安全性? 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确行为. ...
- matlab仿真电气连接,MATLAB仿真及在电子信息与电气工程中的应用简介,目录书摘...
编辑推荐: 1. 采用matlab*新版本matlab 2015b. 2. 介绍Matlab在电路分析.信号与系统分析.数字信号处理.控制系统分析等课程当中的应用,针对性强. 内容简介: 本书以MAT ...
- 【 MATLAB 】逆离散余弦变换(idct)的基础知识介绍
基础知识介绍 逆离散余弦变换从离散余弦变换 (DCT) 系数中重建序列.idct 函数是 dct 函数的逆. The DCT has four standard variants. For a tra ...
最新文章
- 暴力+构造 Codeforces Round #283 (Div. 2) C. Removing Columns
- ctrl+alt+T出来的终端窗口非常小
- stm32f10x单片机进阶--spi使用
- 为什么有的软件公司宁愿花15k去重招一个应届生,也不愿意加薪5k留住公司老程序员?...
- (ZT)关于IAP防止破解的几点
- seaborn.scatterplot学习
- 解决AD不能复制粘贴
- 动画图解:十大经典排序算法动画与解析,看我就够了(配代码完全版)
- 我用 Python 自制成语接龙小游戏,刺激!
- 【Windows】安装win10虚拟机
- 百度云图片识别(ImageRecognition)
- 计算机网络安全技术简答题,计算机网络安全技术简答题
- Node第四天学习总结—— 数据库与身份认证(数据库、安装并配置MySQL、MySQL的基本使用、在项目中操作MySQL、前后端的身份认证)
- 2022年前端面试题整理,持续更新中
- mysql 页分裂_InnoDB中的页合并与分裂
- 红米5 plus 位置服务器,红米5 Plus解锁system系统分区的教程_红米5Plus解系统分区...
- 利用redis缓存对 list集合中的数据 进行分页操作(一)
- Spring(四)AOP的注解方式用法
- 使用webflow的感觉
- linux下网页制作,linux网页制作
热门文章
- 查看内核模块依赖关系和动态库依赖关系
- (四)Substance Painter贴图制作软件的使用
- Linux入门篇01~~Linux的快速入门 (简洁,详细,基础)
- 直播怎么录屏,这3种录屏幕视频方法快收藏
- 商品信息管理系统(Python)完整版
- 湖北2020年最新CMMI3-CMMI5通过的企业名单,看看没有你们公司
- Android微信动态调试,Android远程调试的探索与实现
- 前端HTTP、浏览器面试题
- 8月1日起,香港超10家主流银行开户全部豁免管理费
- 计算机c盘变大,关于C盘可用空间忽大忽小的问题 变化很快 幅度很大~~~