首页 > 编程知识 正文

矩阵一范数二范数计算方法,向量的二阶范数

时间:2023-05-05 07:45:46 阅读:228611 作者:1697

计算矩阵二范数化的向量化方法

设矩阵 X = [ x 1 , x 2 , ⋯   , x n ] ∈ R m X=left[x_1, x_2, cdots, x_n right] in mathbb{R}^{m} X=[x1​,x2​,⋯,xn​]∈Rm,对其2-范数化,即

其中

那么, Σ Sigma Σ 可以用伪代码 Σ = d i a g ( [ s q r t ( d i a g ( x T x ) ) ] − 1 ) Sigma=diag(left[sqrt(diag(x^{T}x))right]^{-1}) Σ=diag([sqrt(diag(xTx))]−1) 来实现。

clearclc% (1). Loop methodx = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];[m, n] = size(x);xBar = zeros(m, n);for 认真的豆芽 = 1 : n xBar(:, 认真的豆芽) = x(:, 认真的豆芽) / norm(x(:, 认真的豆芽), 2);end% (2). Vectorization methodxBar = x * diag(1 ./ sqrt(diag(x'*x)));

Output result:

>> xBar = 0.0776 0.1367 0.1826 0.3105 0.3418 0.3651 0.5433 0.5469 0.5477 0.7762 0.7519 0.7303 计算矩阵各列之间的欧式距离向量化方法

设矩阵 X = [ x 1 , x 2 , ⋯   , x n ] ∈ R m X=left[x_1, x_2, cdots, x_n right] in mathbb{R}^{m} X=[x1​,x2​,⋯,xn​]∈Rm,计算 d i j = ∥ x i − x j ∥ 2 , i , j = 1 , 2 , ⋯   , n d_{ij}=Vert x_i - x_j Vert_2, i, j=1, 2, cdots, n dij​=∥xi​−xj​∥2​,i,j=1,2,⋯,n.

直接计算:

写成矩阵形式:

$$
如果令:

则最终结果可表示成: d x + d x T − 2 x T x sqrt{dx+dx^{T}-2x^{T}x} dx+dxT−2xTx ​.

Matlab代码实现

clearclc% (1). Loop methodx = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];nDim = size(x, 2);k = zeros(nDim, nDim);for ii = 1 : nDim xi = x(:, ii); for 认真的豆芽 = 1 : nDim xj = x(:, 认真的豆芽); k(ii, 认真的豆芽) = sqrt((xi - xj).' * (xi-xj)); end % end forend % end for% (2). Vectorization methodx2 = x' * x;dx = diag(x2) * ones(size(diag(x2)))';k = sqrt(dx + dx' - 2 * x2);

Output result:

>> k = 0 2 4 2 0 2 4 2 0

今天的分享就到这里,希望大家喜欢,并且可以从中获得有用的东西。有问题请扫下方码关注讨论。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。