根据MATLAB中预先指定的规则,从现有的两个概率矩阵中创建一个新的概率矩阵
我的MATLAB代码中有一个问题。让我先给你解释一下这个问题。我有两个矩阵,它们代表事件特定结果的概率。第一种称为DemandProbabilityMatrix,简称DemandDP。条目(i,j)表示项目i被要求j多次的概率。类似地,我们有一个ReturnProbabilityMatrix,即ReturnP。类型(i,j)的元素存储项目i多次返回j的概率。 我们想用这两个矩阵来计算净需求概率。例如: DemandP=[4.5.1] ReturnP=[.2.3.5] 在这种情况下,我们有一个项目,它可以被要求或返回1,2或3次与给定的概率。更具体地说,该商品很可能只需要一次 然后我们需要计算净需求。在这种情况下,净需求可以是-2、-1,0,1或2。例如,为了得到-1的净需求,我们可以让需求为1,回报为2,或者让需求为2,回报为3。因此,我们有 NetDemandP(1,2)=DemandP(1,1)*ReturnP(1,2)+DemandP(1,2)*ReturnP(1,3) 因此,NetDemandP应如下所示: NetDemandP=[20.37.28.13.02] 我可以用嵌套的根据MATLAB中预先指定的规则,从现有的两个概率矩阵中创建一个新的概率矩阵,matlab,matrix,probability,multiplication,Matlab,Matrix,Probability,Multiplication,我的MATLAB代码中有一个问题。让我先给你解释一下这个问题。我有两个矩阵,它们代表事件特定结果的概率。第一种称为DemandProbabilityMatrix,简称DemandDP。条目(i,j)表示项目i被要求j多次的概率。类似地,我们有一个ReturnProbabilityMatrix,即ReturnP。类型(i,j)的元素存储项目i多次返回j的概率。 我们想用这两个矩阵来计算净需求概率。例如: DemandP=[4.5.1] ReturnP=[.2.3.5] 在这种情况下,我们有一个项目
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
提前感谢您需要的是概率密度函数的卷积。或者,更具体地说,您需要需求密度与回报密度的相反方向的卷积。这在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
我认为这是一个完美的答案!工作相当快,而且写得非常整洁!谢谢克里斯,谢谢你。