Code Monkey home page Code Monkey logo

Comments (4)

Gi-z avatar Gi-z commented on August 19, 2024 1

Hi, apologies for not replying to your last issue. Some issues require a bit more explanation than others, and I've been pretty busy this last couple of months. For reference, the example files provided within CSIKit are for testing the parsers. If you're looking to train models using CSI data, you need to look for a relevant dataset for your planned application. There's a list available here, all of which should be parseable with CSIKit.

  1. Unable to import CSIKit.filters.
    CSIKit.filters is a newer, separate module which is where I'm moving all the filters for future versions. However, the original implementations are also available in their original place CSIKit.util.filters. For the examples, you can see I left the import statement using the older version.

  2. Unable to process frames
    no_frames is just an integer. If you want to run a for loop on that many iterations, you need to wrap the integer in a range call such as range(no_frames). That's a typo in the example, and I'll get that sorted just now.

from csikit.

Gi-z avatar Gi-z commented on August 19, 2024 1

You know, it's clear to me that the example has been incorrect for quite a while now. Thanks for pointing this out, and I'm going to resolve it right away.

There is a point in transposing the CSI matrix. When it is returned from csitools.get_CSI, its shape is (no_frames, no_subcarriers, no_rx_antennas, no_tx_antennas). When setting squeeze_output=True, the matrix is returned with any singular dimensions removed (such as cases like this one, where there is 1 rx/tx pairing). The matrix's shape is now (no_frames, no_subcarriers). If we want to filter this data, the point would be to consider each subcarrier stream as one set of timestream values, as we are viewing the CSI value at each subcarrier sampled once for each frame we have. To filter these, we can transpose the matrix so we now observe it as (no_subcarriers, no_frames). This (should) make it easier to follow that we are filtering the matrix along the first axis. Regrettably this has not come through clearly, so I'll try to add better explanation.

Truthfully, I've been planning to properly document the project for quite a while, however deciding which docs framework to use has been difficult. Hopefully this gives you a clearer introduction of how to interact with CSI data.

from csikit.

bachejames avatar bachejames commented on August 19, 2024

Thanks so much @Gi-z, super super useful context! Not at all, really appreciate your response.

I have now been able to import and utilize the filters, thank you! The only thing I'm not sure about is what the purpose is of transposing the CSI matrix prior to applying the filtering. Surely the columns of the CSI already represent the frames, so I don't understand why we would want to switch the columns and rows (doing so generates an out of bounds index exception during the for loop).

from csikit.

bachejames avatar bachejames commented on August 19, 2024

This makes a ton of sense, thanks SO much @Gi-z for your fantastic explanation!

from csikit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.