2016-12-18 12 views
0

私は行列(10,20,4)と列ベクトル(10)を持っています。私は行列を作った。ここで各行は列ベクトルから一つだけのインデックスを選択する。しかし、列ベクトルの各インデックスをどのようにするかは、2回だけ繰り返す必要があります。あなたはこのを求めますが、インデックスvと列ベクトルを持っている場合は、次のコードは、元の順序を保ち、回以上登場値をフィルタリングし、私にははっきりしていない列ベクトルの各インデックスを2回だけ繰り返す方法。

userDistance=randint(10,20,4); 
    K_max=20; 
    NN=4; 

    for nn=1:NN 
     for ue=1:K_max 
      temp = userDistances(:,ue,nn); 
      [~,sort_temp] = sort(temp,1,'ascend'); 
      UE_selected(ue,nn)=sort_temp(1); 
     end 
    end 

答えて

0

v = randi(5, 1, 15)' 
u = unique(v); % different values 
A = repmat(v, 1, length(u)) == repmat(u', length(v), 1); 
B = cumsum(A) .* A; % accumulate ocurrences per row 
m = max(B'); 
output = v(m <= 2) % only those that appeared up to 2 times. 
実行の

例:

V =

4 
1 
2 
1 
1 
5 
4 
2 
5 
1 
3 
2 
4 
4 
1 

出力=

4 
1 
2 
1 
5 
4 
2 
5 
3 
関連する問題