在 Matlab 中查找 min(x1, x1*x2, x1*x2*x3, ..., x1*x2*...*xN)

Find min(x1, x1*x2, x1*x2*x3, ..., x1*x2*...*xN) in Matlab

xi=exprnd(1,M,1), i=1,...,N,是一个 M x 1 大小的列向量。这意味着 xij-th 元素是 xi(j)>=0

我想得到 Mx1 大小的列向量 X 其中 Xj-th 元素是 X(j)=min[x1(j), x1(j)*x2(j), x1(j)*x2(j)*x3(j), ..., x1(j)*x2(j)*...*xN(j)].

任何人都可以帮助我使用适用于任何 MN 的 MATLAB 代码吗?

直接将向量构建为 MxN 矩阵的列:

xi = exprnd(1,M,N);

然后沿着第二个维度(cumprod) and then minimizing along the second dimension (min)计算累积乘积可以获得想要的结果:

result = min(cumprod(xi,2),[],2);