Matlab 专题一

Matlab 专题一

一、系统环境

1、“...”  换行符号

2、变量名的优先级,高于内部的函数;变量名要避开内有特定含义词。

3、设置文件搜索路径,“ path ”命令,>>path(path,'d:\work'); 将D盘下的work文件夹设为文件搜索路径

4、Matlab 首先执行当前文件夹下的文件,然后再去执行搜索路径文件夹下的同名M文件。

5、重点时设置当前文件夹文件搜索路径

6、Ctrl + R 注释掉一行;Ctrl + T 撤销注释此行

二、数值数据

数值数据默认为双精度型

“class()” 函数,可以用来查看变量的数据类型

1、整型(int8; uint8; int16; uint16; int32; uint32; int64; uint64)共有八种类型的你函数

int8()函数:  将其他类型的数据转换为有符号8位整型,取值范围:   -2^7  ~  2^7-1;

uint8()函数:将其他类型的数据转换为无符号8位整型,取值范围:   0  ~  2^8-1;

%{
多行注释语句写在这
%}
x = int8(129); %将数值数据129定义为有符号8位整型数据
y = uint8(129); %将数值数据129定义为无符号8位整型数据

 2、浮点型(single; double)共两种类型的函数

single()函数:将其他类型的数据转换为单精度型;

double()函数:将其他类型的数据转换为双精度型;

3、复型(包括实部和虚部,实部和虚部默认都是双精度)(虚数单位用 i 或者 j 来表示)

real()函数:求复数的实部;

imag()函数:求复数的虚部;

4、数值数据的输出格式

format 命令的格式:format 格式符 (只会影响数据输出格式,不会影响数据的输出和存储)

>> format long %输出格式设置为 小数点后15位
>> 4/3

ans =

   1.333333333333333

>> format %恢复默认的输出格式 小数点后4位
>> 4/3

ans =

    1.3333

5、常用数学函数

