zoukankan      html  css  js  c++  java
  • matlab基本函数 randn,rand,orth

    一起来学演化计算-matlab基本函数randn, rand, orth

    觉得有用的话,欢迎一起讨论相互学习~

    我的微博我的github我的B站

    randn

    X = randn

    • 随机从正态分布中选一个数作为结果

    X = randn(n)

    • 随机从正态分布中选n*n个数组成一个(n,n)的正方形矩阵
    r = randn(5)
    r =
    
        0.5377   -1.3077   -1.3499   -0.2050    0.6715
        1.8339   -0.4336    3.0349   -0.1241   -1.2075
       -2.2588    0.3426    0.7254    1.4897    0.7172
        0.8622    3.5784   -0.0631    1.4090    1.6302
        0.3188    2.7694    0.7147    1.4172    0.4889
    

    X = randn(sz1,...,szN)

    • 从正态分布中随机数形成(sz1,...,szN)形状的矩阵
    r = randn(1,5)
    r =
    
        0.5377    1.8339   -2.2588    0.8622    0.3188
    

    rand

    • 均匀分布随机数

    语法

    • X = rand 返回区间(0,1)内的一个均匀分布的随机数。
    • X = rand(n) 返回一个n×n的随机数矩阵。
    • X = rand(sz1,...,szN) 返回一个sz1-by-…-by-szN随机数数组,其中sz1,…,szN表示每个维度的大小。例如,rand(3,4)返回一个3×4矩阵。
    • X = rand(sz) 返回一个随机数数组,其中大小向量sz指定数组size。例如,rand([3 4])返回一个3×4矩阵。
    • X = rand( ___ ,typename ) 返回数据类型typename的随机数数组。typename输入可以是'single'或'double'。您可以使用前面语法中的任何输入参数。
    • X = rand( ___ ,'like',p) 返回一个随机数字数组,如p;也就是说,与p具有相同的对象类型。您可以指定typename或“like”,但不能同时指定两者。

    语法

    随机数矩阵

    生成一个由0到1之间的均匀分布随机数组成的5×5矩阵

    r = rand(5)
    r =
    
        0.8147    0.0975    0.1576    0.1419    0.6557
        0.9058    0.2785    0.9706    0.4218    0.0357
        0.1270    0.5469    0.9572    0.9157    0.8491
        0.9134    0.9575    0.4854    0.7922    0.9340
        0.6324    0.9649    0.8003    0.9595    0.6787
    

    指定区间内的随机数

    在区间(-5,5)内生成一个10×1的均匀分布数列向量

    r = -5 + (5+5)*rand(10,1)
    r =
    
        3.1472
        4.0579
       -3.7301
        4.1338
        1.3236
       -4.0246
       -2.2150
        0.4688
        4.5751
        4.6489
    

    一般情况下,你可以在(a,b)区间内生成N个随机数,公式为(r = a + (b-a).*rand(N,1))

    满足均匀分布的随机整数

    使用randi函数(而不是rand)从10到50之间的均匀分布生成5个随机整数

    r = randi([10 50],1,5)
    r =
    
        43    47    15    47    35
    

    随机复数

    在区间(0,1)中生成一个包含实部和虚部的随机复数

    a = rand + 1i*rand
    a =
    
       0.8147 + 0.9058i
    

    复位随机数种子

    保存随机数生成器的当前状态,并创建一个1×5的随机数向量

    s = rng;
    r = rand(1,5)
    r =
    
        0.8147    0.9058    0.1270    0.9134    0.6324
    % 将随机数生成器的状态恢复为s,然后创建一个新的1×5的随机数向量。值与之前相同
    rng(s);
    r1 = rand(1,5)
    r1 =
    
        0.8147    0.9058    0.1270    0.9134    0.6324
    

    3维随机数组

    创建一个3×2×3的随机数数组

    X = rand([3,2,3])
    X(:,:,1) =
    
        0.8147    0.9134
        0.9058    0.6324
        0.1270    0.0975
    
    
    X(:,:,2) =
    
        0.2785    0.9649
        0.5469    0.1576
        0.9575    0.9706
    
    
    X(:,:,3) =
    
        0.9572    0.1419
        0.4854    0.4218
        0.8003    0.9157
    

    指定随机数的数据类型

    创建一个1×4的随机数字向量,其元素都是单精度的

    r = rand(1,4,'single')
    r =
    
        0.8147    0.9058    0.1270    0.9134
    
    class(r)
    ans =
    
    single
    
    

    克隆已有矩阵的形状

    创建与现有数组大小相同的随机数矩阵

    A = [3 2; -2 1];
    sz = size(A);
    X = rand(sz)
    X =
    
        0.8147    0.1270
        0.9058    0.9134
    
    或
    
    X = rand(size(A));
    

    从现有数组克隆大小和数据类型

    创建一个2×2矩阵的单精度随机数

    p = single([3 2; -2 1]);
    Create an array of random numbers that is the same size and data type as p.
    
    X = rand(size(p),'like',p)
    X =
    
        0.8147    0.1270
        0.9058    0.9134
    
    class(X)
    ans =
    
    single
    
    

    orth

    • 求矩阵的标准正交基(PS:矩阵分析时代离我已经遥远)
      • 不过记得意思好像是,正交矩阵的转置乘以正交矩阵得到的是单位矩阵
    • Q = orth(A)返回A的范围的一组标准正交基。Q的列向量张成了A的范围。Q中的列数等于A的秩。

    满秩

    % 计算并验证满秩矩阵范围的标准正交基向量。
    
    % 定义一个矩阵并求出秩
    
    A = [1 0 1;-1 -2 0; 0 1 -1];
    r = rank(A)
    r =
    
         3
    
    % 由于A是满秩的方阵,orth(A)计算的标准正交基与奇异值分解计算的矩阵U相匹配,[U,S] = svd(A,'econ')。这是因为A的奇异值都是非零的。
    
    利用orth计算A的值域的标准正交基
    
    Q = orth(A)
    Q =
    
       -0.1200   -0.8097    0.5744
        0.9018    0.1531    0.4042
       -0.4153    0.5665    0.7118
    
    % Q中的列数等于秩(A)因为A是满秩的,Q和A的大小是一样的。
    % 验证基Q是正交的,并且在合理的误差范围内归一化。
    
    E = norm(eye(r)-Q'*Q,'fro')
    E =
    
       9.6228e-16
    
    % Q矩阵的转置和Q相乘后的结果是一个单位矩阵,将其和单位矩阵相减后得到结果误差十分小
    
  • 相关阅读:
    团队项目启动及成员分工
    图书馆 管理系统--可行性报告
    KING小组
    什么是F#
    都删了,走了
    机器学习-决策树
    深度学习--说一说卷积和池化
    机器学习--逻辑回归_LR(内附细说极大似然估计,梯度下降法)
    Dlib安装(Mac版)
    动态语言、静态语言及动态语言的“鸭子类型“
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11231711.html
Copyright © 2011-2022 走看看