We-unite

MATLAB数组与矩阵

>> x1=1:3;...
x2=linspace(5,20,4);...
x=[x1,x2];
>> x1

x1 =

     1     2     3

>> x2

x2 =

     5    10    15    20

>> x

x =

     1     2     3     5    10    15    20

>> y1=(1:3)';...
y2=linspace(5,20,4)';...
y=[y1;y2];
>> y1

y1 =

     1
     2
     3

>> y2

y2 =

     5
    10
    15
    20

>> y

y =

     1
     2
     3
     5
    10
    15
    20


二维数组/矩阵

对以上及其他若干方法不再赘述,统一用一个例程展示如下:

>> A=zeros(3,4)    %创建3×4零阵

A =

     0     0     0     0
     0     0     0     0
     0     0     0     0

>> A(:)=1:12    %单独的冒号,全元素寻访,改变整个矩阵。注意是按列赋值

A =

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

>> A(8)    %按列寻访第八个

ans =

     8

>> A(:,[1 3])    %全部行,第1、3两列

ans =

     1     7
     2     8
     3     9

>> A([1 2 5 6]')    %第1/2/5/6个元素提取,组成列向量

ans =

     1
     2
     5
     6

>> A(:,4:end)

ans =

    10
    11
    12

>> A(2,1:2:5)=[-1 -3 -5]    %对应元素批量更改

A =

     1     4     7    10     0
    -1     5    -3    11    -5
     3     6     9    12     0

>> A([1 3],[1 3])    %提取1/3行1/3列构成的子阵

ans =

     1     7
     3     9

>> 

笔者注:

以上几个提取子阵的表达式,实质上是在元素两个下标位置上写成两个行向量,从而提取出对应行、对应列所有交叉处的元素为子阵,单独的冒号也是冒号法,由于没有限定范围从而提取出了所有元素而已。

因此,我们可以先赋值两个行向量,然后再在需要的矩阵中提取子阵。只不过这个方法有点麻烦不实用。

矩阵的裁剪

其他