【矩阵分析】向量求和转为矩阵

[复制链接]
发表于 2024-12-6 23:23:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
B                            =                            [                                       B                               1                                      ,                                       B                               2                                      ,                            …                            ,                                       B                               N                                                 ]                               T                                      ∈                                       R                                           N                                  ×                                  1                                                       \boldsymbol B = [B_1,B_2,\dots,B_N]^T \in \mathbb{R}^{N \times 1}                     B=[B1​,B2​,…,BN​]T∈RN×1,                                        W                            =                            [                                       W                               1                                      ,                                       W                               2                                      ,                            …                            ,                                       W                               N                                                 ]                               T                                      ∈                                       R                                           N                                  ×                                               N                                     r                                                                   \boldsymbol W = [\boldsymbol W_1,\boldsymbol W_2,\dots,\boldsymbol W_N]^T \in \mathbb{R}^{N \times N_r}                     W=[W1​,W2​,…,WN​]T∈RN×Nr​,                                        H                            =                            [                                       H                               1                                      ,                                       H                               2                                      ,                            …                            ,                                       H                               N                                                 ]                               T                                      ∈                                       R                                           N                                  ×                                               N                                     r                                                                   \boldsymbol H = [\boldsymbol H_1,\boldsymbol H_2,\dots,\boldsymbol H_N]^T \in \mathbb{R}^{N \times N_r}                     H=[H1​,H2​,…,HN​]T∈RN×Nr​
将                                                   ∑                                           n                                  ∈                                  N                                                 (                                       W                               n                                                 H                               n                                                 B                               n                                      )                                  \sum_{n \in \mathcal{N}}(\boldsymbol W_n \boldsymbol H_nB_n)                     ∑n∈N​(Wn​Hn​Bn​)写成矩阵形式
                                                       ∑                                           n                                  ∈                                  N                                                 (                                       W                               n                                                 H                               n                                                 B                               n                                      )                            =                            Tr                            (                                       W                               ⊤                                      diag                            (                            B                            )                            H                            )                                  \sum_{n \in \mathcal{N}} (\boldsymbol{W}_n \boldsymbol{H}_n B_n) =\text{Tr}(\boldsymbol{W}^\top \text{diag}(\boldsymbol{B}) \boldsymbol{H})                     ∑n∈N​(Wn​Hn​Bn​)=Tr(W⊤diag(B)H)
  代码验证
  1. % 定义参数
  2. N = 5; % 样本数
  3. Nr = 3; % 每个向量的列维度
  4. % 随机生成矩阵和向量
  5. W = rand(N, Nr);  % N x Nr 矩阵
  6. H = rand(N, Nr);  % N x Nr 矩阵
  7. B = rand(N, 1);   % N x 1 列向量
  8. % 逐项求和方式计算
  9. sum_result = 0;
  10. for n = 1:N
  11.     sum_result = sum_result + W(n, :) * H(n, :)' * B(n);
  12. end
  13. % 矩阵形式计算
  14. diag_B = diag(B); % 对角矩阵
  15. trace_result = trace(W' * diag_B * H);
  16. % 显示结果
  17. disp('逐项求和结果:');
  18. disp(sum_result);
  19. disp('矩阵形式结果:');
  20. disp(trace_result);
  21. % 验证是否相等
  22. if abs(sum_result - trace_result) < 1e-10
  23.     disp('验证成功:两者相等!');
  24. else
  25.     disp('验证失败:两者不相等!');
  26. end
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表