mirror of
https://gitlab.com/orbital-debris-research/directed-study/report-1.git
synced 2025-06-15 22:46:47 +00:00
60 lines
1.2 KiB
Julia
60 lines
1.2 KiB
Julia
using DataFrames
|
|
using LinearAlgebra
|
|
using CSV
|
|
using DataFramesMeta
|
|
using Plots
|
|
using StatsPlots
|
|
|
|
begin
|
|
df = CSV.read("compiled.csv", DataFrame)
|
|
|
|
df.bb_volume = df.bb_length .* df.bb_width .* df.bb_height
|
|
|
|
|
|
@eachrow! df begin
|
|
@newcol :Ix::Vector{Float64}
|
|
@newcol :Iy::Vector{Float64}
|
|
@newcol :Iz::Vector{Float64}
|
|
@newcol :Ibar::Vector{Float64}
|
|
|
|
I = [
|
|
:Ixx :Ixy :Ixz
|
|
:Iyx :Iyy :Iyz
|
|
:Izx :Izy :Izz
|
|
]
|
|
|
|
(:Ix, :Iy, :Iz) = eigvals(I)
|
|
:Ibar = :Ix^2 + :Iy^2 + :Iz^2 |> sqrt
|
|
|
|
end
|
|
|
|
|
|
|
|
# Convert material to scalar
|
|
begin
|
|
kv = Dict(reverse.(enumerate(Set(df.material_name))))
|
|
mats = []
|
|
for material in df.material_name
|
|
push!(mats, kv[material])
|
|
end
|
|
df.material_index = mats
|
|
end
|
|
|
|
# Remove columns not needed for analysis
|
|
df = df[!, [:mass, :volume, :density, :area, :bb_volume, :Ibar]]
|
|
|
|
# Remove outliers
|
|
df = df[df.bb_volume.<1e6, :]
|
|
df = df[df.mass.<1000, :]
|
|
end
|
|
|
|
@df df cornerplot(cols(1:4), compact = true)
|
|
|
|
# plot(df.mass)
|
|
# histogram(df.mass)
|
|
scatter(df.mass, df.volume)
|
|
|
|
|
|
|
|
|
|
CSV.write("prepped.csv", df) |