matlab中的2D数据分箱

时间:2017-02-20 19:31:42

标签: matlab 2d binning

我试图用x和y坐标来存储一些数据但是我面临着两个挑战:

  1. x和y维度的bin宽度
  2. bin位置(bin边缘应该从哪里开始)
  3. 我有一些跟踪目标的传感器。每个传感器在2D空间中获取目标的位置,但是由于读取错误,我从每个传感器获得的位置是不同的。因此,我想将读数结合起来然后取出箱中读数的平均值来获得目标的位置。

    我想知道是否有人可以推荐一种可能解决方案的方法,或者可能是一本关于分类理论的书,以便我可以了解如何解决我的问题

1 个答案:

答案 0 :(得分:2)

您可以使用package main import ( "bytes" "compress/flate" "compress/gzip" "compress/zlib" "fmt" "io" "os" ) var ( flateReaderFn = func(r io.Reader) (io.ReadCloser, error) { return flate.NewReader(r), nil } zlibReaderFn = func(r io.Reader) (io.ReadCloser, error) { return zlib.NewReader(r) } ) func deflate(b []byte, skip, length int, newReader func(io.Reader) (io.ReadCloser, error)) { // rfc-1950 // -------- // First 2 bytes // [120, 1] - CMF, FLG // // CMF: 120 // 0111 1000 // ↑ ↑ // | CM(8) = deflate compression method // CINFO(7) = 32k LZ77 window size // // FLG: 1 // 0001 ← FCHECK // (CMF*256 + FLG) % 31 == 0 // 120 * 256 + 1 = 30721 // 30721 % 31 == 0 stream := bytes.NewReader(b[skip:length]) r, err := newReader(stream) if err != nil { fmt.Println("\nfailed to create reader,", err) return } n, err := io.Copy(os.Stdout, r) if err != nil { if n > 0 { fmt.Print("\n") } fmt.Println("\nfailed to write contents from reader,", err) return } fmt.Printf("%d bytes written\n", n) r.Close() } func main() { //readerFn, skip := flateReaderFn, 2 // compress/flate RFC-1951, ignore first 2 bytes readerFn, skip := zlibReaderFn, 0 // compress/zlib RFC-1950, ignore nothing // ⤹ This is where the error occurs: `flate: corrupt input before offset 19`. stream1 := []byte{120, 1, 43, 84, 8, 84, 40, 84, 48, 0, 66, 11, 32, 44, 74, 85, 8, 87, 195, 136, 83, 48, 195, 144, 51, 55, 194, 177, 52, 48, 50, 86, 40, 78, 70, 194, 150, 74, 83, 8, 4, 0, 195, 190, 194, 182, 10, 194, 171, 10} stream2 := []byte{120, 1, 43, 84, 8, 4, 0, 1, 195, 167, 0, 195, 163, 10} fmt.Println("----------------------------------------\nStream 1:") deflate(stream1, skip, 42, readerFn) // flate: corrupt input before offset 19 fmt.Println("----------------------------------------\nStream 2:") deflate(stream2, skip, 11, readerFn) // invalid checksum } 在2D中执行分箱。要获取bin位置,您可以获取所有测量的2D空间并将其划分为nxn网格(根据需要选择n)。如果坐标保存在2列矩阵histcounts2

P