matlab学习1

假如想象 提交于 2019-12-04 18:26:48

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!'

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!