2016-10-12 61 views
1

我已經在3D中設置了w矩陣。選擇滿足公平條件的右矩陣

w(:,:,1) = 
    0.7791 0.0956 0.4664 
    0.4257 0.4965 0.6954 

w(:,:,2) = 
    0.7791 0.1300 0.4749 
    0.4257 0.7335 0.4552 

w(:,:,3) = 
    0.8823 0.7335 0.4664 
    0.3944 0.1300 0.6954 

w(:,:,4) = 
    0.8823 0.4965 0.4749 
    0.3944 0.0956 0.4552 

我想得到每個矩陣的每一行的最小值。

minEach=min(w,[],2); 
minMat=reshape(minEach,[2 4]) 

它給

minMat =  
    0.0956 0.1300 0.4664 0.4749 
    0.4257 0.4257 0.1300 0.0956 

現在我要選擇具有相當高值的列,這意味着在列中的每個值應該比其他列相當好。例如,第4列具有最佳值,但是其他值爲低。所以我做了什麼,我得到每列的最小值並選擇最大值。

minAll=max(min(minMat)) 
minAll =  
    0.1300 

然後,我有兩個選擇,我選擇最多兩個其他值,其中第三列是最好的選擇(我不知道這一步在Matlab中如何執行)。然後,我必須得到相應的w矩陣,即w(:,:,3)

問題:一般來說,w包括n沒有。每個w(:,:,i)矩陣的尺寸爲p x q。我很困惑我如何選擇正確的w(:,:,i)滿足公平條件的矩陣。特別地,如果是w(:,:,i)5x6minAll值可以在3列。然後,我必須一次又一次地重複相同的過程。

這將是巨大的,如果有人能指導我。

回答

0

接下來的步驟是:

含有0.13

提取這些列,並將它們連接成一個新的矩陣

在這個矩陣中找到包含最大值列的索引列的發現incides

然後得到的瓦特idx

[~,c,~]=find(minMat == minAll); 
minMat_selected= minMat(:,c); 
[~,cc,~] = find(minMat_selected == max(minMat_selected(:))); 
idx = c(cc(1)); 
w(:,:,idx) 
索引