在matlab中有一种简单的方法可以做这样的事情:
我有一个矩阵
t2 = [0.4366 0.4298 0.5907;
0.9401 0.5358 0.6136;
0.2305 0.5212 0.9759;
0.9545 0.5572 0.9042];
t2 = [ 0 0.4298 0.5907
0 0 0
0,2305 0 0
0 0 0 ]
我想在每列不是最小元素的位置输出零,并将最小元素输出到正确的位置。
答案 0 :(得分:5)
以下是使用bsxfun
的另一种方法:
result = t2 .* bsxfun(@eq, t2, min(t2));
答案 1 :(得分:3)
t2 = [0.4366 0.4298 0.5907;
0.9401 0.5358 0.6136;
0.2305 0.5212 0.9759;
0.9545 0.5572 0.9042];
[~,idx]=min(t2);
n=sub2ind(size(t2), idx, 1:size(t2,2));
mask=zeros(size(t2));
mask(n)=1;
t2=t2.*mask
t2 =
0.00000 0.42980 0.59070
0.00000 0.00000 0.00000
0.23050 0.00000 0.00000
0.00000 0.00000 0.00000