[编辑整个问题以使其自包含]
假设我有以下数据:
open System.IO
open MathNet.Numerics.LinearAlgebra
let rows = [|for line in File.ReadAllLines("Z:\\mypath.csv")
|> Seq.skip 1 do yield line.Split(',') |> Array.map float|]
let data = DenseMatrix.ofRowArrays rows
let data_logdiff =
DenseMatrix.init (data.RowCount-1) (data.ColumnCount)
(fun j i -> if j = 0 then 0. else data.At(j, i) / data.At(j-1, i) |> log)
let alpha = vector [for i in data_logdiff.EnumerateColumns() -> i |> Statistics.Mean]
let sigsq (values:Vector<float>) (avg: float) =
let sqr x = x * x
let result = values |> (fun i -> sqr (i - avg))
result
sigsq (data_logdiff.Column(i), alpha.[0]) |> printfn "%A"
以下是代码:
The type ''a * 'b' is not compatible with the type 'Vector<float>'
错误:@if (Request::has('wordsRow'))
<header><h3>{{Request::get('wordsRow')}}</h3></header>
@endif
这是矩阵和矢量之间的广播操作。所有这些杂技在matlab中做一个简单的意思((y-alpha)。^ 2)。 感谢。
答案 0 :(得分:0)
你的代码中有一个错误,而F#编译器抱怨它,尽管有点模糊。你定义你的功能:
WITH Table1 AS (
SELECT PersonID
,Split.a.value('.', 'VARCHAR(100)') Products
FROM
(SELECT PersonID
,Cast ('<X>' + Replace(Products, '|', '</X><X>') + '</X>' AS XML) AS Data
FROM @t1
) AS t CROSS APPLY Data.nodes ('/X') AS Split(a)
), Table2 AS (
SELECT PersonID
,Split.a.value('.', 'VARCHAR(100)') Products
FROM
(SELECT PersonID
,Cast ('<X>' + Replace(Products, '|', '</X><X>') + '</X>' AS XML) AS Data
FROM @t2
) AS t CROSS APPLY Data.nodes ('/X') AS Split(a)
)
SELECT t1.PersonID
FROM Table1 t1
WHERE NOT EXISTS (SELECT 1
FROM Table2 t2
WHERE t1.PersonID = t2.PersonID
AND t1.Products = t2.Products)
UNION
SELECT t2.PersonID
FROM Table2 t2
WHERE NOT EXISTS (SELECT 1
FROM Table1 t1
WHERE t1.PersonID = t2.PersonID
AND t1.Products = t2.Products)
这是一个带有两个参数的函数。 (实际上它是一个接受一个参数的函数,返回另一个参数的函数。)但是你这样称呼它:
let sigsq (values:Vector<float>) (avg: float) =
你对参数进行了元组化,对于F#函数(a,b)是一个参数,它是一个元组。你应该像这样调用你的函数:
sigsq (data_logdiff.Column(i), alpha.[0]) |> printfn "%A"
或
sigsq (data_logdiff.Column(0)) (alpha.[0])
和我最喜欢的一个:
sigsq <| data_logdiff.Column(0) <| alpha.[0]
我在代码中将data_logdiff.Column(0) |> sigsq <| alpha.[0]
替换为0。如果要循环,可以映射列:
(i)