Labview:元素数组乘法运算

时间:2013-05-16 19:28:53

标签: arrays matrix element multiplication labview

是否存在类似于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 - 需要快速。

2 个答案:

答案 0 :(得分:2)

前两个乘法可以通过使用'multiply'原语来完成。确保第二种情况下的阵列长度相同 对于第三个乘法,您可以使用for循环(使用自动索引)。这是必需的,因为您需要指示LabVIEW基本索引是什么 最后一次乘法可以(再次)使用乘法原语完成。 enter image description here

答案 1 :(得分:0)

我的结果与以前的海报不同(相反)。我生成了一个4x1000的随机数阵列(幅度1000),我乘以4x4整数数组(1,2,3,4,...)。我使用矩阵乘法VI进行了100,000次,并使用for循环对阵列执行操作。我看到矩阵VI的时间大约为0.328s,for循环的时间大约为0.051s。使用编译的DLL可能比Labview更快,但对于内置函数来说似乎不是这样。

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