2009-09-14 49 views
1

我需要(快速原型和庫的集成)是這樣的(擴展通常陣列)雙[,],INT [],布爾[] ...中C#矩陣,矢量操縱擴展

 

double[] d; 
d.SetRow(1,{ 1.1 , 2.0 ,3.3}); 
var r = d.GetRow(1); 
d = d.AppendRight(new int[]{1,2,3}); 
... 

在任何地方都存在這樣的事情嗎? 可能是任何人實現它,所以我不需要爲我自己做我呢?

+1

「在可能是任何人實現它,所以我不需要我做我自己?」 也許你的老闆需要找到別人來做它。 – RvdK 2009-09-14 12:03:37

+0

用於此目的的擴展方法將非常有用,我同意。但是,您是否想要在二維數組上進行操作? 'int [,]'等等? – Noldorin 2009-09-14 12:07:54

+0

是的。我也需要這個。 – 2009-09-14 12:48:24

回答

0

這應該不會太難寫自己。

要特別小心的是數組如何被編輯爲屬性。

喜歡的東西(很粗糙未經測試的代碼,但應該給你一個想法):

public class ArrayRow<T> { 
    //add your own ..ctor etc 

    T[,] matrix; //don't make this public see http://msdn.microsoft.com/en-us/library/k2604h5s.aspx 
    public int Index { get; private set; } 

    //note that this will be a copy 
    public T[] GetValues() { 
     T[] retval = new T[matrix.GetLength(1)]; 
     for (int i = 0; i < retval.Length; i++) 
      retval[i] = matrix[Index, i]; 

     return retval; 
    } 

    public void SetValues(T[] values) 
    //..and so on, you get the idea 
} 

然後您將擴展陣列:

public static ArrayExtensions { 

    public void SetRow<T> (this T[,] matrix, int rowIndex, T[] values) { 
     //check rowIndex in range and array lengths match 
    } 

    public ArrayRow<T> GetRow<T> (this T[,] matrix, int rowIndex) { 
     //check rowIndex in range 
     return new ArrayRow<T> (matrix, rowIndex); 
    } 
} 

然後你可以依靠的類型參數來推算出。

+0

我不需要任何課程。我知道擴展和泛型類型。 我可以自己實現一切。 但是,這不僅需要花時間來寫,而是要測試 - 以便一切正常。 所以我問這樣的代碼庫的存在,所以我不需要從頭開始。 – 2009-09-14 12:55:42

+0

恐怕我不知道現有的庫。在你的例子中,你將需要某種類的'var r = d.GetRow ...' - 作爲結果將是'行'的副本,而不是對多維數組的引用 – Keith 2009-09-14 14:56:20

+0

Copy(as雙[]實例)是好的。我不關心性能和內存使用情況。 MATLAB的行爲(無法獲得行參考)滿足我。 – 2009-09-14 17:50:23

0

像Python支持列表混合類型的語言。您可以創建一個IronPython腳本,然後從您的C#應用​​程序調用它。跟着this link看看你可以從你的應用程序調用IronPython腳本。

3

看一看Math.NET。它是一個開源的數學庫。你可能會找到你需要的。

他們有一個使用這個page末尾的矩陣的例子。

+0

我知道Math.NET,dnAnalytics等,但他們都有矩陣類。 但我不需要它們。我需要的: 因爲我可以將我的分類算法與SVM.NET,NeronDotNet,alglib.net進行比較。 它們都使用的方法 公共問題不同陣列(INT計數,雙[] Y,節點[] []×,整數maxIndex) 公共靜態無效nbcbuildm(參考雙[,] XY,REF布爾[,]米,詮釋npoints,文獻INT []女,INT nvars,INT nclasses,INT標誌,參考INT信息,文獻雙[] b,REF nbcreport REP) ... 我需要轉換和數據準備程序 - 理想 - 陣列擴展 – 2009-09-14 12:47:28

0

我寫矩陣擴展C#庫,基於測試擴展代碼生成設計http://matrixextensions.codeplex.com/

+1

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – 2012-08-28 14:34:36