Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is the data read here a Fourier transformed frequency domain? #2

Open
rack570 opened this issue Jul 20, 2023 · 5 comments
Open

Is the data read here a Fourier transformed frequency domain? #2

rack570 opened this issue Jul 20, 2023 · 5 comments

Comments

@rack570
Copy link

rack570 commented Jul 20, 2023

I'm the one using your csi decoder. Thank you for creating this tool. By the way, I wonder if the csi read here cannot be plotted in time series. I learned the usefulness of wavelet conversion by looking at existing papers, and I tried to wavelet conversion of csi data, but I heard that this is a conversion method performed in time series data. When I look at your interleaved.py , there is an fft part, so I think it is the data that has already converted the csi into Fourier, is that right?

@zeroby0
Copy link
Contributor

zeroby0 commented Jul 20, 2023

CSI data is, in a way, FFT of the wifi signal. So it's already in the Fourier domain when we get it from the chip. When you run unpack, an fftshift is done to place the subcarriers in the right order.

You can plot the csi amplitude like a spectrogram for a time series visualisation.

@rack570
Copy link
Author

rack570 commented Jul 20, 2023

Thank you for reply for me. my last question is.. Are the amplitude unit "mW" and phase unit "radian" correct?

@zeroby0
Copy link
Contributor

zeroby0 commented Jul 22, 2023

There's an automatic gain controller in the chip which applies a different gain for every packet. Since the signal is being amplified, and we don't know what the amplification factor is, I don't think we can assign a unit.

@rack570
Copy link
Author

rack570 commented Sep 11, 2023

Hello? Thank you for the information you gave me. If you are still active in this repository, I have one more question. I've done a lot of research on csi so far, and I'd like to filter noise or extract features using wavelet transform instead of the current fft of nexcsi. What I'm curious about is that I want to know which order I should put the wavelet transform task in. I think the unpack function is the part that enforces fft in nexcsi package, but I was wondering if I can just use the wavelet transform after removing the unpack code and using only the decoder function.

And I want to ask you one more thing. (fft, stft, wt(wavelet)) I'm curious about your opinion on which of these three transformations do you prefer when analyzing csi signals.

@zeroby0
Copy link
Contributor

zeroby0 commented Sep 12, 2023

Heyo,

nexcsi doesn't do any FFT. CSI data is already an FFT of the received signal, nexcsi does FFT-shift so that the subcarriers are in the right order, with 0 at center. The only filtering it does is making the values of null and pilot subcarriers 0 when the option to do so it passed.

Yes, you should use the unpack function, which converts CSI from encoded form to complex values, and then do any processing you'd like to do. I don't have experience with the other transforms, try all of them and see which works best? Please do tell us which one works best and your experience so we learn too :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants