您的位置:首页 > 编程语言 > MATLAB

matlab中的数组与矩阵

2016-10-22 15:43 435 查看
首先介绍数组

在matlab中,有向量,数组,矩阵的概念,本人感觉向量和数组差不多,多行向量就是多维数组,一维向量就是一维数组。

建立一维数组(向量)两种方式:行向量a=[1 2 3]或者a=[1,2,3]

列向量a=[1;2;3]

多维数组a=[1 2 3;2 3 4;3 4 5]这是3*3的数组

向量可以转置,比如b=a’;

数组相关操作

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

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

a=A(1:2,:)-取A数组第几行元素(这里是第1和2行)

a=A(:,1:2)-取A数组第几列元素(这里是第1和2列)

a=A(2:4)-取A数组第2个到第4个元素

a=A(1:end)-将元素正序排列

a=A(end:-1:1)-将元素反序排列

a=A([2 4])-取数组A第2个和第4个元素

a=A(1,2)-取数组第一行第一列元素

C=[A B]-将数组AB横向拼接

C=[A; B]-将数组AB纵向拼接

下面几个操作要熟悉,改变数组内容

A(A=1)=100;%将A数组中为1元素全部变为100

A(A>4)=20;%将A数组中大于4的元素都变为20

A(1,1)=10%将A数组里1行1列元素变为10

下面几个函数判断数组类型

isnumeric();%判断是否为数值型数组

isreal();%判断是否为实数型数组

isinteger();%判断是否为整型数组,(matlab默认存储double型)

islogical();%判断是否为逻辑型数组

find()函数:查找数组元素然后修改元素,具体见下图



sort()-对数组元素进行排序(这个排序是对没列元素排序),默认升序排列,具体见下图:[C,I]=sort(A)-C是排序后数组,I是排序后对应数的位置索引





size()和length()函数

[M,N]=size(A)%返回数组A的行数和列数

M=size(A,1)

N=size(B,2)

length(A)%若A为一维,返回A的长度,若A为二维,返回行列中较大长度值

然后是介绍矩阵(说明:在matlab中无是数组还是矩阵都是按列来存储的)

首先是一些特殊矩阵的建立

zeros(m,n)%建立全0矩阵

ones(m,n)%建立全1矩阵

eye(m,n)%建立对角线全为1 的矩阵

rand(m,n)%(0,1)随机分布的矩阵

randn(m,n)%相比上一个,均值为0,方差为1

magic(m,n)%魔方矩阵

对于矩阵的建立和元素访问,很多和前面介绍的数组相同

下面看图访问矩阵





访问矩阵元素可以用单下标访问和双下标访问

sub2ind()和ind2sub()函数进项访问方式转换;

A=[1:4;5:8]

ind1=sub2ind(size(A),2,3);%将索引(2,3)转变为单下标索引

[i,j]=ind2sub(size(A),7);

矩阵的连接可以用函数cat(dim,A,B);horzcat(A,B);vertcat(A,B)





矩阵还可以进行块操作repmat()函数;

A=[1:3;4:6];

B=repmat(A,2,3)%产生一个2*3大矩阵,每个元素都是矩阵块A

B=repmat(A,[1,3])



对于函数blkdiag(),产生一输入参数为对角线元素的大矩阵。



矩阵的删除操作

比如A=rand(4,4)


对于矩阵的转置,有点注意有复情况。

A=B.’和transpose()一样,矩阵有复数,不发生变化

而用A=B’,则 除了转置外,矩阵中复试要变为共轭复数。

然后是矩阵的尺度变换函数reshape(),注意元素总数不变;

调用形式:Y=reshape(X,m,n);



矩阵的find()函数用法和数组中的find()差不多。sort()排序函数也差不多。

下篇继续介绍矩阵基本知识
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab