码迷,mamicode.com
首页 > 其他好文 > 详细

MATLAB——第二天 矩阵

时间:2015-04-07 10:03:17      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:matlab   矩阵   赋值   截取   



写在前面                                                                                                 



我们都知道,在没有持久化存储的情况下,大部分的数据是存储在数组里面的,


也就是对应于数学中的矩阵,


对于一个矩阵而已,最重要的不外乎:赋值,操作,取值


初始化矩阵                                                                                                   



在MATLAB里给一个矩阵赋值的方法有很多,有直接赋值法、借助函数库的间接赋值法,


有时候还要生成一个在某个区间内随机矩阵


一、直接赋值法:


>> A =[1,2,3,4]

A =

     1     2     3     4

>> A= [1:1:4]

A =

     1     2     3     4



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

A =

     1
     2
     3
     4

>> A=[1:4;2:5]

A =

     1     2     3     4
     2     3     4     5

 
>> B=A'

B =

     1     2
     2     3
     3     4
     4     5



二、间接赋值法


生成一个平均分布的矩阵


>> A=linspace(1,3,6)

A =

    1.0000    1.4000    1.8000    2.2000    2.6000    3.0000


生成一个全是0的矩阵


 
>> A=zeros(2,3)

A =

     0     0     0
     0     0     0


生成一个单位矩阵


>> A=eye(3,3)

A =

     1     0     0
     0     1     0
     0     0     1


生成一个全是1的矩阵


>> A=ones(2,3)

A =

     1     1     1
     1     1     1


生成一个n阶魔阵


>> A=magic(4)

A =

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





三、在某个区间内生成随机矩阵                                                                                                     


首先要知道  


A= ran(n,m)    可以生成一个在区间(0,1) n*m的小数矩阵


>> A=rand(3,4)

A =

    0.9572    0.1419    0.7922    0.0357
    0.4854    0.4218    0.9595    0.8491
    0.8003    0.9157    0.6557    0.9340


然后    A=rand(n,n)*k   (k是大于0的)     生成n*m的小数矩阵的值在     (0,k)


>> rand(3)*5

ans =

    4.1060    0.8450    3.2387
    0.0770    3.2456    2.2546
    0.2151    3.6586    2.7350

然后在加上一个  d


就是    A=rand(n,n)*k+d     生成n*m的小数矩阵的值就在     (d,k+d)上了


>> A=rand(3)*5+1

A =

    3.8060    1.9522    5.9082
    5.4093    2.8446    1.7820
    4.3459    3.3036    5.2776



当然,如果只要整数,那么也行, 用  fix函数


A=fix(rand(n,n)*k)+d  当然因为中间取整了,所以整数的区间会缩小1,生成的整数矩阵区间  (d,k-1+d)


>>  fix(rand(3)*5)+1

ans =

     4     3     3
     2     3     2
     1     1     2



因此,就可以抽象出两个生成随机矩阵的方法



生成在区间(a,b)上的整数


function A = randInter( min,max,n,m )
 

A=fix(rand(n,m)*(max-min+1))+min;

end


生成在区间(a,b)上小数


function A = randFloat( min,max,n,m)


A=rand(n,m)*(max-min)+min;

end




矩阵操作                                                                                                  



①常见的操作有:    矩阵与常数的乘除            矩阵与矩阵的加减乘除次幂


需要注意的是:‘ * ’  和 ‘  .* ’是不一样的,‘ / ‘ ‘ ./ ’     ‘^’和‘.^‘是不一样的   


A =

     3     2     3
     4     1     2
     2     4     3

>> B=randInter(2,6,3,3)

B =

     4     5     3
     5     4     2
     4     6     2

>> A*B

ans =

    34    41    19
    29    36    18
    40    44    20

>> A.*B

ans =

    12    10     9
    20     4     4
     8    24     6


向量x、矩阵A大小的测试与查找


●whose命令查看当前工作内变量信息


●length(x)返回向量x的长度


●s=size(A)返回矩阵的大小,s(1)表示A的行数,s(2)表示A的列数。


●[r,c]=size(A), A的行数存于变量,列数存于变量c。


● s=size(A, n)返回矩阵A的第n维的大小。


●length(A)返回A的行数与列数中较大者。


●ndims(A)返回矩阵的维数。


● i=find(条件表达式)或者[r,c]=find(条件表达式),返回表达式为真的元素下标。


此处不再粘代码。。。。



截取矩阵                                                                                                  


>> A=[1:4;2:5;3:6;4:7]

A =

     1     2     3     4
     2     3     4     5
     3     4     5     6
     4     5     6     7


①精确取矩阵中的某一个元素

>> A(4,4)

ans =

     7


②取矩阵中的某一行

取第四行

>> A(4,:)

ans =

     4     5     6     7


③取矩阵中的某一列

取第四列

>> A(:,4)

ans =

     4
     5
     6
     7


④取矩阵中的某些行列

取第1,2行和第3,4列的交汇部分

 
>> A(1:2,3:4)

ans =

     3     4
     4     5

⑤逆序取某一行

第二行放在第一行的前面

>> A(2:-1:1,:)

ans =

     2     3     4     5
     1     2     3     4


⑥逆序取某一列

取第四列放在第三列的前面

>> A(:,4:-1:3)

ans =

     4     3
     5     4
     6     5
     7     6


⑦删除某几行

删除前两行

>> A(1:2,:)=[]

A =

     3     4     5     6
     4     5     6     7


⑧删除某几列

删除前两列

 
>> A(:,1:2)=[]

A =

     3     4
     4     5
     5     6
     6     7

⑨同时删除行和列

删除前两行,前两列

>> B(3:4,3:4)

ans =

     5     6
     6     7








MATLAB——第二天 矩阵

标签:matlab   矩阵   赋值   截取   

原文地址:http://blog.csdn.net/u011446177/article/details/44904919

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!