2015-07-11 43 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