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
r = randn(1,5)
r =
0.5377 1.8339 -2.2588 0.8622 0.3188
生成一个由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个随机数,公式为
使用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×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
% 计算并验证满秩矩阵范围的标准正交基向量。
% 定义一个矩阵并求出秩
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相乘后的结果是一个单位矩阵,将其和单位矩阵相减后得到结果误差十分小