函数的调用格式为:函数名(函数自变量值

函数的自变量规定为矩阵变量,当然也可以是标量,标量本身是矩阵的一种特例。函数在运算时是将函数逐项作用于矩阵的每个元素上,所以最后运算的结果就是一个与自变量同型的矩阵

>> A = [4,2;3,6]

A =

     4     2
     3     6

>> B = exp(A)

B =

   54.5982    7.3891
   20.0855  403.4288

①三角函数( sin(); sind()
 

>> sin(pi/2) %以弧度为自变量的三角函数

ans =

     1

>> sind(90) %以角度为自变量的三角函数,后面有个d以示区分

ans =

     1

②abs函数(可以用来求实数的绝对值、复数的模、字符串的ASCII码值)

>> abs(-pi) %求实数的绝对值

ans =

    3.1416

>> abs(5+12j) %求复数的模值

ans =

    13

>> abs('%') %字符串的ASCII码值

ans =

    37

③取整的函数( fix()、floor()、ceil()、round() )

fix()函数:固定取靠近0的整数,即直接舍去小数点后的整数;

round()函数:四舍五入取整;

ceil()函数:向上取整,取大于这个数的最小整数;

floor()函数:向下取整,取小于这个数的最大整数;

④取余数的函数( rem() )

求[1,100]区间内的所有素数(实例)

x = 1:100;       %定义一个1到100的向量
k = isprime(x);  %isprime()函数:是素数返回1,不是素数返回0
k1 = find(k);    %find()函数:返回向量k中不是零的元素的序号
p = x(k1);
disp(p);         %输出p到命令行

%{
x k都是长度为100向量
%}

三、变量及其操作

1、变量本质上讲是内存单元的一个抽象。变量一般都有一个名字,通过名字就能访问到该变量,或者说通过名字就能访问到内存单元。

2、变量名区分大小写,标准函数名和命令名一般都用小写字母。

3、ans是默认赋值变量

4、i和j代表虚数单位

5、pi代表圆周率

6、NaN代表非数(绘图)

变量管理

who命令,用来查看已定义变量的变量名。

whos命令,用来查看已定义变量的详细信息。

变量保存,.mat文件,MAT文件

变量保存与调用

%变量永久保存与调用%



%变量初始化%

>> x = 3;
>> y = 4;
>> z = 5;
>> save mydate1 x y z       %将变量 x y z 保存到 mydate1.mat文件中




%下次要使用 mydate1 中的变量时,输入以下命令即可%

>> load mydate1             %将mydate1中保存的变量装载到工作区的变量中

四、Matlab矩阵的表示

1、矩阵的建立

(1)直接建立矩阵

>>A = [1,2,3;4,5,6;7,8,9]        分行用逗号,分列用分号

A = 

1        2        3

4        5        6

7        8        9

(2)拼接矩阵

多个行列合适的矩阵可以拼接到一起

(3)同型矩阵可以构成复数矩阵

例如:A和B是同型矩阵,C = A + i*B; 则C就是一个复数矩阵

 2、行向量

(1)冒号表达式

(2)linspace函数

linspace(a,b,n) ;

a 是第一个元素

b 是最后一个元素

n 是向量总数

 3、结构矩阵和单元矩阵

(1)结构矩阵

(2)单元矩阵

五、矩阵元素的引用

1、矩阵元素通过下标来引用

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

引用用小括号

2、通过序号来引用

矩阵元素的存储是按列存储的、首先是第一列元素、然后再存储第二列元素...一直到最后一列元素。

矩阵元素的序号就是矩阵元素在内存中的序号。

3、sub2ind()函数 与 ind2sub()函数

sub2ind()函数:将矩阵中指定元素的行、列下标转换成存储的序号

ind2sub()函数:将矩阵中指定元素的存储的序号转换成元素的行、列下标


>> A =

     1     2     3
     4     5     6

>> D = sub2ind(size(A),[1,2;2,1],[3,2;3,2])

D =

     5     4
     6     3
% D = sub2ind(矩阵的行数、列数组成的二维向量,行下标,列下标)%
A =

     1     2     3     4     5
     6     7     8     9    10

>> [I,J] = ind2sub(size(A),[1,2,3,4])

I =

     1     2     1     2


J =

     1     1     2     2
% [I,J] = ind2sub(矩阵行数、列数组成的向量,序号) %

4、利用冒号表达式获得子矩阵

A(i,:)        第i行的全部元素

A(:,j)        第j列的全部元素

A(i:i+m,k:k+m)        矩阵第i至i+m行、第k至k+m列的全部元素

end运算符表示某一维的末尾元素下标(是一个数)

A =

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

>> A([1,4],3:end) % 结果为:第1行和第4行 的 第3到5列 组成的子矩阵 %

ans =

     3     4     5
    18    19    20

5、删除矩阵中的元素

利用空矩阵来删除矩阵中的元素

>> A

A =

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

>> x=[]

x =

     []

>> A(1,:)=[]

A =

     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

6、改变矩阵的形状

reshape(A,m,n): 在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

reshape()函数只会改变矩阵的行数和列数,不会改变元素的总数,不会改变元素的存储顺序。

A =

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

>> reshape(A,5,4)

ans =

     1     7    13    19
     6    12    18     5
    11    17     4    10
    16     3     9    15
     2     8    14    20

>> reshape(A,2,10)

ans =

     1    11     2    12     3    13     4    14     5    15
     6    16     7    17     8    18     9    19    10    20

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

>> B=[1:4;5:8]

B =

     1     2     3     4
     5     6     7     8

>> B(:)

ans =

     1
     5
     2
     6
     3
     7
     4
     8

六、Matlab基本运算

1、基本算术运算

矩阵加减运算:必须是两个同型矩阵,相加减后得到新的矩阵。

矩阵乘法运算:A乘B,要求A、B矩阵是可乘的,A的列数要与B的行数相等。(线性代数中矩阵的乘法)

矩阵的除法运算:有两种,右除/ 和 左除\;如果A矩阵是非奇异方阵,则B/A等效于B* inv(A),A\B等效于inv(A)*B。(inv()是取矩阵的逆

CS理解:被除号压在下面的是被除数。

对于矩阵运算,一般情况下A\B 不等于 B/A ,含有标量(非向量)的运算两种除法结果相同

% 左除右除的区别 %
>> a=[10.5,50]

a =

   10.5000   50.0000

>> a/5

ans =

    2.1000   10.0000

>> 5\a

ans =

    2.1000   10.0000

乘方运算:

一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量(非向量)。

>> A

A =

     1     2     3
     4     2     6
     7     4     9

>> A^2

ans =

    30    18    42
    54    36    78
    86    58   126

>> A*A

ans =

    30    18    42
    54    36    78
    86    58   126

点运算:

点运算符:.* ./ .\ .^,分别是点乘、点右除、点左除、点乘方。

要求连个矩阵为同型矩阵,两矩阵进行点运算,是指它们的对应元素进行相关运算

 思考:

>> x=0.1:0.3:1;
>> y=sin(x).*cos(x);
>> y

y =

    0.0993    0.3587    0.4927    0.4546

此程序中x是一个向量,包含0.1、0.4、0.7、1四个元素;

sin(x)和cos(x)同样都是向量;所以要用点运算。

2、关系运算符 

<、<=、>、>=、==(等于)、~=(不等于)

当参与比较的量是两个同型矩阵时,比较是对两矩阵相同位置的元素按标量关系规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

当参与比较的量一个是标量,而另一个是矩阵时,则把标量与矩阵的每个元素按标量关系规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

3、逻辑运算

&、|、~  :  与、或、非

若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置
上的元素按标量规则逐个进行运算,最终运算结果是一个与
原矩阵同型的矩阵,其元素由或0组成。

若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量
与矩阵中的每个元素之间按标量规则逐个进行运算,最终运
算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。

水仙花数例子

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

>> s = m(k)

s =

   153   370   371   407

优先级问题:

算数运算优先级最高,其次是关系运算,最后是逻辑 运算;单目运算的~比双目运算优先级要高。

七、字符串处理

 在 MATLAB中,字符串是用单引号括起来的字符序列。
>>xm= 'Central South University'
>>xm(1:3)
ans =
Cen

>> 'I''am a teacher'

ans =

    'I'am a teacher'

字符串中有单引号,则要用两个单引号来表示实际上的一个单引号。

建立多行字符串,形成字符串矩阵。

 1、字符串操作

(1)字符串执行函数 eval(s) ,其中 s 是字符串。就是将s字符串的内容作为matlab命令来执行

(2)字符串与数值之间的转换(小写字母比大写字母ASCII码值大32)
》》》abs和 double函数都可以用来获取字符串矩阵所对应的
        ASCII码数值矩阵。


》》》char函数可以把ASCII码矩阵转换为字符串矩阵。

>> s1 = 'MATLAB';
>> a = abs(s1)

a =

    77    65    84    76    65    66

>> char(a+32)

ans =

    'matlab'

>> char(a)

ans =

    'MATLAB'

(3)字符串比较

字符串的比较有两种方法:利用关系运算符或字符串比较函数。

关系运算符比较:两个字符串里的每个字符依按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。

字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:

① strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0.

② strncmp(sl, s2n):用来比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0.
③ stromal(sl,S2):在忽略字母大小写前提下,比较字符串S1和s2是否相等,如果相等,返回,否则返回0.
④ strncmpl(sl,s2n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等,返回,否则返回0。

字符串的查找与替换函数

1、findstr(sl,s2):返回短字符串在长字符串中的开始位置。
2、strep(sls2,s3):将字符串s1中的所有子字符串s2替換为字符串s3。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值