2013-06-27 45 views
0

我有一個數據表有15個條目。我想通過計算c#中2個點之間的「浮動平均值」將其轉換爲100個條目的數據表。如何將15個條目的數據表格平滑到100個條目?

我不知道我是否足夠清晰的只是讓我知道

+0

提供您迄今爲止所做的一切。 –

+0

但是如果你想要15次平均每次得2分,你將會有29個元素(15個原始數+14個平均數)。你想如何獲得其他71項? –

+0

我想通過做同樣的「遊戲」浮動平均29個元素 –

回答

1

@francops亨利·我beleave它的這個,你想要什麼:

var dt = new DataTable(); 

dt.Columns.Add("Number", typeof(double)); 

for (double i = 0; i < 150; i += 10) 
{ 
    var row = dt.NewRow(); 

    row["Number"] = i; 

    dt.Rows.Add(row); 
} 

YourProcessName(dt, "Number", 100); 

你可以改變「雙師型」:

public static void YourProcessName(DataTable dt, string columnName, int maxRows) 
{ 
    var rcount = dt.Rows.Count; 

    while (rcount < maxRows) 
    { 
     var max = (dt.Rows.Count - 1) * 2; 

     for (var i = 0; i < max; i += 2) 
     { 
      var avg = ((double)dt.Rows[i][columnName] + (double)dt.Rows[i + 1][columnName])/2; 

      var nRow = dt.NewRow(); 

      nRow[columnName] = avg; 

      dt.Rows.InsertAt(nRow, i + 1); 

      rcount++; 

      if (rcount == maxRows) break; 
     } 
    } 
} 

它,你列的類型是雙這樣的測試是非常重要的鍵入,但要確保你會記得到處替換。

+0

對於Datatable答案+1。 –

1

106個值的可能的解決方案:

int k = 0; 
double a; 
double b; 
double[] coarse; 
double[] fine; 

for (int i = 0; i < 15; i++) 
    for (int j = 0; j < 7; j++) 
    { 
     a = 1.0 - j * 1.0/7; 
     b = 1.0 - a; 

     fine[k++] = a * coarse[i] + b * coarse[i+1]; 
    } 

fine[k] = coarse[14]; 

這假定15個原始值存儲在陣列粗[] 。 插值的值將以數組fine []結尾。

+0

+1,以獲得華麗的答案。 –

相關問題