有一个diff MATLAB 中的函数,计算向量(或矩阵)中元素之间的差异,但现在不是这种情况。
X = [1 1 2 3 5 8 13 21];
Y = diff(X)
结果:0 1 1 2 3 5 8
我想出了 F# 解决方案:
let x =[1;1;2;3;5;8;13;21]
let diff x = List.map2 (-) (x|> List.tail) (x|> List.take ((x|>List.length) - 1))
diff x
这会产生相同的列表,但我觉得在 F# 中应该有更好的方法来区分?有没有?
最佳答案
List.pairwise : 'T list -> ('T * 'T) list
为您提供连续项目对的列表。
let x =[1;1;2;3;5;8;13;21]
let diff x =
x |> List.pairwise |> List.map (fun (x, y) -> y - x)
关于F#中的Matlab "diff"(逐个元素减去),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50552362/