matlab中的数组与矩阵

来源:互联网 发布:自学黑帽seo 编辑:程序博客网 时间:2024/05/16 09:13
  1. 首先介绍数组

在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’;

  1. 数组相关操作
    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是排序后对应数的位置索引
这里写图片描述

这里写图片描述

  1. size()和length()函数
    [M,N]=size(A)%返回数组A的行数和列数
    M=size(A,1)
    N=size(B,2)
    length(A)%若A为一维,返回A的长度,若A为二维,返回行列中较大长度值
  2. 然后是介绍矩阵(说明:在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()排序函数也差不多。

下篇继续介绍矩阵基本知识

0 0
原创粉丝点击