matlab基础知识

matlab语言主要功能:
数值计算 符号计算 图形绘制 程序流程控制 工具箱

1.1matlab系统环境

…:续行符
更改当前文件夹:cd+路径
clear:清除工作区的全部变量

1.2数值数据

分类:整型,浮点型,复数型
(1)整型
uint8:转换为无符号8位整型(0-28-1)
int8:转换为带符号8位整型(-27-1, 27-1)
eg:

x=int8(129)

x =

127

x=uint(129)

x =

NumericType (具有属性):

  DataTypeMode: 'Fixed-point: binary point scaling'
    Signedness: 'Unsigned'
    WordLength: 129
FractionLength: 0
       IsAlias: 0
     DataScope: 'Auto'
    HeaderFile: ''
   Description: ''

(2)浮点型
单精度:4字节
双精度:8字节(默认)
single:转换为单精度
double:转换为双精度
eg:>> class(4) class是类型

ans =

double

class(single(4))

ans =

single

(3)复数型:实部+虚部(默认双精度)
虚数单位用i或j表示
eg

6+5i

ans =

6.0000 + 5.0000i

6+5j

ans =

6.0000 + 5.0000i

数值数据的输出格式:format格式符(只影响输出格式,不影响运算和存储)
eg:>> format long

50/3

ans =

16.666666666666668

format (回到默认short)
50/3

ans =

16.6667

常用数学函数:
(1)函数的调用格式:函数名(函数自变量的值)
eg: >> a=[4,2;3,6]

a =

 4     2
 3     6

b=exp(a) # exp(x)=ex

b =

54.5982 7.3891
20.0855 403.4288

(2)常用函数的应用
①:以°为单位的函数在函数后面加d
eg:

sin(pi/2)

ans =

 1

sind(90)

ans =

 1

②:abs可求实数的绝对值,复数的模,字符串的ASCII值
eg:

abs(-4)

ans =

 4

abs(4+3i)

ans =

 5

abs(‘a’)

ans =

97

3.取整函数

  • round:四舍五入取整
  • ceil:向上取整
  • floor:向下取整
  • fix:固定取靠近0的整数
    eg:

round(4.7)

ans =

 5

ceil(-3.8)

ans =

-3

floor(3.6)

ans =

 3

fix(-3.2)

ans =

-3

④:函数应用举例
1.分别求一个三位整数的个位,十位,百位

m=345;
m1=rem(m,10)

m1 =

 5

m2=rem(fix(m/10),10)

m2 =

 4

m3=fix(m/100)

m3 =

 3

2.求【1,100】之间所有素数
isprime(n):n为素数返回1,否则返回0

x=1:100;
k=isprime(x);
k1=find(k); #find找出k1向量中的元素为k向量中非0元素的序号
p=x(k1) #输出x中所有素数

p =

1 至 14 列

 2     3     5     7    11    13    17    19    23    29    31    37    41    43

15 至 25 列

47    53    59    61    67    71    73    79    83    89    97

1.3变量及其操作

变量名:字母+数字下划线(区分字母大小写)
注:标准函数名,命令名必须小写
eg: 5 + c o s 47 ° 1 + ∣ x − y ∣ \frac{5+cos47°}{1+|x-y|} 1+xy5+cos47°
其中x= 7 \sqrt 7 7 -2i ,y= e p i / 2 e^{pi/2} epi/2

x=sqrt(7)-2i;
y=exp(pi/2);
z=(5+cosd(47))/(1+abs(x-y))

z =

1.4395

预定义变量:由系统本身定义的变量
eg:ans是默认赋值变量
NaN是非数

变量的管理:who与whos命令:显示已有的变量信息

1.4矩阵的表示

矩阵的建立:(1)直接法
(2)用先建立好的小矩阵拼接成大矩阵
eg:

a=[1,2];
b=[3,4];
c=[a,b;b,a]

c =

 1     2     3     4
 3     4     1     2

(3)复数矩阵
eg:

d=a+i*b

d =

1.0000 + 3.0000i 2.0000 + 4.0000i

冒号表达式
格式:e1:e2:e3 初值:步长:终值

t=0:1:5

t =

 0     1     2     3     4     5

linspace函数:产生行向量
linspace(a,b,n) 第一个元素:最后一个元素:元素总数
注:n省略时,自动产生100个元素

l=linspace(0,pi,6)

l =

     0    0.6283    1.2566    1.8850    2.5133    3.1416

结构矩阵和单元矩阵:
(1)结构矩阵:
格式:结构矩阵元素.成员名=表达式

a(1).x1=1;a(1).x2=‘liu’;a(1).x3=[1,2];
a(2).x1=2;a(2).x2=‘liu’;a(2).x3=[3,4];
a(3).x1=3;a(3).x2=‘liu’;a(3).x3=[5,6];
a

a =

1x3 struct array with fields:

x1
x2
x3

(2)单元矩阵:用大括号

b={1,‘liu’,[1,2];2,‘cai’,[3,4];3,‘wang’,[5,6]}

b =

[1]    'liu'     [1x2 double]
[2]    'cai'     [1x2 double]
[3]    'wang'    [1x2 double]

1.5矩阵元素的引用

(1)通过下标:

A=[1,2;3,4];
A(3,4)=5

A =

 1     2     0     0
 3     4     0     0
 0     0     0     5

(2) 通过序号:矩阵再matlab中按列存储

