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



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

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

这是有效的。

现在我想为每个向量提供可变的间隔。然后我有两个 2d 矩阵如下:

minIntervals of size MxN
maxIntervals of size MxN

然后我正在尝试这个:

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

但它不起作用,只使用最小间隔(1,1(和最大间隔(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);

最新更新