2016-06-25 13 views
0

下記の例を考えてみましょう。 3人の顧客A、B、Cがいます。 行列の1行目はそれぞれの顧客の需要であり、2行目は必要な日です。 たとえば、需要A = [10,40,50; 15,45,75]。顧客Aは15日目に10個の品目を必要とする.45日目に40品目、75日目に50品目を必要とする。同様にB、C。Matlabプログラミング、マトリックスソート、ランク付け

demand A=[10,40,50;15,45,75]; 
demand B=[80,30,20;05,35,80]; 
demand C=[50,40,30;20,47,88]; 

今、私は顧客を日数でランク付けする必要があります。だからここで答えは ランク1:5日顧客B 80のようにする必要があります ランク2:15日顧客A 10項目 ランク3:20日顧客C 50項目。 など。

マットラボではどうすればいいですか?その日の基準に基づいてランク付けすると、それに応じてアイテム数と顧客数を把握する必要があります。

出力は次のようにすべきである:

   Rank Customer items day 
        1  B  80  05 
        2  A  10  15 
        3  C  50  20 
        4  B  30  35 
        5  A  40  45 
        6  C  40  47 
        7  A  40  75 
        8  B  20  80 
        9  C  30  88 
+0

は、あなたが実際に出力ではなく言葉でそれを記述しようとするよりも見えるように期待するもの投稿することができますか? – Suever

+0

これをコメントに入れるのではなく、あなたの質問に編集できますか? – Suever

答えて

0

Iは、以下のアプローチを示唆している:

第一段階

は、A、B及びCの組成物である新たな行列を生成します次のようになります。 最初のcolはその日を表します。 2番目の列は要求された金額を表します。 3番目の列はコスト指標(A = 1、B = 2、C = 3)です。

res = [A',ones(size(A',1),1);B',ones(size(A',1),1)*2;C',ones(size(C',1),1)*3]; 
res(:,[2,1]) = res(:,[1,2]); 

第二段階日

[~,sortedDaysIndices] = sort(res(:,1)); 
res = res(sortedDaysIndices,:); 

第三段階を表す最初の列に記載

ソートマトリックス:

for ii=1:size(res) 
    if res(ii,3)==1 
     costumerStr = 'A'; 
    elseif res(ii,3)==2 
     costumerStr = 'B'; 
    else 
     costumerStr = 'C'; 
    end 

    fprintf('%s\n',[num2str(ii) ' ' costumerStr ' ' num2str(res(ii,2)) ' ' num2str(res(ii,1))]) 
end 

結果を印刷結果

1 B 80 5 
2 A 10 15 
3 C 50 20 
4 B 30 35 
5 A 40 45 
6 C 40 47 
7 A 50 75 
8 B 20 80 
9 C 30 88 
関連する問題