zoukankan      html  css  js  c++  java
  • matlab 基础知识1

    一、数组和矩阵
    注意 逗号 和 分号 的区别

     

    向量生成方式:

    传统方式:行向量 :空格,逗号
    列向量 :分号,回车

    函数方式

    x = linspace(a,b,n)
    

      等分关系,从a 到 b, n等分。n默认为100

     x = logspace(a,b,n)
    

      生成[10^a,10^b]之间的数n个。n默认为50

    二、二维数组

    直接创建:

    A = [1 2 3; 4 5 6]
    

      

    函数生成:

    ones(m,n)     %全部为1
    eye(m,n)      %主对角线为1
    zeros(m,n)    %全部为0
    % 随机数系列:
    rand(m,n)    %生成均匀分布的伪随机数,分布在[0,1]之间
    randn(m,n)    %生成标准正态分布的伪随机数,均值为0,方差为1
    randi(max,m,n)    %生成全为整数的m行n列随机数,数值分布在闭区间[1,max]
    randi([imin,imax],m,n)  %生成全为整数的m行n列随机数,数值分布在闭区间[imin,imax]
    % 以上函数若只有一个参数,则表示为n行n列
    

    三、数组的大小

    size函数 测试数组或矩阵的大小

     d = size(数组名)

     d 为返回值,为一个行向量  d = [m n]

     x = [3 2];
     d = size(x)

     >> d =
         1  2
      表示 x 是一个1行2列的向量

    x = ones(3,4,5);
    d = size(x)
    

      

     [m,n] = size(数组名)

     m返回行数,n返回列数

      x = [4,5,6];
      [m,n] = size(x)
    

     

    length函数  返回数组中尺度较大维度的长度

     

    形式:
      空        返回0
      标量       返回1
      向量      返回实际个数
      多为数组    返回较大维度

     

    a = [];
    length(a)
    
    b = [3];
    length(b)
    
    c = [1 2 3 4 5];
    length(c)
    
    d = ones(4,5);
    length(d)
    

      

    numel函数  返回数组中总的元素的个数

    % m行n列,则总个数为m*n
     a = ones(4,5);
     numel(a)
               
    

      

    四、索引

    双下表索引

    A = magic(6); % 行,列,对角线上的和都是相等的
    A(4,3)
    

    单下表索引

    % 数组名(所在序号) 
    % 列优先排序
     A = [ 1 3 54; 5 6 7; 89 0 7 ];
     A(7)
    

    双下标索引转换为单下标索引

    % 方法
    %   单下表索引 = sub2ind(size,m,n)
    %    size数组大小: size(数组名)
    
     A = [ 1 3 54; 5 6 7; 89 0 7 ];
     ans1 = A(3,2)
      num = sub2ind(size(A),3,2)
     ans2 = A(num)
    

      利用sub2ind(size,m,n) 函数可以 将二维数组当成一个一维数组来进行处理

    单下标索引转换为双下标索引

    % 方法
    % [行,列] = ind2sub(size,num)
    %       数组大小: size(数组名)
    
    A = magic(7)
    [m,n] = ind2sub(size(A),13)
    ans1 = A(13)
    ans2 = A(6,2)
    

      

    五、 数组扩展

     cat( ) 函数

    % 扩展结果 = cat(标识,数组1,数组2,...)
    %       标识:1(表示按列排) 组合数组 必须有相同列
    %          或2(表示按行排)组合数组 必须有相同行
    
    A = ones(3,4);
    B = zeros(2,4);
    C = cat(1,A,B)

      

    A = ones(3,4);
    B = zeros(3,5);
    C = cat(2,A,B)

     

     vertcat( )函数

    % 扩展结果 = vertcat(数组1,数组2,...)
    %       将多个数组在垂直方向上组合在一起
    %   相当于:cat(1,数组1,数组2,...)  必须要列数一致
    
    A= ones(3,4);
    B = zeros(2,4);
    C = vertcat(A,B)
    

      

    horzcat( ) 函数

    % 扩展结果 = horzcat(数组1,数组2,...)
    %       将多个数组在水平方向上组合
    %  相当于: cat(2,数组1,数组2,...)  必须行数要一致
    
    A = ones(4,5);
    B = eye(4,3);
    C = horzcat(A,B)
    

      

    索引扩展

    % 直接指定当前数组外的一个位置,并对其进行赋值。
    % 确保数组以最小代价完成扩展。
    
    A = eye(3)
    A(2,5) = 5

    A(4,4) = 9

    A(6,6) = 11

      

    六、块操作

     repmat( )函数

    % 数组B = repmat(数组A,m,n)
     A = magic(3)
     B = repmat(A,2,3)
    

      

    blkdiag( )函数

    % 数组D = blkdiag(数组A,数组B,数组C,...)
    %   数组A,B,C,...按照对角线拼接
    A = ones(3)
    B = magic(4)
    C = blkdiag(A,B)
    

      

    kron( )函数

    %  数组C = kron(数组A,数组B)
    %   最后的结构: C与A一致;
    %   每个元素: C与B一致,即C = A对应位置乘以B的每个元素
    A = [0 1; 2 3]
    B = ones(3)
    C = kron(A,B)

    C = kron(B,A)

      

    七、数组裁剪

    罗列序号

    % 直接将需要保留的序号罗列出来
    % 裁剪结果数组 = 原数组(保留的行,保留的列)
    
    A =  magic(6)
    B =A([1 3 6],[ 2,4,5])

    C = A([1,3,6],[5,4,2])

     冒号 

    % 分类:①区间  ②等差序列  ③全部
    
    % ① 区间:m:n  其中m表示初始值,n表示终止值
    
    A = magic(6)
    B =A(1:3,3:6)

      

    % ②等差序列   m:k:n  初始值:等差值:终止值
    
    A  = magic(5)
    B = A(1:2:5,2:5)
    
    % ③全部
    % 冒号 : 
    % 当前索引位置所有能够取得的值。所有行,所有列
    
    A = magic(5)
    B = A(1:2:4,:)
    

    删除整行整列

    % 格式
    %   数组(要删除的行, : ) =[ ]; 
    %   数组( : , 要删除的列) =[ ];
    
    A = magic(7)
    A([1:3],:)=[ ]
    A(:,[2:5]) = [ ]

      

     

  • 相关阅读:
    C++同步串口通信
    python描述符详解
    python属性访问
    python简单计时器实现
    python时间模块详解(time模块)
    python魔法方法大全
    python类与对象各个算数运算魔法方法总结
    python里的魔法方法1(构造与析构)
    Python 函数修饰符(装饰器)的使用
    python类与对象的内置函数大全(BIF)
  • 原文地址:https://www.cnblogs.com/jsdy/p/11096426.html
Copyright © 2011-2022 走看看