0

是否存在类似于 numpy*运算符的函数,用于两个数组以元素方式相乘它们的元素,返回相似类型的数组?

例如:

#Lets define:
a = [0,1,2,3]
b = [1,2,3,4]
d = [[1,2] , [3,4], [5,6]]
e = [3,4,5]

#I want:
a * 2 == [2*0, 1*2, 2*2, 2*3]
a * b == [0*1, 1*2, 2*3, 3*4]
d * e == [[1*3, 2*3], [3*4, 4*4], [5*5, 6*5]]
d * d == [[1*1, 2*2], [3*3, 4*4], [5*5, 6*6]]

注意* 不是常规矩阵乘法它是逐元素乘法。

我目前最好的解决方案是编写一些 c 代码来执行此操作,然后导入已编译的 dll。

必须存在更好的解决方案。

编辑:使用 LabVIEW 2011 - 需要快速。

4

2 回答 2

1

前两次乘法可以通过使用“乘法”原语来完成。确保第二种情况下的数组长度相同。
对于第三次乘法,您可以使用 for 循环(带有自动索引)。这是必需的,因为您需要告诉 LabVIEW 基本索引是什么。
最后的乘法可以(再次)使用乘法原语完成。 在此处输入图像描述

于 2013-05-17T09:29:24.673 回答
0

我的结果与之前的海报不同(相反)。我生成了一个 4x1000 的随机数数组(大小 1000),然后乘以一个 4x4 的整数数组(1,2,3,4,...)。我使用矩阵乘法 VI 做了 100,000 次,还使用 ​​for 循环对数组执行操作。我看到矩阵 VI 的时间约为 0.328 秒,for 循环的时间约为 0.051 秒。使用已编译的 DLL 可能比 Labview 更快,但这似乎不适用于内置函数。

这当然不是我所期望的,但它在许多周期中是一致的。VI 是标准执行线程。所有数据类型都在定时操作之前设置 - 循环中不会发生强制。这些操作是单独执行的,由平面序列结构分阶段执行,时间测量也是如此。并行性已关闭。

于 2015-02-18T15:03:04.793 回答