Julia Notes
Notes on using Julia and Pluto.
Additional Julia and Pluto information
- Julia Documentation
- Julia Cheat Sheet
- MATLAB–Python–Julia cheatsheet — Cheatsheets by QuantEcon documentation
- Plotting Docs
- Julia Blogs
- MIT Class Using Pluto
- A Guide to Building Reactive Notebooks for Scientific Computing With Julia and Pluto.jl | by Connor Burns | The Startup | Dec, 2020 | Medium
- An introduction to Pluto
- Pluto.jl Documentaation
- Reactive Data Analysis with Julia in Pluto Notebooks
Tutorials
- My New Workflow with Julia 1.0. A practical guide to how you can work… | by Erik Engheim | Medium
- Julia’s Most Awesome Features. Five of my favorite features in the… | by Emmett Boudreau | Towards Data Science
- Julia by Example
- Think Julia
- Julia Commands
- Frontmatter | Julia Programming for Operations Research | Softcover.io
- U Penn Julia
- Data Science with Julia
Using the Julia REPL
When I started using Python, I didn’t use the Python REPL much. I took a more conventional approach to running Python as a scripting utility using executable files. When I started using Julia, I found the REPL much more valuable than Python’s. It might be the same, however, I’ve found myself using Julia via the REPL far more than as a scripting language. A couple of pointers:
To find out where you are in the directories (tab completion works as well):
julia> pwd()
"/Users/lkoepsel"
julia> cd("Desktop/")
julia> pwd()
"/Users/lkoepsel/Desktop"
For symbols
With pi as an example: It can also be accessed via the unicode symbol (you can get it at the REPL or in a notebook via the TeX completion \pi followed by a tab)
Simple graphing using Julia
To make it easy to create simple plots, I created a plotting function which takes the title and a 3 column array as arguments. Using a three column array for the measurements, makes it easy to record frequency, Vi and Vo in a single row (see below). For quick and easy plotting, I open my text editor and create a simple file for data then copy and paste into the Julia REPL. The example has both the graphing function and an example data sections in one file.
using Plots
# graphing function
function db_graph(graph_title, measurements)
	samples = length(measurements[:,1]);
	GainDB = Array{Float64, 2}(undef, samples, 1);
	for i = 1:samples
		GainDB[i] = 20 * log10(Measurements[i,3]/Measurements[i,2])
	end
	plot(measurements[:,1], GainDB, 
		title = graph_title, 
		label = ["f" "GDB"],
		xlabel = "freq (Hz)",
		xscale=:log10,
		ylabel = "Gain dB",
		size = (623, 655),
		gridalpha = .25,
		background_color = "#FFFDF6",
		linewidth = 1)
	savefig("juliaplot")
end
# CR Low-Pass Filter
gtitle = "Low-Pass Filter (CR) Frequency Response (Log Scale)"
#Frequency   Vin  Vout
Measurements = [
	50 5.8 5.4;
	100 5.8 5.4;
	200 5.8 5.4;
	300 5.8 5.4;
	400 5.8 5.4;
	500 5.8 5.4;
	1000 5.8 5.4;
	2000 5.8 5.1;
	3000 5.8 4.9;
	4000 5.8 4.4;
	4600 5.8 4.2;
	5000 5.8 4.0;
	7500 5.9 3.1;
	10000 5.9 2.6;
	20000 5.9 1.1;
	40000 5.9 0.4
]
db_graph(gtitle, Measurements)
Using Julia and Pluto
I’ve found using Julia to plot data such as this, is incredibly easy. I’ve also found that using Pluto notebooks with Julia is a great way to document my work. To run the this program as a Julia notebook:
- Start Julia
- ‘import Pluto’ or if first time: ‘import Pkg; Pkg.add(“Pluto”)’
- ‘import Plots’ or if first time: ‘import Pkg; Pkg.add(“Plots”)’
- Pluto.run() This will result in browser window opening to a local web page.
- Using a programming editor (Sublime Text, Atom etc) copy and paste the content below into a file then save as test.jl.
- Go back to the browser window running Pluto and have it open the file test.jl.
- It will take about 15 seconds to initialize then you will have a Pluto notebook to display your data!
### A Pluto.jl notebook ###
# v0.14.5
using Markdown
using InteractiveUtils
# ╔═╡ f0f35acd-ef6e-4350-b43f-e79cd42d9ebb
### A Pluto.jl notebook ###
# v0.14.2
using Markdown
# ╔═╡ 79bc63c9-15ae-4e22-bccf-45ef4130365a
using InteractiveUtils
# ╔═╡ 73d9f718-2c7a-4f42-9607-31791c199094
using Plots
# ╔═╡ e7438b6f-82db-49a1-a36f-d91aa632e20c
md"## Inverting Amplifier DC Sweep
An example Pluto notebook showing the plotted data a DC sweep for an 
inverting amplifier."
# ╔═╡ eacf9337-fcd6-42b2-9ed9-01b5045a564a
#Vi   Vn  Vp Vo
Measurements = [
	0 2.6 4.8 7.9;
	1 2.9 4.8 7.9;
	2 3.5 4.8 7.9;
	3 4.2 4.8 7.9;
	3.5 4.5 4.8 7.9;
	3.9 4.8 4.8 7.6;
	4.5 4.8 4.8 6.1;
	5.0 4.8 4.8 4.6;
	5.5 4.8 4.8 3.5;
	6.0 4.8 4.8 2.1;
	6.6 4.8 4.8 0.7;
	7.0 5.1 4.8 0.7;
	8.0 5.8 4.8 0.7;
	9.0 6.5 4.8 0.7;
]
# ╔═╡ 605c3ffd-034a-487d-b00c-25e9ff3cb9da
plot(Measurements[:,1], Measurements, 
	title = "Inverting Amplifier DC Sweep", 
	label = ["Vi" "Vo" "Vn" "Vp"],
	xlabel = "Vv Volts",
	xlims = (-1.0, 10.0),
	xticks = 0:1.0:10,
	ylabel = "Volts",
	ylims = (-1.0, 10.0),
	yticks = 0:1.0:10,
	size = (623, 655),
	background_color = "#FFFDF6",
	gridalpha = .25,
	linewidth = 1)
# ╔═╡ Cell order:
# ╟─e7438b6f-82db-49a1-a36f-d91aa632e20c
# ╟─f0f35acd-ef6e-4350-b43f-e79cd42d9ebb
# ╟─79bc63c9-15ae-4e22-bccf-45ef4130365a
# ╟─73d9f718-2c7a-4f42-9607-31791c199094
# ╟─eacf9337-fcd6-42b2-9ed9-01b5045a564a
# ╟─605c3ffd-034a-487d-b00c-25e9ff3cb9da
To show the cells in order to make changes, click on the eye icon at the upper left-hand corner of each cell.
Comments powered by Talkyard.