Files
cmdla/11-08/interactiverec.jl
2023-11-15 11:23:16 +01:00

31 lines
828 B
Julia

using LinearAlgebra, Plots, Statistics
include("../11-03/readyalefaces_to_tensor.jl")
function interactiverec(F, iterstop::Union{Nothing, Integer}=nothing)
# given a 243x320 image F, displays it as sum of components
stdsize = (243, 320)
(X, _) = readyalefaces_to_tensor()
X = reshape(X, (prod(stdsize), Integer(prod(size(X)) / prod(stdsize))))
avg = mean(X, dims=2)
Xs = X .- avg
(U,S,V) = svd(X)
h = Plots.heatmap(reshape(avg, stdsize), yflip=true)
display(h)
if iterstop == nothing
upto = size(U, 2)
else
upto = min(size(U, 2), iterstop)
end
# no fancy slider, not enough time
for d 0:upto
h = heatmap(reshape(avg .+ U[:, 1:d] * U[:, 1:d]' * F, stdsize), yflip=true)
IJulia.clear_output(true)
display(h)
end
end