在 ArrayFire 中,元素相乘(也称为逐元素乘法或哈达玛乘法)可以通过 af::mul
函数或者使用重载的 *
运算符来实现。下面是如何使用 ArrayFire 对两个数组进行元素相乘的示例:
#include <arrayfire.h>
#include <iostream>
int main()
{
// 初始化ArrayFire
af::setDevice(0); // 设置设备,如果只有一个设备,则不需要这行代码
af::info(); // 打印ArrayFire的版本信息和设备信息
// 创建两个四维数组
af::array A = af::randu(2, 3, 4, 5); // 随机数组A,维度为2x3x4x5
af::array B = af::randu(2, 3, 4, 5); // 随机数组B,维度为2x3x4x5
// 进行元素相乘
af::array C = af::mul(A, B); // 使用mul函数或者A * B
// 或者使用重载的*运算符
// af::array C = A * B;
// 打印结果
std::cout << "Array A:" << std::endl;
af_print(A);
std::cout << "Array B:" << std::endl;
af_print(B);
std::cout << "Element-wise multiplication of A and B:" << std::endl;
af_print(C);
return 0;
}
在这个例子中,A
和 B
是两个随机生成的四维数组,它们具有相同的维度。然后,我们使用 af::mul
函数来计算它们的元素相乘结果,并将结果存储在数组 C
中。也可以直接使用 *
运算符来进行元素相乘。
需要注意的是,进行元素相乘的两个数组必须具有相同的维度,或者至少是广播兼容的。广播规则允许在某个维度上尺寸为1的数组与尺寸更大的数组进行操作。