2016-07-13 12 views
0

Matlabを使用して、列2の受信電波強度(RSS)値を使用して、次のワイヤレスセンサーの読み値を降順でソートしたいと思います。 3つの最も高いRSS値に対応する。列3は各センサの座標であり、列4は列1のセンサに見える無線センサである。Matlabを使用した並べ替え(条件付き)

しかし、条件を満たす必要がある。選択する3つの最高値は、互いに見える必要があります。センサA、D、Fが選択されている場合、例えば、センサD及びFは、Aに表示されている必要があり、センサA及びDは、Fに見えなければならず、センサA及びFは

Column 1 Column 2 Column 3    Column 4 
             (Sensors that are visible to 
             the sensor in Column 1) 
    A   -45   1,1     B,C,D,E,H 
    B   -90   1,5     A,D,C,E,H 
    C   -50   3,9     A,B,E,H,G 
    D   -54   4,2     A,C,B,F,G 
    E   -70   4,6     C,D,H,G 
    F   -57   7,2     B,D,H,I 
    G   -75   7,6     D,B,I,E 
    H   -64   6,9     E,D,G,I 
    I   -23   9,9     H,G,F,B 

D.見えなければなりません助けのあらゆる形態を楽しみにしています。ここではグレイトフル

答えて

0

は降順でデータを並べ替え、私は最初の部分のために得たものである:

data = cell(9,4); 
col1 = ['A','B','C','D','E','F','G','H','I']; 
col2 = [-45,-90,-50,-54,-70,-57,-75,-64,-23]; 
col3 = [{'1,1'},{'1,5'},{'3,9'},{'4,2'},{'4,6'},{'7,2'},{'7,6'},{'6,9'},{'9,9'}]; 
col4 = [{'B,C,D,E,H'},{'A,D,C,E,H'},{'A,B,E,H,G'},{'A,C,B,F,G'},{'C,D,H,G'},{'B,D,H,I'},{'D,B,I,E'},{'E,D,G,I'},{'H,G,F,B'}]; 
for i = 1:length(data) 
    data{i,1} = col1(i); 
    data{i,2} = col2(i); 
    data{i,3} = col3(i); 
    data{i,4} = col4(i); 
end 

[trash idx] = sort([data{:,2}],'descend'); 
newdata = data(idx,:); 

そして、第二部のために、これは最高3に対応する座標の平均を見つけるために動作しますRSS値を使用することができますが、選択する3つの最高値はお互いに見える必要があります。

for i = 1:3 
    coord = str2num(cell2mat(newdata{i,3})); 
    coord_ave(i) = mean(coord); 
end 

私がしなければ、私は状態のものに何かを把握し、何かを投稿することができた場合、私が表示されます。今、私はstrfindを使用すると、以下のようにお互いに列1および4を比較するために働くだろうと思いますが、いくつかの追加の手順は、データの全てにおいて、3個の最大の一致を見つけることが必要になります。

current_max_sens = newdata{i,1}; 
cell2mat(strfind(cellstr(newdata{3,4}),current_max_sens)) 

私はこれがことを願っ少なくともあなたに出発点を与えてください。

+0

プログラムの最初のセクションを実行しようとしましたが、エラーメッセージが表示されています。 'この課題の右手側は、左手側を満足させるには値が少なすぎる。エラー9行目。data {i:2} = col2(i) – Kola

+0

申し訳ありません! – Kola

関連する問題