vector_magnitude
computes the vector magnitude value for each sample
(row) of a multi-channel signal.
vector_magnitude(df, axes = NULL)
dataframe. multi-channel signal, with the first column being the timestamp in POSXct format.
numerical vector. Specify the column indices for each axis. When
this value is NULL, the function assumes the axes are starting from column
2 to the end. Default is NULL
.
dataframe. The transformed dataframe will have the same number of rows as input dataframe but only two columns, with the first being timestamps and second being the vector magnitude values.
This function takes a dataframe of a multi-channel signal as input, and then computes the 2-norm (vector magnitude) for each row and returns a transformed dataframe with two columns.
This function is not used in
the released version of MIMS-unit algorithm, but was used to compare the
alternative sum_up
method when combining MIMS-unit values on
each axis into a single value.
Other transformation functions:
compute_orientation()
,
sum_up()
# Use the first 10 rows of the sample data as an example
df = sample_raw_accel_data[1:10,]
df
#> HEADER_TIME_STAMP X Y Z
#> 1 2016-01-15 11:00:00 0.148 -0.438 0.016
#> 2 2016-01-15 11:00:00 0.215 -0.418 -0.023
#> 3 2016-01-15 11:00:00 0.266 -0.402 -0.012
#> 4 2016-01-15 11:00:00 0.336 -0.430 0.012
#> 5 2016-01-15 11:00:00 0.430 -0.320 0.000
#> 6 2016-01-15 11:00:00 0.535 -0.258 0.004
#> 7 2016-01-15 11:00:00 0.641 -0.348 0.020
#> 8 2016-01-15 11:00:00 0.777 -0.418 0.023
#> 9 2016-01-15 11:00:00 0.938 -0.359 0.043
#> 10 2016-01-15 11:00:00 1.113 -0.234 0.055
# By default, the function will assume columns starting from 2 to be axial
# values.
vector_magnitude(df)
#> HEADER_TIME_STAMP MAGNITUDE_X_Y_Z
#> 1 2016-01-15 11:00:00 0.4626057
#> 2 2016-01-15 11:00:00 0.4706145
#> 3 2016-01-15 11:00:00 0.4821867
#> 4 2016-01-15 11:00:00 0.5458388
#> 5 2016-01-15 11:00:00 0.5360037
#> 6 2016-01-15 11:00:00 0.5939739
#> 7 2016-01-15 11:00:00 0.7296472
#> 8 2016-01-15 11:00:00 0.8825996
#> 9 2016-01-15 11:00:00 1.0052731
#> 10 2016-01-15 11:00:00 1.1386615
# Or, you may specify the column indices yourself
vector_magnitude(df, axes=c(2,3,4))
#> HEADER_TIME_STAMP MAGNITUDE_X_Y_Z
#> 1 2016-01-15 11:00:00 0.4626057
#> 2 2016-01-15 11:00:00 0.4706145
#> 3 2016-01-15 11:00:00 0.4821867
#> 4 2016-01-15 11:00:00 0.5458388
#> 5 2016-01-15 11:00:00 0.5360037
#> 6 2016-01-15 11:00:00 0.5939739
#> 7 2016-01-15 11:00:00 0.7296472
#> 8 2016-01-15 11:00:00 0.8825996
#> 9 2016-01-15 11:00:00 1.0052731
#> 10 2016-01-15 11:00:00 1.1386615
# Or, if you only want to consider x and y axes
vector_magnitude(df, axes=c(2,3))
#> HEADER_TIME_STAMP MAGNITUDE_X_Y
#> 1 2016-01-15 11:00:00 0.4623289
#> 2 2016-01-15 11:00:00 0.4700521
#> 3 2016-01-15 11:00:00 0.4820373
#> 4 2016-01-15 11:00:00 0.5457069
#> 5 2016-01-15 11:00:00 0.5360037
#> 6 2016-01-15 11:00:00 0.5939604
#> 7 2016-01-15 11:00:00 0.7293730
#> 8 2016-01-15 11:00:00 0.8822998
#> 9 2016-01-15 11:00:00 1.0043530
#> 10 2016-01-15 11:00:00 1.1373324
# Or, just return the chosen column
vector_magnitude(df, axes=c(2))
#> HEADER_TIME_STAMP MAGNITUDE_X
#> 1 2016-01-15 11:00:00 0.148
#> 2 2016-01-15 11:00:00 0.215
#> 3 2016-01-15 11:00:00 0.266
#> 4 2016-01-15 11:00:00 0.336
#> 5 2016-01-15 11:00:00 0.430
#> 6 2016-01-15 11:00:00 0.535
#> 7 2016-01-15 11:00:00 0.641
#> 8 2016-01-15 11:00:00 0.777
#> 9 2016-01-15 11:00:00 0.938
#> 10 2016-01-15 11:00:00 1.113