我有一个由(P=[0.75,0.25;0.25,0.75]
矩阵定义的(过渡)函数,我有一个向量说X=[1,2,1]
然后我想找到P(1,2)*P(2,1)
。如何概括这是最简单的方法?我尝试使用每列的功能创建P(i,j)
然后X_temp=[X(1:end-1);X(2:end)]
的函数句柄,最后使用产品函数,但它似乎比它必须更全面。
我想使用的X是1000维,P是3x3,我必须重复很多次,所以速度我觉得很重要。
答案 0 :(得分:2)
您可以使用sub2ind
获取相关的P值:
Ps = P(sub2ind(size(P), X(1:end-1), X(2:end)))
现在只需将它们相乘:
prod(Ps)
编辑:
对于函数句柄,你有正确的想法,只需确保你自己处理向量。例如,假设您的函数f(i,j)= i + j,我将假设它实际上是f(x) = x(1) + x(2)
,但我希望它能同时处理多个x
{{1} }:
f(x) = x(:,1) + x(:,2)
OR
f = @(x)(x(:,1) + x(:,2))
f([X(1:end-1)', X(2:end)'])
请注意,您需要使用元素明智的运算符,例如f = @(ii, jj)(ii + jj)
f(X(1:end-1)', X(2:end)') %//You don't actually need the transposes here anymore
,.*
和./
等,而不是.^
,*
,{{1 }} ...