我的MATLAB代码有问题。我先给大家解释一下这个问题。我有两个矩阵,代表事件特定结果的概率。第一个称为DemandProbabilityMatrix或简称DemandP。条目(i,j)表示多次要求项目i的概率。同样,我们有一个ReturnProbabilityMatrix,即ReturnP。类型(i,j)的元素存储项目i多次返回的概率。 我们想要计算这两个矩阵中的净需求概率。举个例子:
DemandP = [.4 .5 .1] ReturnP = [.2 .3 .5]
在这种情况下,我们有1个项目,可以按给定的概率要求或返回1,2或3次。更具体地说,该项目只需要一次概率.4。
然后我们需要计算净需求。在这种情况下,净需求可以是-2,-1,0,1或2.例如,为了获得-1的净需求,我们可以要求1,返回2或要求2并返回这样我们就有了
NetDemandP(1,2)= DemandP(1,1)* ReturnP(1,2)+ DemandP(1,2)* ReturnP(1,3)。
因此NetDemandP应该看起来像:
NetDemandP = [。20 .37 .28 .13 .02]
我可以使用嵌套的for
循环执行此操作,但我想尝试更快的方法。如果它有帮助我有以下for
循环解决方案,其中I
表示ReturnP
和DemandP
中的行数,J+1
表示列数那些矩阵。
NetDemandP=zeros(I,2*J+1);
for i=1:I
for j=1:J+1
for k=1:J+1
NetDemandP(i,j-k+J+1)=NetDemandP(i,j-k+J+1)+DemandP(i,j)*ReturnP(i,k);
end
end
end
提前致谢
答案 0 :(得分:2)
您想要的是概率密度函数的卷积。或者,更具体地说,您希望将需求密度与返回密度的 reverse 进行卷积。这在Matlab中很容易实现。例如:
DemandP = [.4 .5 .1];
ReturnP = [.2 .3 .5];
NetDemandP = conv(DemandP,fliplr(ReturnP))
如果您有矩阵而不是向量,那么只需遍历行:
for i = 1:size(DemandP,1)
NetDemandP(i,:) = conv(DemandP(i,:),fliplr(ReturnP(i,:)))
end