Armadillo C ++中的元素方式向量或矩阵乘法

Posted

技术标签:

【中文标题】Armadillo C ++中的元素方式向量或矩阵乘法【英文标题】:element wise vector or matrix multiplication in Armadillo C++ 【发布时间】:2014-11-06 22:01:19 【问题描述】:
#include<iostream>
#include<armadillo>
using namespace std;
using namespace arma;

int main()
       
      vec x = (1.0/5) * ones<vec>(N); //x is N sized uniformly distributed vector 
      vec xold(5); 
      mat v = randu<mat>(3,3);
      mat b =randu<mat>(3,3);
     mat c =  v .* b; //element-wise matrix multiplication
     xold = x .* x; // element-wise vector multiplication
 

 //----------------------------this is the error message --------------------------------
/*
  In function ‘int main()’:
  SimilarityMatrix.cpp:182:17: error: ‘b’ cannot be used as a member pointer, since it is of      type ‘arma::mat aka arma::Mat<double>’
mat c =  (v.*b);
             ^

SimilarityMatrix.cpp:183:14:错误:“x”不能用作成员指针,因为它的类型是“arma::vec aka arma::Col” xold = x .* x; ^ */ //我将不胜感激。

【问题讨论】:

【参考方案1】:

在Armadillo documentation 中有解释。在 *** 上发布问题之前,您应该阅读所有相关文档。

参见operators 部分,其中指出% 用于逐元素乘法:

mat c =  v % b;

【讨论】:

以上是关于Armadillo C ++中的元素方式向量或矩阵乘法的主要内容,如果未能解决你的问题,请参考以下文章

如何以非线性方式在C ++中保存矩阵

R语言初识

在 Matlab 中访问单元格中的向量

第四十篇 Numpy.array的基本操作——向量及矩阵的运算

将矩阵转换为矢量

如何在Mexfile中的matlab(矩阵,单元格)和c ++(向量或自定义类)之间正确转换变量