Skip to content
Snippets Groups Projects
Commit 460eedc1 authored by Max Nyberg Carlsson's avatar Max Nyberg Carlsson
Browse files

Frequency method

parent dd48c768
No related branches found
No related tags found
No related merge requests found
using Pkg; Pkg.activate(".");
using FFTW, DSP, Plots, DelimitedFiles
using REPL.TerminalMenus
function plot_spectrogram(s, n=div(length(s),8), noverlap=div(n,2))
n = 80
noverlap = n-1 #div(n,2)
spec = spectrogram(s, n, noverlap)
n = 300
spec = spectrogram(s, n, n-1)
power = spec.power./sum(spec.power, dims=1)
heatmap(spec.time, spec.freq, power)
end
......@@ -12,6 +13,13 @@ function plot_periodogram(s)
peri = periodogram(s)
plot(peri.freq, peri.power)
end
function plot_periodogram(x,y,z)
perix = periodogram(x)
periy = periodogram(y)
periz = periodogram(z)
power = max.(perix.power, periy.power, periz.power)
plot(perix.freq, power)
end
function read_data(dataname, sensor)
return readdlm("data/$(dataname)_$(sensor).txt", Float64)
......@@ -30,20 +38,32 @@ getpitch(data) = data[:,3]
getroll(data) = data[:,4]
normalize_data(A) = sqrt.(sum(A.^2, dims=2)) # TODO squareroot?
decimate(v) = resample(v, 0.1)
mean(v) = sum(v)/length(v)
detrend(v) = v .- mean(v)
acc_data(dataname) = read_acc(dataname) |> xyz |> normalize_data |> vec |> detrend
acc_spectogram(dataname) = acc_data(dataname) |> plot_spectrogram
acc_periodogram(dataname) = acc_data(dataname) |> plot_periodogram
x_data(dataname) = read_acc(dataname) |> getx |> normalize_data |> vec |> detrend
y_data(dataname) = read_acc(dataname) |> gety |> normalize_data |> vec |> detrend
z_data(dataname) = read_acc(dataname) |> getz |> normalize_data |> vec |> detrend
acc_data(dataname) = read_acc(dataname) |> xyz |> normalize_data |> vec |> decimate |> detrend
x_data(dataname) = read_acc(dataname) |> getx |> normalize_data |> vec |> decimate |> detrend
y_data(dataname) = read_acc(dataname) |> gety |> normalize_data |> vec |> decimate |> detrend
z_data(dataname) = read_acc(dataname) |> getz |> normalize_data |> vec |> decimate |> detrend
xyz_data(dataname) = (x_data(dataname),y_data(dataname),z_data(dataname))
acc_spectrogram(dataname) = acc_data(dataname) |> plot_spectrogram
acc_periodogram(dataname) = acc_data(dataname) |> plot_periodogram
gyr_data(dataname) = read_gyr(dataname) |> ypr |> normalize_data |> vec |> detrend
gyr_spectogram(dataname) = gyr_data(dataname) |> plot_spectrogram
gyr_data(dataname) = read_gyr(dataname) |> ypr |> normalize_data |> vec |> decimate |> detrend
pitch_data(dataname) = read_acc(dataname) |> getpitch |> normalize_data |> vec |> decimate |> detrend
yaw_data(dataname) = read_acc(dataname) |> getyaw |> normalize_data |> vec |> decimate |> detrend
roll_data(dataname) = read_acc(dataname) |> getroll |> normalize_data |> vec |> decimate |> detrend
gyr_spectrogram(dataname) = gyr_data(dataname) |> plot_spectrogram
gyr_periodogram(dataname) = gyr_data(dataname) |> plot_periodogram
pitch_data(dataname) = read_acc(dataname) |> getpitch |> normalize_data |> vec |> detrend
yaw_data(dataname) = read_acc(dataname) |> getyaw |> normalize_data |> vec |> detrend
roll_data(dataname) = read_acc(dataname) |> getroll |> normalize_data |> vec |> detrend
function menuplot()
datasets = ["jogging1", "jogging2", "mix1", "standing1", "walking1", "walking2"]
keybindings = [Char('0' + i) for i in 1:length(datasets)]
menu = RadioMenu(datasets, pagesize=min(length(datasets), 10), keybindings=keybindings)
choice = request("Please choose a dataset (up/down or 1-9):", menu)
acc_spectrogram(datasets[choice])
end
@show menuplot()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment