2015-07-11 67 views
1

最小输出矩阵有没有一种简单的方法做这样的事情在MATLAB:创建在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

查找功能(T2 == 0) – jdl

+0

@jdl没有0元素在原始矩阵 – beaker

+0

其实,我想从第二矩阵第一个矩阵,从顶部开始。 –

回答

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 
+0

非常感谢。 –

5

下面是使用bsxfun另一种方法:

result = t2 .* bsxfun(@eq, t2, min(t2)); 
+2

绝对是这个问题最优雅的方法。 – Matt

+0

不错。和你的大部分答案一样,这为我另一个'bsxfun'拼图点击到位。 – beaker