ermongroup/Wifi_Activity_Recognition

Some question of the dataset

Opened this issue · 9 comments

As you mentioned,92nd - 181st column shows (30 subcarrier * 3 antenna) phase.
But why is the phase value of all subcarriers almost all greater than 2pi?
For example, in "input_161219_sankalp_bed_1.csv", the phase values of all subcarriers are almost between 10 and 15 from 8.5099s to 11.5s, but isn't the value range of phase from 0 to 2pi?

https://web.stanford.edu/~skatti/pubs/sigcomm15-spotfi.pdf
Our phase are unwrapped like this article.
If it over 2pi, I just added 2pi.

Sorry, I still wonder what this sentence " If it become greater than 2pi, I just added 2pi" means?
What should I do if I need to get the right phase?

If it become greater than 2pi,Shouldn't 2pi be subtracted?

You only need is subtract 2pi if it greater than 2pi. and subtract 4pi if it greater than 4pi.

Thanks for your reply!
But I also have a question:
In a period, the phase value ranges from 9 to 13 such as in "input_161219_sankalp_walk_6", and the phase difference is about Pi. But shouldn't the complete phase period be 2Pi, which is about 6.28? This happens in all the data. Why?
In other words, in your data, the phase only changes Pi in a cycle, but in theory the phase should change 2Pi.Could you answer for me.
All help will be appreciated!

I I have been puzzled by the above question for several days. Could you give me some answers?
All help will be appreciated!

Actually, we are not using phase difference.
And I couldn't remember how we think about it at that time.

But here is the code for phase calibration.
I hope it will help you.

function calibrated_phase2 = phase_calibration(phasedata)
    calibrated_phase(1) = phasedata(1);
    difference = 0;
    for i = 2:30
        temp = phasedata(i) - phasedata(i-1);
        if abs(temp) > pi
            difference = difference + 1*sign(temp);
        end
        calibrated_phase(i) = phasedata(i) - difference * 2 * pi;
    end
    
    k = (calibrated_phase(30) - calibrated_phase(1)) / (30 - 1);
    b = mean(calibrated_phase);
    
    for i = 1:30
        calibrated_phase2(i) = calibrated_phase(i) - k * i - b;
    end
end

Thanks!
I have read your code, but I still don't understand the purpose of phase calibration. Why should you calibrate the phase? Is there a problem with the original phase?

I am so sorry to disrurb you all the time.

I think wrapped data will not be continuous over time. That's why we unwrapped phase. But again, we are not using phase information.