基础MATLAB知识

基础MATLAB知识

 (1)在每一行的语句后面加上分号(英文分号;)表示不显示运行结果

1

a = 3;   %显示运行结果3

a = 5    %不显示运行结果

(2)多行注释:选中要注释的若干语句,快捷键Ctrl+R

(3)取消注释:选中要取消注释的语句,快捷键Ctrl+T

clear和clc

clear:清除工作区的所有变量

1

clear

clc:清除命令行窗口中的所有文本,让屏幕变得干净

1

clc

clear和clc一起用:“初始化”的作用,防止之前的结果对新脚本文件(后缀名是 .m)产生干扰。

1

clear;clc

 % 分号:用于区分行,注释。

函数部分

输出和输入函数(disp 和 input)

输出函数disp ():(类比于C语言中的printf()函数)

1

2

3

4

5

6

disp('abcdefg')

a = [1,2,3]    %同一行中间用逗号分隔,也可以不用逗号,直接用空格

a = [1 2 3]

disp(a)

% 注意,disp函数比较特殊,可要分号,可不要分号

disp(a);

input函数:输入函数

1

x=input(prompt)           %显示 prompt 中的文本并等待用户输入值后按 Return 键。

1

str = input(prompt,'s')   %返回输入的文本,而不会将输入作为表达式来计算。

 举例:(如果要输入一个矩阵)

1

A = input('请输入A:');

运行后

1

2

3

4

请输入A:

      [1 2 3

       4 5 6

       7 8 9]

加分号和不加分号的区别

num2str ():字符串函数, 将数字转换为字符串

1

2

c = 100

num2str(c)

字符串合并:

1

(1)strcat(str1,str2……,strn)

1

strcat('字符串1','字符串2')

1

(2)[str 1,str 2,……, str n]或[str1  str2  ……  strn]

1

2

['字符串1'  '字符串2']

['字符串1','字符串2']

 举例:

1

2

3

4

c = 100

num2str(c)

disp(['c的取值为' num2str(c)])

disp(strcat('c的取值为'num2str(c)))

size()函数:数组大小

A=[1,2,3,4] 这是向量

A=[1,2,3;4,5,6;7,8,9]这是矩阵

size(A):来求矩阵的大小的,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数

[r,c] = size(A):将矩阵A的行数返回到第一个变量r,将矩阵的列数返回到第二个变量c

1

2

r = size(A,1) %返回行数

c = size(A,2) %返回列数

for循环

1

2

3

for i = 1:n   %循环哦,这一行后面不能加冒号(和Python不同),这里表示循环n次

        SUM_A = [SUM_A; Sum_A]

    end

if判断语句
if所在的行不需要冒号,语句的最后end结尾 ;中间的语句要注意缩进。

1

2

3

4

5

6

7

8

a = input('请输入考试分数:')

if a >= 85

  disp('成绩优秀')

elseif a >= 60

  disp('成绩合格')

else

  disp('成绩挂科')

end

sum()函数

(1)向量(无论是行向量还是列向量),直接求和

1

2

E = [1,2,3]%行向量

sum(E)ans=  6

1

2

E = [1;2;3]%列向量

sum(E)ans=  6

(2)矩阵,根据行和列的方向作区分

a=sum(x);  或 a=sum(x,1);   %按列求和(得到一个行向量)

a=sum(x,2);   %按行求和(得到一个列向量)

a=sum(x(:));  %对整个矩阵求和

E= [1 -3 0;0 0 8;4 0 6]

1

E=1  -3  00  0   84  0   6(1)按列求和

1

2

3

4

5

6

a = sum(E)  %a = sum(E,1),

ans=  5  -3  14(2) 按行求和

a = sum(E,2)

 

ans=  -2  8  10(3)对整个矩阵求和

a = sum(E(:))ans=  16

prod()函数

prod函数和sum函数类似,一个用于乘,一个用于加

A= [1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1]

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

prod(A)

 

ans =

 

    0.2500    0.2500   96.0000    0.0123   13.5000

 

prod(A,2)

 

ans =

 

    4.0000

    4.0000

    0.0104

   81.0000

    0.0741

 abs()函数:对数组元素进行绝对值处理

matlab中如何提取矩阵中指定位置的元素?
(1)取指定行和列的一个元素(输出的是一个值)

1

A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1]

1

2

A(2,1)ans=  1

A(3,2)ans=0.2500

(2)取指定的某一行的全部元素(输出的是一个行向量)

1

A(2,:)ans=   1.0000    1.0000    4.0000    0.3333    3.0000

1

A(5,:)ans=   0.3333    0.3333    2.0000    0.3333    1.0000

(3)取指定的某一列的全部元素(输出的是一个列向量)

1

A(:,1)ans=  

1.0000
1.0000
0.2500
3.0000
0.3333


(4)取指定的某些行的全部元素(输出的是一个矩阵)

1

A([2,5],:) % 只取第二行和第五行(一共2行)ans=  

1.0000 1.0000 4.0000 0.3333 3.0000
0.3333 0.3333 2.0000 0.3333 1.0000

1

A(2:5,:) % 取第二行到第五行(一共4行)ans=

1.0000 1.0000 4.0000 0.3333 3.0000
0.2500 0.2500 1.0000 0.3333 0.5000
3.0000 3.0000 3.0000 1.0000 3.0000
0.3333 0.3333 2.0000 0.3333 1.0000

1

A(2:2:5,:) % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)

ans =

1

 

1.0000 1.0000 4.0000 0.3333 3.0000
3.0000 3.0000 3.0000 1.0000 3.0000

1

2

