专栏首页人工智能与演化计算成长与进阶一起来学演化计算-matlab基本函数randn,rand, orth

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

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相乘后的结果是一个单位矩阵,将其和单位矩阵相减后得到结果误差十分小

本文分享自微信公众号 - DrawSky(wustcsken),作者:CloudXu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一起来学matlab-matlab学习笔记10 10_1一般运算符

    本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一...

    DrawSky
  • ​多目标优化拥挤距离计算

    [1]支配关系: https://blog.csdn.net/u013555719/article/details/91356078

    DrawSky
  • matlab中类的重载简析

    MyData bar 方法与 MATLAB bar 函数同名。但是,MyData bar 方法需要 MyData 对象作为输入。由于该方法针对 MyData 对...

    DrawSky
  • linux系统root密码遗忘的情况下的解决办法

    IDC机房有一台centos系统的服务器,由于这台服务器的系统装了好长时间,且root密码中间更新过几次,后面去机房现场维护时,登陆密码遗忘了,悲催啊~ 没办法...

    洗尽了浮华
  • ​PowerBI 设置清新脱俗的矩阵

    炎热的夏天到了,即使是做可视化的图表,都想着如何可以让感觉可以凉快一些吧,那今天我们就一起来设计清爽凉快的简明风格。

    BI佐罗
  • 机器学习中的数学(6)-强大的矩阵奇异值分解(SVD)及其应用

    上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于特征值分解的一种解释。 ...

    机器学习AI算法工程
  • 强大的矩阵奇异值分解(SVD)及其应用

    PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于特征值分解的一种解释。 特征值和奇异值在大部分人的印象中,...

    机器学习AI算法工程
  • 由一台“液体面包”机引发的革命

    镁客网
  • Grpc-Gateway - Grpc兼容HTTP协议文档自动生成网关

    因为之前的测试结果让笔者对PHP使用GRPC很失望,如果使用HTTP的方式Guzzle还可以提供并发能力来降低接口消耗,Grpc只能阻塞,但是如果使用HTTP的...

    喵了个咪233
  • 纯Python方案实现中英文全文搜索

    在互联网上的各类网站中,无论大小,基本上都会有一个搜索框,用来给用户对内容进行搜索,小到站点搜索,大到搜索引擎搜索。

    州的先生

扫码关注云+社区

领取腾讯云代金券