Matlab 求四个矩阵中对应元素的最小值
所以我需要找到多重矩阵中对应元素的最小值。我确实找到了答案,但我想把我的问题再进一步。我的矩阵有正值和负值(以及零),我想找到排除零的最小值 例如:Matlab 求四个矩阵中对应元素的最小值,matlab,matrix,minimum,Matlab,Matrix,Minimum,所以我需要找到多重矩阵中对应元素的最小值。我确实找到了答案,但我想把我的问题再进一步。我的矩阵有正值和负值(以及零),我想找到排除零的最小值 例如: Z(:,:,1) = [-5 0 5 0 0 0 1 0 3]; Z(:,:,2) = [1 0 2 0 0 0 0 0 0]; Z(:,:,3) = [0 0 0 -9 0 4 0 0 0]; Z
Z(:,:,1) = [-5 0 5
0 0 0
1 0 3];
Z(:,:,2) = [1 0 2
0 0 0
0 0 0];
Z(:,:,3) = [0 0 0
-9 0 4
0 0 0];
Z(:,:,4) = [0 0 0
-2 0 0
0 0 0];
以下是我目前正在使用的:
Zmin = min(Z,[],3);
但这给了我:
[-5 0 0
-9 0 0
0 0 0]
但我希望我的结果是:
[-5 0 2
-9 0 4
1 0 3]
有什么想法吗?当我使用非零时,它会把一切都搞糟。一个选项是将所有零元素设置为NaN:
Z(Z==0)=NaN;
然后使用nanmean
Zmin = nanmin(Z,[],3);
这里有一个解决方法:
将Z中的所有0替换为NaN,计算最小值,然后切换回0:
clear all
clc
close all
Z(:,:,1) = [-5 0 5
0 0 0
1 0 3];
Z(:,:,2) = [1 0 2
0 0 0
0 0 0];
Z(:,:,3) = [0 0 0
-9 0 4
0 0 0];
Z(:,:,4) = [0 0 0
-2 0 0
0 0 0];
%// Assign NaN to 0 elements
Z(Z ==0) = NaN;
Zmin = min(Z,[],3);
%// Switch back with 0
Zmin(isnan(Zmin)) = 0;
%// Same for Z;
Z(isnan(Z)) =0;
输出如下所示:
Zmin
Z
Zmin =
-5 0 2
-9 0 4
1 0 3
Z(:,:,1) =
-5 0 5
0 0 0
1 0 3
Z(:,:,2) =
1 0 2
0 0 0
0 0 0
Z(:,:,3) =
0 0 0
-9 0 4
0 0 0
Z(:,:,4) =
0 0 0
-2 0 0
0 0 0