Модели акустической диагностики
Author
function выборка(сегменты_норма, сегменты_ролик, сегменты_внутр, сегменты_внеш)
println("\nГенерация обучающей выборки:")
X_all = Vector{Float64}[]
y_all = Vector{Float64}[]
for i in 1:min(50, length(сегменты_норма))
push!(X_all, вычислить_признаки(сегменты_норма[i], частота_дискретизации))
push!(y_all, [0.0, 0.0, 0.0])
end
println(" ✅ Нормальные сигналы")
for (сегменты_деф, индекс) in [(сегменты_внутр, 1), (сегменты_внеш, 2), (сегменты_ролик, 3)]
for i in 1:min(50, length(сегменты_деф))
норм_сег = сегменты_норма[rand(1:end)]
деф_сег = сегменты_деф[i]
for ст in [0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 1.0]
цель = zeros(3)
цель[индекс] = ст * 100
смесь = норм_сег + ст * (деф_сег - норм_сег)
push!(X_all, вычислить_признаки(смесь, частота_дискретизации))
push!(y_all, цель)
end
end
end
println(" ✅ Одиночные дефекты")
for _ in 1:30000
вн_ст = rand()
вш_ст = rand()
рл_ст = rand()
r = rand()
if r < 0.15
вн_ст = 0.2 + rand() * 0.8
вш_ст = 0.2 + rand() * 0.8
рл_ст = 0.2 + rand() * 0.8
elseif r < 0.30
рл_ст = 0.5 + rand() * 0.5
вн_ст = rand() * 0.5
вш_ст = rand() * 0.5
elseif r < 0.45
рл_ст = rand() * 0.3
вн_ст = 0.3 + rand() * 0.7
вш_ст = rand() * 0.3
elseif r < 0.55
рл_ст = 0.0
вн_ст = rand()
вш_ст = rand()
elseif r < 0.65
рл_ст = rand()
вн_ст = 0.0
вш_ст = 0.0
end
норм_сег = сегменты_норма[rand(1:end)]
вн_сег = сегменты_внутр[rand(1:end)]
вш_сег = сегменты_внеш[rand(1:end)]
рл_сег = сегменты_ролик[rand(1:end)]
смесь = норм_сег +
вн_ст * (вн_сег - норм_сег) +
вш_ст * (вш_сег - норм_сег) +
рл_ст * (рл_сег - норм_сег)
push!(X_all, вычислить_признаки(смесь, частота_дискретизации))
push!(y_all, [вн_ст*100, вш_ст*100, рл_ст*100])
end
println(" ✅ Комбинированные дефекты")
X_матрица = reduce(vcat, [x' for x in X_all])
y_матрица = reduce(vcat, [y' for y in y_all])
return X_матрица, y_матрица
end