2016-03-24 10 views
0

F#でKMeans(http://accord-framework.net/docs/html/T_Accord_MachineLearning_KMeans.htm)を使用する関数を作成しました。F#では、float [、]とfloat [] []の違いは何ですか?float [] []をどのように初期化しますか?

という関数は、float [] []が必要ですが、F#ではそれを見たことがありません。フロート[、]のみ。

コードの例は次のとおりです。

let ConverterForCluster = 

私はフロートを返し、既存のアプリケーションでこれをインターフェイスと、この私が書くために取得しようとしている瞬間に、[、]移入する50×50のゼロから始まる配列を作成[、]から[] []

マイ距離アレイは

let mutable Distance = Array2D.zeroCreate 50 50 

関数kmeansとして宣言されたコンバータはAccord.NETライブラリ(上部のリンク)からの方法です。

let km = KMeans(5) 

km(下)の計算機能が受け入れることができるように、私はdmという新しい変数を作成しています。しかし、Unchecked.defaultofを使用すると、私は[] []「大丈夫ですが、私は私ができるように、DMを初期化するために、まだまし浮いて[、]フロートから、この変換を信じるエラー

let dm : float[][] = Unchecked.defaultof<float[][]> 

    for i = 0 to 49 do 
     for j = 0 to 49 do 

あるヌル配列を作成します。

:T 100%

dm.[i].[j] <- Convert.ToDouble Distance.[i, j] 

これは[] []フロートを必要と例外がある

let label = km.Compute(dm) 

    label 

[、]受け付けない関数であることを確認

System.NullReferenceExceptionは、未処理のメッセージであった:「System.NullReferenceException」種類の未処理 例外のCluster.exeで発生しました追加情報:オブジェクト参照がオブジェクトの インスタンスに設定されていません。 DMが原因私は

let dm : float[][] = Unchecked.defaultof<float[][]> 

それを初期化する方法がわからないよう私の質問はどのようにある下の行にはnullであるため、

このエラーは、次の行に

dm.[i].[j] <- Convert.ToDouble Distance.[i, j] 

ですこのタイプの配列を初期化するのですか?違いは何ですか?

これから何かを見逃してしまった場合は、私に知らせてください。それが意味をなさない場合はお知らせください。ありがとう。短い `フロートで

+0

[、]' [多次元配列](https://en.wikipedia.org/wiki/Array_data_structure#Multidimensional_arrays)であり 'フロートは、[] []' [ギザギザ配列であります](https://en.wikipedia.org/wiki/Jagged_array)。 –

+0

T [] []単なる配列の配列です.T [、]は実際には1次元配列です。 –

+0

私は両方の質問が別の質問で答えられているので、重複して閉じることに投票しています。違いは何ですか?答えは、F#WikiBooksのリンクで解答しています。この質問をあなた自身の複製としてマークして、即座にステータスを変えることができます。 :) –

答えて

-3
let dm : float[][] = [| for a in 0 .. 49 do yield [| 0.0 .. 49.0 |] |] 
+4

このコードは疑問に答えるかもしれませんが、_context_を記述して_how_と_when_を説明する方が良いでしょう。これを使って。コードのみの回答は長期的には有用ではありません。 –

+0

あなたの答えを広げよう;) –

+0

@FoggyFinder Okay –

関連する問題