2017-10-26 21 views
-2

多次元配列(この場合は3次元)から1次元配列または2次元配列への変換に関するクエリがあります。私は、二項分布に従って乱数を生成する三次元の行列を持っています。行列の3つの次元は、cluster_nbrs、timeslots、およびserver_nbrsを表します。このコードはMATLABに実装されています。多次元配列から1次元ベクトルへの変換

cluster_nbrs = 3; 
timeslots = 4; 
server_nbrs = 2; 
d_cts = zeros(cluster_nbrs,timeslots,server_nbrs); % Three Dimensional Matrix 
for c = 1:cluster_nbrs 
    for t = 1:timeslots 
     for s = 1:server_nbrs 
      d_cts(c,t,s) = binopdf(randi(300),300,0.5); 
      s = s + 1; 
     end 
    t = t + 1; 
    end 
c = c + 1; 
end 

今、私は私が使用する必要があり、その後どのような機能のみの次元としてcluser_nbrsとタイムスロットを持つ別の行列を生成する場合。私はこの方法を使用しました。私が間違いを犯した場合は、私に修正してください。

d_ct = zeros(cluster_nbrs,timeslots); % Two Dimensional Matrix 
for c = 1:cluster_nbrs 
    for t = 1:timeslots 
     d_ct(c,t) = sum(d_cts(c,t,:))./server_nbrs; 
     t = t + 1; 
    end 
    c = c + 1; 
end 

さらに、cluster_nbrsディメンションの値だけを使用する場合は、このロジックに従っています。

d_c = zeros(cluster_nbrs,1); % 1 Dimensional Matrix 
for c = 1:cluster_nbrs 
    d_c(c,1) = sum(d_ct(c,:))./timeslots; 
    c = c + 1; 
end 

私は1つの& 2次元行列の値を取得していますが、私は、これは多次元配列を変換するための正しい方法であればお願いしたいと思います。

+0

コードで期待される出力が得られない場合は、出力の内容と実際に期待する内容を記述してください。 – mikkola

+0

@mikkola私の質問は、多次元配列を1次元配列に変換するために使用しているメソッドが正しいかどうかです。 – shahrukh

答えて

0

私は、ベクトル計算を使用するとループするのではなく、あいまいさを解消して処理を高速化すると思います。