在matlab中创建最小输出矩阵

时间:2015-07-11 23:05:40

标签: matlab matrix

在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 ]

我想在每列不是最小元素的位置输出零,并将最小元素输出到正确的位置。

2 个答案:

答案 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