我需要对一组2D数组(如果需要,可以使用3D矩阵)执行两个参数(一组:t,另一组来自数组)的指数运算.
????f(t,x)= exp(t-x)
然后,我需要在第三维中添加每个值的结果.因为使用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的集合的第三维中进行平均.
希望能有所帮助.