MTL 矢量外积

此博客给出了一段矩阵与向量运算的代码。代码中定义了矩阵 A、向量 x 和 y,将矩阵 A 初始化为全 100,向量 x 和 y 按顺序赋值。通过 rank_one_update 函数实现 A + xy' 的运算,并输出运算前后矩阵和向量的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//整理bu RobinKin

#include "mtl/matrix.h"
#include "mtl/dense1D.h"
#include "mtl/mtl.h"

/*
  Sample Output

  A:
  4x3
  [
  [100,100,100],
  [100,100,100],
  [100,100,100],
  [100,100,100]
  ]
  x:
  [1,2,3,4,]
  y:
  [1,2,3,]
  A + xy':
  4x3
  [
  [101,102,103],
  [102,104,106],
  [103,106,109],
  [104,108,112]
  ]
  */

int
main()
{
  using namespace mtl;
  //begin
  typedef matrix< double,
                  rectangle<>,
                  dense<>,
                  column_major >::type Matrix;


  typedef Matrix::size_type sizeT;


  const sizeT M = 4, N = 3;
  Matrix A(M, N);
  dense1D<double> x(M), y(N);
  double alpha = 1.0;
  // fill A, x, and y ...
  //end
  mtl::set_value(A, 100);
  sizeT i;
  for (i = 0; i < x.size(); ++i)
    x[i] = i+1;
  for (i = 0; i < y.size(); ++i)
    y[i] = i+1;

  std::cout << "A:" << std::endl;
  print_all_matrix(A);
  std::cout << "x:" << std::endl;
  print_vector(x);
  std::cout << "y:" << std::endl;
  print_vector(y);

//这里的A 必须是 rectangle 和 dense的
  //begin
  rank_one_update(A, scaled(x, alpha), y);
  //end
  std::cout << "A + xy':" << std::endl;
  print_all_matrix(A);

  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值