我开始在c ++(特别是英特尔MKL)中使用BLAS函数来创建一些旧的Matlab代码的更快版本。
到目前为止它一直运行良好,但我无法弄清楚如何在2个矩阵上执行元素乘法(在Matlab中为A。* B)。
我知道gemv在矩阵和向量之间做了类似的事情,所以我应该将我的一个矩阵分解为vectprs并重复调用gemv吗?我认为这样可行,但我觉得应该为此操作内置一些东西。
答案 0 :(得分:2)
使用Hadamard产品。在MKL中它是v?MUL。例如。双打:
with open("data/"+ name + "_" + timestamp + ".csv", "w") as result:
result.write("time; data1; data2; data3 \n")`
while True:
timestamp = time.strftime("%H:%M:%S", time.localtime())
data1,data2,data3 = device.fetchData()
result.write(timestamp +";"+ str(data1) +";"+ str(data1) +";"+ str(data3) +"\n")
time.sleep(seconds)
以Matlab表示法执行:
vdMul( n, a, b, y );
在您的情况下,您可以将矩阵视为向量。