A(2:end,:) % 取第二行到最后一行

A(2:end-1,:) % 取第二行到倒数第二行


(5)取全部元素(按列拼接的,最终输出的是一个列向量)

1

A(:)ans=

1.0000
1.0000
0.2500
..........

repmat()函数
B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。

1

2

3

A = [5 -3 14]

B = repmat(A,3,1)

ans=

1

5 -3  14

1

5 -3  14

1

5 -3  14

1

  

Matlab中矩阵的运算

逻辑符号

1

~=  不等号||  逻辑运算符‘或’

1

&&  逻辑运算符‘且’

矩阵与常数的大小判断
三种运算符:

大于> ;小于< ;等于 == (一个等号表示赋值;两个等号表示判断)

1

2

X = [1 -2 3;4 5 6;7 -8 9]

X <0

 

1

2

ans=0  1  00  0  00  1  0

%X中的元素与0比得到结果

 

  

1

2

3

if sum(sum(A <= 0)) > 0   % A中有元素小于0,则(A<=0)>0,sum(A <= 0)的值>0,sum(sum(A <= 0)) > 0  

        ERROR = 2;

end

  

 

转置矩阵

A' 表示求出 A 的转置矩阵,即将a_ij和a_ji互换位置

one()函数

1

2

ones(n);    %生成一个n*n的全为1的方阵, zeros(n)函数生成一个n*n的全为0的方阵

ones(m,n);   %生成一个m*n的全为1的矩阵

 

1

A' .* A =  ones(n)

矩阵运算:

“ / ” 和“ * ”    矩阵之间的乘法与除法

“ ./ ”和“ .* ”   对应元素之间的乘除法

如果a_ij * a_ji = 1 满足, 那么A和A'对应元素相乘应该为1

“*”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B))

1

2

3

4

5

6

7

A = [1,2;3,4]

B = [1,0;1,1]

A * B

inv(B) % 求B的逆矩阵

B * inv(B)

A * inv(B)

A / B

两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./”

1

2

3

4

A = [1,2;3,4]

B = [1,0;1,1]

A .* B

A ./ B

每个元素同时和常数相乘或相除

1

2

3

4

5

A = [1,2;3,4]

A * 2

A .* 2

A / 2

A ./ 2

每个元素同时乘方时只能用 .^

1

2

3

4

A = [1,2;3,4]

A .^ 2

A ^ 2

A * A

向量中的元素开n次方

 

1

2

Prduct_n_A = Prduct_A .^ (1/n);

%   对元素操作,因此要加.号。  %  ^符号表示乘方  %  开n次方,等价求1/n次方

 

 Matlab中求特征值和特征向量

A = [1 2 3 ;2 2 1;2 0 3]

eig(A):计算矩阵A的特征值和特征向量的函数

(1)E=eig(A):求矩阵A的全部特征值,构成向量E。

E=eig(A)

ans =

  -1.3166
  5.3166
  2.0000

(2)[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)

1

[V,D]=eig(A)

V =

  0.8364   -0.6336   -0.2408
  -0.3875   -0.5470    -0.8427
  -0.3875   -0.5470    0.4815                              %V的每一列都是D中与之相同列的特征值的特征向量


D =

  -1.3166    0        0
  0      5.3166       0
  0     0     2.0000                  %特征值

 

%求最大特征值

 Max_eig = max(max(D));   %也可以写成max(D(:))

 

 找到最大特征值所在的位置

 

1

2

[r,c]=find(D == Max_eig , 1);

% 找到D中第一个与最大特征值相等的元素的位置,记录它的行和列

find函数:用来返回向量或者矩阵中不为0的元素的位置索引

向量

>> X = [1 0 4 -3 0 0 0 8 6];
>> ind = find(X)
 ind =
 1 3 4 8 9

返回前2个不为0的元素的位置

>> ind = find(X,2)
>> ind =
 1 3

二维矩阵

1

2

3

4

5

6

7

8

9

10

11

12

>> X = [1 -3 0;0 0 8;4 0 6]

    X =

      1    -3     0

      0     0     8

      4     0     6

>> ind = find(X)

    ind =

         1

         3

         4

         8

         9

>> X(4)
  ans =
     -3

1

%  Matlab在存储矩阵时,是一列一列存储的

按照行列的信息输出

1

[r,c] = find(X)

r =
   1
   3
   1
   2
  3
 c =
   1
   1
   2
   3
   3

1

[r,c] = find(X,1) %只找第一个非0元素

 r =
   1
 c =
   1

1

  

 定义函数

function [输出变量] = 函数名称(输入变量)
  函数的中间部分都是函数体
函数的最后要用end结尾


输出变量和输入变量可以有多个,用逗号隔开

举例:

1

2

3

4

5

function [a,b,c]=test(d,e,f)

    a=d+e;

    b=e+f;

    c=f+d;

end

 自定义的函数要单独放在一个m文件中,不可以直接放在主函数里面(和其他大多数语言不同)

 sort()函数

向量

sort(A)若A是向量不管是列还是行向量,默认都是对A进行升序排列。

1

2

sort(A)    %默认的升序

sort(A,'descend')    %降序排序。

矩阵
sort(A)  默认对A的各列进行升序排列

1

2

3

sort(A,dim)

% dim=1时等效sort(A)

% dim=2时表示对A中的各行元素升序排列

A = [2,1,3,8]
Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;


若欲保留排列前的索引,则可用 [sA,index] = sort(A,'descend') ,排序后,sA是排序好的向量,index是向量sA中对A的索引。
sA = 8 3 2 1
index = 4 3 1 2

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值