MATLAB字符串与矩阵的学习
专题⼀:
MATLAB操作环境:
当前⽂件夹的设置:1,试图设置,2,命令格式设置(>>cd e:\work)
MARLAB的搜索路径:
先判断此命令是不是个变量,然后判断是不是内部函数,再判断是不是程序⽂件(程序⽂件的搜索顺序是>>当前⽂件夹下的程序⽂件--> >>⽂件搜索路径⽂件夹中的程序⽂件)
如何设置⽂件搜索路径:
1,⽤path命令设置⽂件搜索路径  >>path(path,’e:\work’)
2,⽤对话框设置⽂件搜索路径,在主页的⼯具框下有⼀个设置路径的选择。
MATLAB数值数据:
实数,浮点型,复型
>>class()函数求变量的类型
针对于复型:>>real函数:求复数的实部  imag函数:求复数的虚部
数值数据的输出格式:format的命令格式: format 格式符
format只影响输出格式不影响存储和计算
常⽤函数的应⽤:
sin是以弧度为单位的函数
sind 是以⾓度为单位的函数
abs函数可以求实数的绝对值,复数的模,字符串的ASCII码值
⽤于取整的函数有:fix,floor,ceil,round
round函数按照四舍五⼊的规则取整
ceil函数是向上取整,取⼤于等于这个数的第⼀个整数
floor 函数是向下取整
fix函数是固定取靠近0的那个整数,即舍去⼩数取整数
求余数的函数rem函数或者是mod函数
Isprime(n)判断是否为素数
>>x=1:100;
>>k=isprime(x); --k的值为0或1,是素数返回1,不是素数返回0
>>p=find(k); --查是1的位置,即1所对应的下标
>> k1=x(p); --输出所有的素数
内存变量⽂件:
Save: 创建内存变量⽂件
Load: 装⼊内存变量⽂件
矩阵的表⽰:
矩阵的建⽴:直接输⼊法:将矩阵的元素⽤中括号括起来,按矩阵的顺序输⼊各元素,同⼀⾏的各元素⽤逗号或空格分割,不同⾏的元素之间⽤分号分割。
利⽤已建好的矩阵建⽴更⼤的矩阵:⼀个⼤矩阵可以由已经建好的⼩矩阵拼接⽽成。
冒号表达式:
格式:e1:e2:e3  e1初始值,e2步长,e3终⽌值
linspace函数: linspace(a,b,n)  a是向量的第⼀个元素,b是向量的最后⼀个元素,n是⽣成元素的个数,默认为100个。
结构矩阵:格式:结构矩阵元素.成员名=表达式
单元矩阵: 单元矩阵的元素⽤⼤括号括起来
>>b={10,’liu’,[11,21;34,78];12,’wang’,[34,191;27,578]}
矩阵元素的引⽤:通过下标来引⽤: A(4,5)代表第四⾏第五列
通过序号来引⽤:在MATLAB中,矩阵的元素是按照列存储的。矩阵元素的序号就是矩阵元素在内存中的排列顺序。A(3)代表第三个元素。
矩阵的序号与下标可以利⽤sub2ind和 ind2sub函数实现相互转换
Sub2ind函数:将矩阵中指定的⾏,列下标转换成存储的序号。 调⽤格式:D=sub2ind(s,i,j) s表⽰要转换的矩阵的⾏数和列数,是由⾏数和列数组成的向量,通常⽤size函数获取。i是要转换矩阵元素的⾏下标;j是转换矩阵元素的列下表。
例: >> A=[1:2;4:6];
>>D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])
D= 1  2
6  4
(1,1)位置上的元素在矩阵中的序号是1
(2,1)位置上的元素在矩阵中的序号是2
(2,3)位置上的元素在矩阵中的序号是6
(2,2)位置上的元素在矩阵中的序号是4
Ind2sub函数:把矩阵元素的序号换成对应的下标,调⽤格式:[i,j]=ind2sub(S,D)
s表⽰要转换的矩阵的⾏数和列数,是由⾏数和列数组成的有两个元素的向量,D是序号;函数返回值是序号所对应元素的⾏下标和列下表。
例:  >>[i,j]=ind2sub([3,3],[1,3,5]) ---[3,3]代表是⼀个3⾏3列的矩阵
I=1 3 2                ---[1 3 5]代表要求矩阵中第1个,第3个,第5个元素的下标
J=1 1 2
可以看出结果是:(1,1),(3,1),(2,2);
利⽤冒号表达式获得⼦矩阵:
单个冒号来作为⾏下标或列下标就代表全部⾏或全部列
A(i,:)  表⽰第i⾏的全部元素
A(:,J)  表⽰第j列的全部元素
A(i:i+m,k:k+m)  表⽰第i~i+m⾏内且k~k+m列中的所有元素
A(i:i+m,:) 表⽰第i~i+m⾏的全部元素
end运算符:表⽰某⼀维的末尾元素下标
>>A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20]
>>A(end,:) --引⽤矩阵A的最后⼀⾏元素
Ans=16 17 18 19 20
>>A([1 4],3:end)--表⽰⽤第⼀⾏第四⾏从第3列到最后⼀列的元素
Ans=  3  4  5
18  19  20
如何删除矩阵的元素:利⽤空矩阵删除矩阵的元素 (X代表⼀个空矩阵 X=[])
改变矩阵的形状: reshape(A,m,n)函数:在矩阵元素保持不变的前提下,将矩阵A重新排列成m×n的⼆维矩阵。只改变原矩阵的⾏数和列数,但并不改变矩阵元素的个数及其存储顺序。
A(:):将矩阵A的每⼀列元素堆叠起来,成为⼀个列向量。等价于reshape(A,n,1) n代表矩阵元素的个数。
MATLAB基本运算:(算术,关系,逻辑运算)
算术运算:加减运算,同型矩阵才能相加减
⼀个标量也可以和矩阵进⾏加减运算,这时把标量和矩阵的每⼀个元素进⾏加减运算
除法运算:如果A矩阵时⾮奇异⽅阵,则B/A<-->B*inv(A)  A/B<-->inv(A)*B
对于矩阵左除和右除表⽰两种不同的除数矩阵和被除数数矩阵的关系,但是当含有标量时左除和右除⼀样的。例:a=[10.5,25]
a/5=2.1000 5.0000    5/a=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= -1 0 3
1. -5 0
1. 8 9
>>D=A*B=  1 1 4
1. 1 10
1 1 16
字符串处理:
当字符串中的字符含有单引号时,则该单引号字符要⽤两个单引号来表⽰
1. 将字符串倒过来重新排列
>> revch=ch(end:-1:1)--步长为-1
1. 将字符串中的⼩写字母变成相应的⼤写字母,单其余字符不变
>>k=find(ch>=’a’&&ch<=’z’) ---k是⼩写字母的坐标
>>ch(k)=ch(k)-(‘a’-’A’)
1. 统计字符串中⼩写字母的个数(k是2中的结果)
>>length(k)
字符串的执⾏:格式:evals(s)
例:>>t=pi; >>m=’[t,sin(t),cos(t)]’; y=evals(m)  y=3.1416  0.0000  -1.0000
字符串与数值之间的转换
abs和double函数都可以⽤来获取字符串矩阵对应的ASCll码数值矩阵
char 函数可以把ASCll码矩阵转换为字符串矩阵
字符串的⽐较
1. 利⽤关系运算符进⾏⽐较
2. 利⽤函数
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):返回短字符串在长字符串中的开始位置
Strrep(s1,s2,s3):将字符串s1中的所有⼦字符串s2替换为字符串s3
专题⼆:
特殊矩阵:
zeros函数:产⽣全0矩阵,即零矩阵。
ones函数:产⽣全1矩阵,即⼳矩阵。
eye函数:产⽣对⾓线为1的矩阵。当矩阵是⽅阵时,得到⼀个单位矩阵。
rand函数:产⽣(0,1)区间均匀分布的随机矩阵。
randn函数:产⽣均值为0,⽅差为1的均值正态分布随机矩阵。
函数的调⽤格式都相同;这⾥以zeros函数为例。
zeros(m):产⽣m*m的零矩阵。
zeros(m,n):产⽣m*n的零矩阵。
zeros(size(A)):产⽣与矩阵A同样⼤⼩的零矩阵
产⽣5阶两位随机整数矩阵A:
fix(10+(99-10+1)*rand(5));
rand函数:产⽣(0,1)开区间均匀分布的随机数x
fix(a+(b-a+1)*x):产⽣[a,b]区间上均匀分布的随机整数。
产⽣均值为0.6,⽅差为0.1的5阶正态⼆分部随机矩阵
0.6+sqrt(0.1)*randn(5)
randn函数:产⽣均值为0,⽅差为1的标准正态分布随机数x
a+b*x:得到均值为a,⽅差为b*b的随机数。
魔⽅矩阵:
n阶魔⽅阵由1,2,3,…,n2共n 2个整数组成,且每⾏、每列以及 主、副对⾓线上各n个元素之和都相等。
n阶魔⽅阵每⾏每列元素的和为(1+2+3+…+ n2)/n=(n+n3)/2
n>2时有很多不同的n阶魔⽅阵,MATLAB函数magic(n)产⽣⼀个 特定的魔⽅阵。
范德蒙矩阵:
范得蒙矩阵的最后⼀列全为1,即向量v各元素的零次⽅,倒数第⼆列为指定的向量v, 即向量v各元素的⼀次⽅,其他各列是其后列与倒数第⼆列的点乘积。
函数vander(v)⽣成以V为基础的范德蒙矩阵。
例:>>A=vander(1:5) V=[1 2 3 4 5];
希尔伯特矩阵:
矩阵的⼀般形式为:
1. 1/2  ... 1/n
H  =            1/2 1/3  ...  1/(n+1)
|  |    \      |
1/n    1/(n+1)...  1/(2*n-1)
希尔伯特矩阵的元素为H(i,j)=1/(i+j-1)。
伴随矩阵:
MATLAB⽣成的伴随矩阵的函数是compan(p),其中p是⼀个多项式的系数向量,告辞幂系数拍在前,低次幂系数排在后⾯。
帕斯卡矩阵:
根据⼆项式定理,(x+y)的n次⽅展开后的系数随着n的增⼤组成⼀个三⾓形表,这个 三⾓形称为杨辉三⾓形。
把⼆项式系数依次填写在矩阵的左侧对⾓线上,然后提取左侧的n⾏n列元素 即为n阶帕斯卡(Pascal)矩阵。linspace函数调用的格式为

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。