我需要对一组 2D 数组(如果需要,可以使用 3D 矩阵)执行两个参数(一组:t,另一个来自数组)的指数运算。f(t,x) = exp(tx) 然后我需要将第三维中每个值的结果相加。因为执行整个操作需要花费太多时间bsxfun
,所以我正在考虑使用查找表。
我可以将表创建为矩阵LUT
(由于两个参数,二维),然后我可以使用LUT(par1,par2)
. 但是使用循环访问第三维也很昂贵。
我的问题是:有没有办法实现这种机制(查找表)以具有预定义的值,然后只使用它们从矩阵元素(索引类型)访问而无需循环。或者,如何创建 MATLAB 自动处理的查找表以加快指数运算?
编辑:我实际上使用类似的方法来创建 LUT。现在,我的问题实际上是如何以有效的方式访问它。
可以说我有一个二维数组M
。使用那些我想将函数f(t,M(i,j))
应用于固定值的值t
。我可以使用循环遍历 M 的所有值 (i,j)。但我想要一种更快的方法,因为我有一组 M,然后我需要将此过程应用于所有其他值.
我的函数比我给出的例子有点复杂:
pr = mean(exp(-bsxfun(@rdivide,bsxfun(@minus,color_vals,double(I)).^2,m)./2),3);
这是我的实际功能,正如您所看到的,它比我提供的示例更复杂。但想法是一样的。它在 M 集合的第三维中求两个数组之差的指数的平均值。
希望有帮助。