F#中的Matlab "diff"(逐个元素减去)

标签 matlab f#

有一个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/

相关文章:

matlab - Matlab中imagesc()的非均匀轴

matlab - 如果出错,请在 dbstop 期间阻止 Matlab 进入内置函数

c# - 给定多边形列表,构造带孔的多边形

f# - 如何做 bool 独占或?

f# - 类型提供者:如何重新生成?

Matlab:动画

c++ - 使用 Matlab Compiler 将 MATLAB .m 文件转换为 .mex 文件

f# - 如果 F# 中的私有(private)实体编译为内部,为什么 InternalsVisibleTo 不起作用?

f# - Deedle 标准化帧

f# - 如何用英语阅读函数类型