1.复数
6+5i
ans =
6.0000 + 5.0000i
>> 6+5j
ans =
6.0000 + 5.0000i
2.Format
数值数据输出格式
>> format long
>> 50/3
ans =
16.666666666666668
>> format(默认short)
>> 50/3
ans =
16.6667
只影响输出格式,不影响计算和存储
3.常用数学函数
调用:函数名(函数自变量的值)
>> A=[4,2;3,6]
A =
4 2
3 6
>> B=exp(A)(自然指数)
B =
54.5982 7.3891
20.0855 403.4288
三角函数:
>> sin(pi/2)(弧度)
ans =
1
>> sind(90)(角度加d)
ans =
1
abs函数:
实数的绝对值,复数的模,字符串的ASCII码值
>> abs(-4)
ans =
4
>> abs(3+4i)
ans =
5
>> abs('a')
ans =
97
取整:
fix(舍去小数),floor(向下取整),ceil(向上取整),round(四舍五入)
>> round(4.7)
ans =
5
>> floor(3.6)
ans =
3
>> fix(-3.2)
ans =
-3
>> ceil(-3.8)
ans =
-3
求余:
rem,mod
应用举例:
求三位正整数的个位数字,十位数字,百位数字
>> m=345
m =
345
>> m1=rem(m,10)
m1 =
5
>> m2=rem(fix(345/10),10)
m2 =
4
>> m3=fix(345/100)
m3 =
3
求[1,100]区间的所有素数
isprime(n):判断n是否为素数的matlab的函数
>> x=1:100;
>> k=isprime(x)
k =
1×100 logical 数组
列 1 至 31
0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1
列 32 至 62
0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0
列 63 至 93
0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0
列 94 至 100
0 0 0 1 0 0 0
>> k1=find(k)(k1为k向量中非0元素的序号)
k1 =
列 1 至 20
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71
列 21 至 25
73 79 83 89 97
>> p=x(k1)
p =
列 1 至 20
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71
列 21 至 25
73 79 83 89 97
4.变量与赋值语句
变量:
内存单元的一个抽象
有名字,通过变量名访问内存单元
字母开头,后接字母,数字,下划线
区分字母大小写
赋值:
变量=表达式
表达式,(值赋给预定义变量ans
;仅赋值,不显示结果
>> x=sqrt(7)-2i;(平方根)
>> y=exp(pi/2);(自然指数函数)
>> z=(5+cosd(47))/(1+abs(x-y))
z =
1.4395
ans计算结果的默认赋值变量
pi圆周率
NaN非数
I和j虚数单位
变量的管理:
删除和修改:
工作区窗口:内存变量的管理
who和whos:
已经存在的变量清单
who只显示驻留变量名称
whos变量名,大小,所占字节数,数据类型
内存变量文件:
用文件将工作区有用的变量长久的保留下来(.mat)
save命令:创建
load命令:装入
save mydata a x(将a x变量保存到mydata.mat文件中)
load mydata
5.矩阵的表示
建立:
1.直接输入
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
中括号,逗号,空格,分好
2.利用已建立好的矩阵建立更大的矩阵
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> B=[-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 -3
4 5 6 -4 -5 -6
7 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]
B =
1 2 3
4 5 6
>> C=[6 7 8;9 10 11]
C =
6 7 8
9 10 11
>> A=B+i*C
A =
1.0000 + 6.0000i 2.0000 + 7.0000i 3.0000 + 8.0000i
4.0000 + 9.0000i 5.0000 +10.0000i 6.0000 +11.0000i
冒号表达式:
产生行向量
e1:e2:e3(初始值,步长,终止值)
>> t=0:1:5
t =
0 1 2 3 4 5
linspace函数:
产生行向量
linspace(a,b,n)(第一个元素,第二个元素,元素总数)
>> x=linspace(0,pi,6)
x =
0 0.6283 1.2566 1.8850 2.5133 3.1416
结构矩阵:
数据类型不同而逻辑上相爱难过关的数据组成一个有机整体
结构数据类型
结构矩阵元素.成员名=表达式
单元矩阵:
单元矩阵元素用大括号括起来
矩阵元素的引用
下标引用
A(3,2)A矩阵第三行,第二列
>> A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> A(4,5)=10
A =
1 2 3 0 0
4 5 6 0 0
0 0 0 0 0
0 0 0 0 10
矩阵元素序号
矩阵按列存储
>> A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> A(3)
ans =
2
序号与下标相互转换:
sub2ind(将行列下标转换为序号),D=sub2ind(S,I,J)行数和列数组成的向量,行下标,列下标
>> A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])
D =
1 2
6 4
ind2sub([I,J]=ind2sub(S,D)
>> [I,J]=ind2sub([3,3],[1,3,5])
I =
1 3 2
J =
1 1 2
冒号表达式获得子矩阵
A(I,:)第i行全部元素
A(:,j)第j列全部元素
A(i:i+m,k:k+m)
A(i:i+m,:)
end运算符
某一维的末尾元素下标
删除矩阵元素
空矩阵
>> A=[1,2,3,0,0;7,0,9,2,6;1,4,-1,1,8]
A =
1 2 3 0 0
7 0 9 2 6
1 4 -1 1 8
>> A(:,[2,4])=[]
A =
1 3 0
7 9 6
1 -1 8
改变矩阵形状
reshape(A,m,n)
A(:):每一列元素堆起来,成为一个列向量
>> A=[-45,65,71;27,35,91]
A =
-45 65 71
27 35 91
>> B=A(:)
B =
-45
27
65
35
71
91
6.运算
算数运算
基本
四则运算:
加减:矩阵同型
乘:A列=B行
右除/,左除\:
乘方:^
(矩阵意义下
点运算
.* ./ .\ .^
对应元算进行相关运算
关系运算
< <= > >= == ~=
关系成立1,
>> 3>4
ans = logical 0
判断A的元素是否为偶数
>> A=[24,35,13;22,63,23;39,47,80]
A =
24 35 13
22 63 23
39 47 80
>> P=rem(A,2)==0(余数
P =
3×3 logical 数组
1 0 0
1 0 0
0 0 1
逻辑运算
&与,|或,~非
算数>关系>逻辑(单目>双目)
7.字符串
单引号括起来的字符序列
字符串当作行向量
多行字符串:字符串矩阵
>> ch=['abcdef';'123456']
ch =
2×6 char 数组
'abcdef'
'123456'
>> ch(2,3)
ans =
'3'
>> ch=['ABc123d4e56Fg9']
ch =
'ABc123d4e56Fg9'
>> subch=ch(1:5)(第一到第五个元素
subch = 'ABc12'
>> revch=ch(end:-1:1)(倒过来排列
revch = '9gF65e4d321cBA'
>> k=find(ch>='a'&ch<='z')(找到小写字母的位置
k = 3 7 9 13
>> ch(k)=ch(k)-('a'-'A')
ch =
'ABC123D4E56FG9'
eval(s)
>> t=pi;
>> m='[t,sin(t),cos(t)]';
>> y=eval(m)
y =
3.1416 0.0000 -1.0000
与数值的转换
>> s1='MATLAB';
>> a=abs(s1)(字符串对应的ASCII码
a = 77 65 84 76 65 66
>> char(a+32)(把ASCII码矩阵转换为字符串矩阵
ans = 'matlab'
字符串比较
1.关系运算符
比较对应的ASCII码值,结果为数值向量1,0
>> 'www0'>='W123'
ans =
1×4 logical 数组
1 1 1 0
2.字符串比较函数
判断字符串是否相等
strcmp(s1,s2):是否相等
strncmp(s1,s2,n):前n个字符是否相等
strcmpi(s1,s2):忽略大小写,是否相等
strncmpi(s1,s2,n)
>> strcmp('www0','w123')
ans = logical 0
>> strncmpi('Www0','w123',1)
ans = logical 1
查找与替换:
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!'