使用不同间隔的 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);
我有一个大小为 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);