A=[1,2,3;4,5,6]

A =

 1     2     3
 4     5     6

A(5)

ans =

 3

相互转换:

  • sub2ind:行列下标转换为存储序号
    d=sub2ind(S,I,J) 行数和列数组成的向量,转换矩阵元素的行下标,列下标
    注:A矩阵如上,D时一个序号矩阵,每一个元素都代表序号

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) 第i-i+m行内且在第k-k+m列中的所有元素
A(i:i+m,:) 第i-i+m行的全部元素

A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]

A =

 1     2     3     4     5
 6     7     8     9    10
11    12    13    14    15

A(1:2,:)

ans =

 1     2     3     4     5
 6     7     8     9    10

A(2:3,1:2:5)

ans =

 6     8    10
11    13    15

end运算符:表示某一维末尾元素的下标
注:A如上

A(end,:)

ans =

11    12    13    14    15

A([1,3],3:end) #【1,3】是第一行和第三行

ans =

 3     4     5
13    14    15

利用空矩阵删除矩阵元素:

A(:,[2,5])=[] # 删除第二列和第五列的元素

A =

 1     3     4
 6     8     9
11    13    14

改变矩阵的形状:
reshape(A,m,n):总元素保持不变,重新排列成m*n的二维矩阵

A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]

A =

 1     2     3     4     5
 6     7     8     9    10
11    12    13    14    15

reshape(A,5,3)

ans =

 1    12     9
 6     3    14
11     8     5
 2    13    10
 7     4    15

A(:):将矩阵A中每一列元素堆叠起来,成为一个列向量

1.6matlab基本运算

算术运算:矩阵意义下进行的
基本运算符:+,-,,/(右除),(左除),^(乘方)
(1)基本算术运算
加减:矩阵同型,就是矩阵的加减法
乘法:矩阵的乘法,A的行数要和B的列数相同
B/A=B
inv(A)
A\B=inv(A)*B
注:前提是A矩阵可逆,inv是求逆矩阵
乘方:A^x,要求A为方阵,x为标量

(2)点运算:要求矩阵同型

A=[1,2,3;,4,5,6;7,8,9];
B=[1,0,1;1,0,1;1,0,1];
C=A.*B

C =

 1     0     3
 4     0     6
 7     0     9

D=A*B

D =

 6     0     6
15     0    15
24     0    24

当x=1,4,7,10时,分别求y=sinxcosx的值

x=1:3:10;
y=sin(x).*cos(x)

y =

0.4546    0.4947    0.4953    0.4565

关系运算:==(等于) ~=(不等于)

  • 当两个比较量是标量时,直接比较大小,成立1,否则0.
  • 当两个同型矩阵,对两矩阵相同位置的元素逐个比较,最终结果也是一个同型矩阵,元素由0,1构成
  • 标量与矩阵,则把标量与矩阵的每一个元素逐个比较,得出与原矩阵同型的矩阵,元素由0,1构成
    eg:建立A-3,判断A 的元素是否为偶数

A=[1,2,3;,4,5,6;7,8,9];
P=rem(A,2)==0

P =

 0     1     0
 1     0     1
 0     1     0

逻辑运算:&(与) |(或) ~(非)
单目>双目
eg:水仙花数:各位数字的立方和等于该数本身的三位数

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

r=m(k)

r =

153 370 371 407

1.7字符串处理

**字符串的表示:**字符串中的单引号要用双引号替换表示
eg:

  1. 取第1-5个字符组成的子字符串
  2. 将字符串倒序重新排列
  3. 小写变大写,其余不变
  4. 统计小写字母个数

ch=‘ABc123d4e56Fg9’;
subch=ch(1:5)

subch =

ABc12

revch=ch(end👎1)

revch =

9gF65e4d321cBA

k=find(ch>=‘a’&ch<=‘z’)

k =

 3     7     9    13

ch(k)=ch(k)-(‘a’-‘A’) #小写字母减去大小写字母之间的差值(32)得到大写字母

ch =

ABC123D4E56FG9

length(k)

ans =

 4

字符串的操作:
(1)字符串的执行:matlab中eval()函数的功能就是将括号内的字符串视为语句并运行。

t=pi;
m=’[t,sin(t),cos(t)]’;
y=eval(m)

y =

3.1416    0.0000   -1.0000

(2)字符串与数值之间的转换
char可把ASCII码矩阵转化为字符串矩阵

s=‘MATLAB’;
s1=abs(s)

s1 =

77    65    84    76    65    66

char(s1+32)

ans =

matlab
(3)字符串的比较:
关系运算符:按ASCII码依次比较,1,0

‘www0’>=‘W123’

ans =

 1     1     1     0

字符串比较函数:1,0

  1. strcmp(s1,s2):比较是否相等
  2. strncmp(s1,s2,n):比较两字符串前n个字符是否相等
  3. strcmpi(s1,s2):忽略字母大小写,比较是否相等
  4. strncmpi(s1,s2,n):忽略字母大小写,比较两字符串前n个字符是否相等
    (4)字符串的查找与替换
    findstr(s1,s2):返回短字符串在长字符串中的开始位置
    strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3

p=findstr(‘This is a test!’,‘is’)

p =

 3     6

m=findstr(‘is’,‘This is a test!’)

m =

 3     6

n=strrep(‘This is a test!’,‘test’,‘class’)

n =

This is a class!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值