%第二天学习
%矩阵与矩阵比较大小,是对矩阵中每个元素对应比较满足为1,否则为零,结果输出为一个同型矩阵
%判断A矩阵是否为偶数
A=[(1:2:10);(10:20:100);(100:200:1000)]
P=mod(A,2)==0%将矩阵中每个元素除二是否为0
%与&,或|,非~
3<4&6>5
~(9==1)
%在算术运算、关系运算和逻辑运算中,算术运算的优先级最高,逻辑运算优先级最低,但逻辑非运算是单目运算,它的优先级比双目运算要高。
~9==1
%find函数找出所有非0元素的下标(下面例子是找出水仙花数,即各位数字的立方和等于该数的三位整数)
m=[100:999]%直接生成向量,起始值100,步长默认为1,终点999
m1=rem(m,10)%求余数函数
m2=rem(fix(m/10),10)%fix取整数,直接舍弃小数
m3=fix(m/100)
k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)%因为m1,m2,m3都是一组数据也就是向量所以采用点乘,判断运算后是否与原数相同,不等为0,相等为1,find函数找出所有非0元素的下标,
s=m(k)%k已经被赋值为矩阵序号,直接调用对应序号的矩阵元素。
%字符串 在MATLAB中,字符串是用单引号括起来的字符序列。字符串背当作一个行向量。
xm='central south university'
xm(1:3)%1到3号元素
%若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
'i''m a teacher.'%i后面有一个单引号,为了避免冲突,多家一个单引号。
ch=['abcdef';'123456']
ch(2,3)%调用第二列第三行
%字符串的表示
%建立一个字符串向量,然后对该向量做如下处理:
%1.取第1~5个字符组成的子字符串。
%2.将字符串倒过来重新排列。
%3.将字符串中的小写字母变成相应的大写字母,其余字符不变。
%4.统计字符串中小写字母的个数。
ch='ABc123d4e56Fg9'
subch=ch(1:5)%将字符串的一到五号元素赋值给subch
revch=subch(end:-1:1)%调用subch从最后到第一位,步长为1,因为是倒序所以是负一
k=find(ch>='a'&ch<='z')%ASCII码,大于a小于z为小写
ch(k)=ch(k)-32%小写字母减去32就是对应大写(ASCII码)
length(k)%统计k的个数,也就是向量或者矩阵的长度(矩阵最大维度)
%字符串的执行 eval()
t=pi
m='[t,sin(t),cos(t)]'%将字符串属性去除,变为可执行命令
y=eval(m)
%字符串与数值之间的转换 字符串与数值之间的转换
%abs(还能取绝对值和模)和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
%char函数可以把ASCII码矩阵转换为字符串矩阵。
s1='MATLAB'
a=abs(s1)%把s1的值转变为对应ASCII码
char(a)%把ASCII码转对应字符
char(a+32)%把大写变小写
%字符串的比较 字符串的比较有两种方法:利用关系运算符或字符串比较函数。
%关系运算符比较:两个字符串里的每个字符依次按ASClIl值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。
'www0'>='W123'%小写字母大于大写大于数字
%字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:%strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为否则返回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')%字符串不等结果为零
strncmpi('Www0','w123',1)%忽略大小写比较前一个字符是否相等
%字符串的查找与替换
%findstr(s1,s2):返回短字符串在长字符串中的开始位置。
%strrep(s 1,s2,s3)︰将字符串s1中的所有子字符串s2替换为字符串s3。
p=findstr('this is a test!','is')%查找短字符串is在长字符串this is a test!中出现的开始位置为3和6,空格要算做一个位置
result=strrep('this is a test!','test','class')%将test替换为class
%多项式求根函数roots 例子求x*x-3x+1=0的根
p=[1 -3 1]
x=roots(p)
%特殊矩阵(单位矩阵,0矩阵,范德蒙矩阵等)
%zeros函数:产生0矩阵zeros(m,n)产生m行n列的矩阵,zeros(m)产生m行m列的矩阵,zeros(size(A))产生A同样大小的矩阵
A=zeros(2,3)
%例子:首先产生五阶两位随机整数矩阵A,再产生均值0.6,方差为0.1的5阶正态分布随机矩阵B最后再验证(A+B)E=EA+BE
%rand函数:产生(0,1)开区间均匀分布的随机数x。fix(a+(b-a+1)*x):产生[a,b]区间上均匀分布的随机整数。randn函数:产生均值为0、方差为1的标准正态分布随机数x。u+ax:得到均值为u、方差为a的平方的随机数。
A=fix(10+(99-10+1)*rand(5))%取0到99的整数
B=0.6+sqrt(0.1)*randn(5)%产生均值为0.6,方差为0.1的5阶正态分布随机矩阵
C=eye(5)
(A+B)*C==C*A+B*C
%魔方矩阵 每行或每列之和相等
M=magic(3)
%例子产生8阶魔方阵,求第一行与第一列之和
M=magic(8)
H=sum(M(1,:)) %求和
L=sum(M(:,1))
%vander(V)产生以向量V为基础的范德梦矩阵
VV=vander(1:1:5)%产生以一到五为基础的范德梦矩阵
%hilb(m)生成m阶希尔伯特矩阵
h=hilb(4)
format rat%设置输出格式为有理数
h
%compan(q)生成伴随矩阵,p是一个多项式的系数向量
%例子生成多项式3x^3-2x^2-5x+6的伴随矩阵
q=[1 -2 -5 6]
compan(q)
%pascal(m)帕斯卡矩阵,第一行和第一列元素都为1,其余位置为左边与上面元素想加
format rat
p1=pascal(5)
%求逆矩阵inv(p)
inv(p1)
%矩阵变换
%对角阵 1.提取矩阵主对角线元素diag(a),diag(A,k)提取矩阵A第k条对角线元素;
%(主对角线上面为第一条,下面为负一条)diag(V)以向量V为主对角线元素产生对角
%阵,diag(V,k)以向量V为第k条对角线元素,产生对角矩阵。
%例子先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5(本质就是左乘对角阵)。
A1=[7 0 1 0 5;3 5 7 4 5;4 0 3 0 2;1 1 9 2 3;1 8 5 2 9]
A2=diag(1:1:5)
A1=A2*A1
%上三角矩阵,triu(A)提取A的主对角线及以上的元素。triu(A,k)提取矩阵A第k条对角线及以上元素
triu(ones(4),-1)%提取第负一条对角线及以上元素,剩下部分填0
%下三角矩阵,tril(A)与triu(A)用法完全相同
%矩阵转置(.') 共轭转置(')
A3=[1 3;3+4i,1-2i]
A3.'
A3'
%矩阵的旋转 rot90(A,k)将矩阵逆时针旋转K*90°,k为1可省略
A4=[1 3 2;-3 2 1;4 1 2]
rot90(A4)
rot90(A4,2)
%矩阵翻转fliplr(A)左右转,flipud(A)上下转
%例子验证魔方阵的主对角线、副对角线之和相等
A5=magic(5)
D1=diag(A5)
B=flipud(A5)%上下翻转副对角线变主对角线
D2=diag(A5)
x1=(sum(D1)==sum(D2))
2021-09-26
最新推荐文章于 2025-04-28 23:37:45 发布