使用不同间隔的 3d 矩阵的最小值/最大值 Matlab

Min / Max of 3d Matrix using different intervals Matlab

我有一个大小为 MxNxZ 的 3d 矩阵 A。我正在像这样在 Z 方向上搜索每个向量的最小值。

I = min(A(:, :, minInterval : maxInterval), [], 3);

这是有效的。

现在我想为每个向量设置可变间隔。然后我有两个二维矩阵如下:

minIntervals of size MxN
maxIntervals of size MxN

然后我正在尝试这个:

I = min(A(:, :, minIntervals : maxIntervals), [], 3);

但它不起作用,仅使用 minIntervals(1,1) 和 maxIntervals(1,1)。

你有什么想法吗,我不想使用循环,因为数据的大小。

非常感谢。

您可以将区间外的矩阵值设置为 Inf 并取最小值 :

在 MATLAB r2016b 及更高版本中:

z=reshape(1:size(A,3),1,1,[]);
A(z<minInterval | z>maxInterval)=Inf;
I=min(A,[],3);

在 r2016b 之前:

z=reshape(1:size(A,3),1,1,[]);
A(bsxfun(@lt, z, minInterval) | bsxfun(@gt, z,maxInterval))=Inf;
I=min(A,[],3);