gpt4 book ai didi

c++ - Armadillo 稀疏实矩阵与复 vector 的乘法

转载 作者:行者123 更新时间:2023-11-30 03:52:49 24 4
gpt4 key购买 nike

我正在尝试将一个稀疏实数矩阵与一个复 vector 相乘,但程序无法编译。如果我将 vector 更改为实数或将矩阵更改为密集,那么一切都会通过。示例代码是:

#define ARMA_64BIT_WORD
#include <armadillo>
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace arma;

int main(){

size_t n(5);
vec vR(randu<vec>(n)), vI(randu<vec>(n)); //Create random complex vector 'v'
cx_vec v(vR, vI);

std::cout<<"\n\tMultiplying real matrix with complex vector:"<<std::endl;
mat R = randu<mat>(n,n);
R*v; // -------------> COMPILES

std::cout<<"\n\tMultiplying real sparse matrix with complex vector:"<<std::endl;
sp_mat Rs = sprandu<sp_mat>(n,n,0.2);
Rs*v; // ------------> DOES NOT COMPILE

return 0;

}

对解决方案有什么建议吗?我使用的是 Armadillo 版本 5.200.1。

最佳答案

我在将两个不同数字类型的稀疏矩阵相乘时遇到了同样的问题(请参阅 here )。似乎将稀疏对象与任何其他非标量类型(稀疏或密集)相乘目前仅适用于相等的数字类型。我希望他们能尽快实现!

您可以通过查看 operator_times.hpp 来检查在行 502454 : enable_if2 中的 bool 表达式模板参数将评估为 false如果将具有不同模板参数的两个对象相乘,则从 operator* 的候选列表中删除该模板过载。

关于c++ - Armadillo 稀疏实矩阵与复 vector 的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com