diff --git a/frequency_powerFINAL.jl b/frequency_powerFINAL.jl
new file mode 100644
index 0000000000000000000000000000000000000000..97ba51e7daead0384dbc5b22438f827035539daa
--- /dev/null
+++ b/frequency_powerFINAL.jl
@@ -0,0 +1,104 @@
+using Pkg; Pkg.activate(".");
+using FFTW, DSP, Plots, DelimitedFiles
+using REPL.TerminalMenus
+
+# Plot heatmap of spectrogram:
+function plot_spectrogram(s)
+	n = 80 #window size
+	noverlap = n-1 #window overlap
+	spec = spectrogram(s, n, noverlap)
+	power = spec.power./sum(spec.power, dims=1)
+	heatmap(spec.time, spec.freq, power, size=(1500,800),title="Spectrogram")
+end
+
+# Get frequency with greatest power:
+function get_spectrogram(s)
+	n = 80 #window size
+	noverlap = n-1 #window overlap
+	spec = spectrogram(s, n, noverlap)
+	power = spec.power./sum(spec.power, dims=1)
+	power = 0.5*10*maxPower(power)/41 #adjust to get correct unit
+	return power
+end
+
+# Get index of largest value in each column:
+function maxPower(data)
+	l = size(data)[2]
+	index = zeros(l,1)
+	for i=1:l
+		index[i] = findmax(data[:,i])[2]
+	end
+	return index
+end
+
+#Moving mean function for smoothing magnitude of acceleration in time domain:
+movmean(x, n) = conv(x, ones(Int64, n))/n
+
+# Load data:
+function read_data(dataname, sensor) 
+	return readdlm("data/$(dataname)_$(sensor).txt", Float64)
+end
+
+read_acc(dataname) = read_data(dataname, "acc")
+normalize_data(A) = sqrt.(sum(A.^2, dims=2)) #Euclidean norm of data
+decimate(v) = resample(v, 0.1) #decimate data
+mean(v) = sum(v)/length(v)
+detrend(v) = v .- mean(v) #remove mean
+xyz(data) = data[:,2:4] #extract relevant components
+
+# Acceleration data pipieline:
+acc_data(dataname) = read_acc(dataname) |> xyz |> normalize_data |> vec |> decimate
+
+# Spectrogram calculation:
+acc_frequency(dataname) =  acc_data(dataname) |> detrend |> get_spectrogram
+acc_spectrogram(dataname) = acc_data(dataname) |> detrend |> plot_spectrogram
+
+# Moving average of magnitude of acceleration:
+n_smooth = 80 #kernel size
+acc_power(dataname) = acc_data(dataname) |> x->movmean(x,n_smooth) |> x->x[n_smooth:end-n_smooth+1]
+
+function menuplot()
+	datasets = ["jogging1", "jogging2", "mix1", "standing1", "walking1", "walking2"]
+	
+	# Menu:
+	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)
+	
+	# Get data:
+	frequency = acc_frequency(datasets[choice]) #get frequency data
+	power = acc_power(datasets[choice]) #get magnitude data
+	plot_heatmap = acc_spectrogram(datasets[choice]) #plot spectrogram heatmap
+
+	# Decide activity:
+	power_activity = 1*(power.>11.5)+1*(power.>10)
+	frequency_activity = 1*(frequency.>2.2)+1*(frequency.>1.0)
+	
+
+	# Get aggregate activity:
+	activity = zeros(length(power_activity),1) 
+	activity[1] = frequency_activity[1] #frequency data looks slightly more reliable
+	for t = 2:length(power_activity)
+		if power_activity[t] == frequency_activity[t]
+			activity[t] = power_activity[t] #update activity if datasets agree
+		else
+			activity[t] = activity[t-1] #otherwise continue previous activity
+		end
+	end
+	
+	# Plotting:
+	plot_PA = plot(power_activity,size=(1500,800),title="Activity (magnitude)")
+	plot_FA = plot(frequency_activity,size=(1500,800),title="Activity (frequency)")	
+	plot_activity = plot(activity,size=(1500,800),title="Activity (aggregate)")
+	plot_frequency = plot(frequency,size=(1500,800),title="Frequency")
+	plot_power = plot(power,size=(1500,800),title="Magnitude")
+	
+	display(plot(plot_heatmap,plot_frequency,plot_power,plot_PA,plot_FA,plot_activity))
+	
+	# Combined plots:
+	#plot(frequency,size=(1500,800),label="Frequency")
+	#plot!(activity,label="Activity")
+	#plot(power.-9.8,size=(1500,800),label="Magnitude")
+	#plot!(activity,label="Activity")
+end
+