是否存在类似于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 - 需要快速。
答案 0 :(得分:2)
前两个乘法可以通过使用'multiply'原语来完成。确保第二种情况下的阵列长度相同 对于第三个乘法,您可以使用for循环(使用自动索引)。这是必需的,因为您需要指示LabVIEW基本索引是什么 最后一次乘法可以(再次)使用乘法原语完成。
答案 1 :(得分:0)
我的结果与以前的海报不同(相反)。我生成了一个4x1000的随机数阵列(幅度1000),我乘以4x4整数数组(1,2,3,4,...)。我使用矩阵乘法VI进行了100,000次,并使用for循环对阵列执行操作。我看到矩阵VI的时间大约为0.328s,for循环的时间大约为0.051s。使用编译的DLL可能比Labview更快,但对于内置函数来说似乎不是这样。
这肯定不是我的预期,但它在很多周期内是一致的。 VI是标准执行线程。所有数据类型都在定时操作之前设置 - 循环中不会发生强制。操作分开执行,由平面序列结构分级,时间测量也是如此。并行性已关闭。