Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
exploring the diagonality score of square matrices
### A Pluto.jl notebook ###
# v0.12.4
using Markdown
using InteractiveUtils
# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error).
macro bind(def, element)
quote
local el = $(esc(element))
global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : missing
el
end
end
# ╔═╡ 2dcd4186-1fd3-11eb-30e6-9bc12560044e
begin
using Pkg
for package in ["LinearAlgebra", "StatsBase", "Statistics", "Plots", "PlutoUI"]
package keys(Pkg.project().dependencies) && Pkg.add(package)
end
using LinearAlgebra, Statistics
using StatsBase
using Plots
using PlutoUI
end
# ╔═╡ fe42c2d0-1fd3-11eb-3fc6-ab63568843e1
md"""
We set the parameters for both our network (it's row and column dimension) and the rectangular distance function
- Richness of web = $(@bind Size NumberField(10:200))
- α = $(@bind α Slider(0.1:0.1:0.9))
- k = $(@bind k Slider(1:1:20))
Your choices:
$(Size, α, k)
"""
# ╔═╡ 10954948-22d2-11eb-16c5-497f13dfc359
md"""
Then we define a function distance however we want:
"""
# ╔═╡ ca3dd95c-1fd3-11eb-3935-131c0a463f48
diag_dist = (x,y) -> abs.(x .- y)
# ╔═╡ de5026de-1fd3-11eb-33b9-172e25478a8c
function diagonal_scores(Msize::T, α::F = 0.25, k::T = 3) where {T <: Int, F <: Number}
Mdists = Array{Float64}(undef, Msize, Msize)
for i in 1:Msize
Mdists[i,:] .= α .^ diag_dist(i,1:Msize)
end
Mdists[Mdists .< α^k] .= 0
return Mdists
end
# ╔═╡ c57f9ef0-1fd5-11eb-1314-d1fc09203626
heatmap(diagonal_scores(Size, α, k))
# ╔═╡ Cell order:
# ╟─fe42c2d0-1fd3-11eb-3fc6-ab63568843e1
# ╟─10954948-22d2-11eb-16c5-497f13dfc359
# ╠═ca3dd95c-1fd3-11eb-3935-131c0a463f48
# ╠═c57f9ef0-1fd5-11eb-1314-d1fc09203626
# ╠═de5026de-1fd3-11eb-33b9-172e25478a8c
# ╠═2dcd4186-1fd3-11eb-30e6-9bc12560044e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.