Skip to content

Commit 098c5b6

Browse files
committed
adding draft for 1d chapter
1 parent 78cc189 commit 098c5b6

21 files changed

+935
-75
lines changed

contents/convolutions/1d/1d.md

Lines changed: 131 additions & 41 deletions
Large diffs are not rendered by default.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
using DelimitedFiles
2+
using LinearAlgebra
3+
4+
function convolve_cyclic(signal1::Array{T, 1},
5+
signal2::Array{T, 1}) where {T <: Number}
6+
7+
# output size will be the size of sign
8+
output_size = max(length(signal1), length(signal2))
9+
10+
# convolutional output
11+
out = Array{Float64,1}(undef,output_size)
12+
sum = 0
13+
14+
for i = 1:output_size
15+
for j = 1:output_size
16+
if (mod1(i-j, output_size) <= length(signal2))
17+
sum += signal1[mod1(j, output_size)] * signal2[mod1(i-j, output_size)]
18+
end
19+
end
20+
21+
out[i] = sum
22+
sum = 0
23+
24+
end
25+
26+
return out
27+
end
28+
29+
function convolve_linear(signal1::Array{T, 1}, signal2::Array{T, 1},
30+
output_size) where {T <: Number}
31+
32+
# convolutional output
33+
out = Array{Float64,1}(undef, output_size)
34+
sum = 0
35+
36+
for i = 1:output_size
37+
for j = 1:i
38+
if j < length(signal1) && i-j+1 < length(signal2)
39+
sum += signal1[j] * signal2[i-j+1]
40+
end
41+
end
42+
43+
out[i] = sum
44+
sum = 0
45+
end
46+
47+
return out
48+
end
49+
50+
function main()
51+
52+
# Random distribution in x
53+
x = rand(100)
54+
55+
# Gaussian signals
56+
y = [exp(-((i-50)/100)^2/.01) for i = 1:100]
57+
58+
# Normalization is not strictly necessary, but good practice
59+
normalize!(x)
60+
normalize!(y)
61+
62+
# full convolution, output will be the size of x + y
63+
full_linear_output = convolve_linear(x, y, length(x) + length(y))
64+
65+
# simple boundaries
66+
simple_linear_output = convolve_linear(x, y, length(x))
67+
68+
# cyclic convolution
69+
cyclic_output = convolve_cyclic(x, y)
70+
71+
# outputting convolutions to different files for plotting in external code
72+
writedlm("full_linear.txt", full_linear_output)
73+
writedlm("simple_linear.txt", simple_linear_output)
74+
writedlm("cyclic.txt", cyclic_output)
75+
76+
end

contents/convolutions/code/julia/conv.jl

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using FFTW
2+
using DelimitedFiles
3+
4+
# using the convolutional theorem
5+
function convolve_fft(signal1::Array{T}, signal2::Array{T}) where {T <: Number}
6+
return ifft(fft(signal1).*fft(signal2))
7+
end
8+
9+
function main()
10+
11+
# Random distribution in x
12+
x = rand(100)
13+
14+
# Gaussian signals
15+
y = [exp(-((i-50)/100)^2/.01) for i = 1:100]
16+
17+
# Normalization is not strictly necessary, but good practice
18+
normalize!(x)
19+
normalize!(y)
20+
21+
# cyclic convolution via the convolutional theorem
22+
fft_output = convolve_fft(x, y)
23+
24+
# outputting convolutions to different files for plotting in external code
25+
writedlm("fft.txt", fft_output)
26+
27+
end
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
0.4408435864540151
2+
0.4437217084979709
3+
0.4463829085287805
4+
0.4484641481598513
5+
0.44958878118260875
6+
0.4494056926395456
7+
0.44762710451816157
8+
0.4440607845565543
9+
0.4386331804552787
10+
0.43140120603469484
11+
0.42255183507822913
12+
0.4123900954404017
13+
0.4013172965446679
14+
0.3898022106889161
15+
0.3783483761961699
16+
0.3674606921809096
17+
0.35761409790332904
18+
0.3492264954745682
19+
0.34263732813186953
20+
0.3380925052035532
21+
0.33573577253935677
22+
0.33560621638427207
23+
0.33764135896001796
24+
0.341685211668625
25+
0.34750062944705556
26+
0.3547852886605385
27+
0.3631905413125474
28+
0.3723422620848472
29+
0.3818626182936911
30+
0.3913915014442491
31+
0.40060622352775516
32+
0.4092380621598408
33+
0.41708438076096455
34+
0.4240153697966053
35+
0.4299749341851635
36+
0.434975836857266
37+
0.4390898173530576
38+
0.44243394074833525
39+
0.4451548032070238
40+
0.4474123570049034
41+
0.4493649924418109
42+
0.4511571510089431
43+
0.45291021818361404
44+
0.45471686603743766
45+
0.45663850685134766
46+
0.45870518067914795
47+
0.46091708739312465
48+
0.4632470805635747
49+
0.46564370080103007
50+
0.4680346347652781
51+
0.4703307306139478
52+
0.4724307962538069
53+
0.4742273218893556
54+
0.4756130340902976
55+
0.476487887637402
56+
0.4767658405904434
57+
0.47638063338993386
58+
0.4752898584967393
59+
0.4734768581219779
60+
0.47095036202611146
61+
0.46774217627716774
62+
0.46390355237405406
63+
0.4595010252896523
64+
0.4546124779106458
65+
0.4493239914317508
66+
0.443727743453014
67+
0.4379209048842979
68+
0.4320052427668103
69+
0.4260870081514314
70+
0.42027668428674225
71+
0.4146882607725809
72+
0.40943783179660675
73+
0.4046414375805665
74+
0.4004121428435345
75+
0.3968563694919325
76+
0.3940694975963568
77+
0.39213076214169346
78+
0.3910975460020635
79+
0.39099932601807086
80+
0.39183176031597394
81+
0.39355166665999125
82+
0.3960738613091498
83+
0.39927092285321275
84+
0.4029768447273311
85+
0.40699520559032776
86+
0.4111119284694404
87+
0.41511198050764037
88+
0.4187985944862291
89+
0.4220129093336833
90+
0.42465147206821874
91+
0.42667893705011406
92+
0.4281336098555002
93+
0.42912421473944373
94+
0.4298173440236292
95+
0.43041633372662375
96+
0.4311336123742688
97+
0.4321596804298729
98+
0.4336326044039958
99+
0.43561211245418774
100+
0.4380619960262478
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
0.443721708497971 - 8.049116928532384e-18im
2+
0.4463829085287809 + 1.7456323449026965e-18im
3+
0.4484641481598515 - 7.694801365407064e-19im
4+
0.44958878118260875 + 3.298092449777972e-18im
5+
0.44940569263954566 - 7.09876765651097e-18im
6+
0.44762710451816157 - 2.5982572407537674e-18im
7+
0.4440607845565543 + 7.613427583630925e-18im
8+
0.43863318045527877 + 1.205244911184615e-17im
9+
0.43140120603469506 + 1.8609008555406866e-18im
10+
0.4225518350782291 - 3.4528690641792415e-18im
11+
0.4123900954404019 - 3.932974358393234e-18im
12+
0.4013172965446681 + 2.088062190269455e-18im
13+
0.389802210688916 + 5.745577199054423e-19im
14+
0.3783483761961699 + 5.079851549022881e-18im
15+
0.3674606921809096 + 2.9356324158509087e-18im
16+
0.35761409790332904 + 1.9468108848907745e-19im
17+
0.34922649547456824 - 9.128291997096627e-18im
18+
0.3426373281318697 + 2.8637087934379366e-18im
19+
0.3380925052035533 - 4.6432111725393045e-18im
20+
0.3357357725393566 - 3.015628527362199e-18im
21+
0.33560621638427235 - 8.770184603884378e-18im
22+
0.3376413589600179 - 4.881483175804672e-18im
23+
0.34168521166862503 - 8.101831585803728e-18im
24+
0.34750062944705545 + 2.2379237989927263e-18im
25+
0.35478528866053866 - 2.125131732667273e-18im
26+
0.3631905413125474 - 8.6393259448299e-18im
27+
0.3723422620848473 - 1.7003090130856355e-17im
28+
0.3818626182936911 - 1.778389825723227e-17im
29+
0.3913915014442493 - 6.865860275668803e-18im
30+
0.4006062235277551 - 5.209481187652772e-18im
31+
0.4092380621598408 - 6.67345585073218e-18im
32+
0.41708438076096466 - 6.3590165466159035e-18im
33+
0.4240153697966056 - 2.3206652305547683e-19im
34+
0.4299749341851637 - 5.542875236720601e-18im
35+
0.4349758368572661 - 8.807466046776162e-18im
36+
0.4390898173530577 - 5.7698634951490074e-18im
37+
0.4424339407483353 - 5.9881492040940284e-18im
38+
0.44515480320702383 - 2.0231638066300825e-17im
39+
0.44741235700490345 + 8.08149169523635e-18im
40+
0.4493649924418109 - 1.0750295313883458e-17im
41+
0.4511571510089432 + 1.1910435524121764e-17im
42+
0.4529102181836141 + 4.434881228406121e-18im
43+
0.4547168660374378 + 6.372453159084233e-18im
44+
0.4566385068513477 - 3.968411584125457e-18im
45+
0.4587051806791482 + 1.1640266635409191e-18im
46+
0.46091708739312465 + 1.0607175072369985e-17im
47+
0.4632470805635746 + 7.580460602136281e-18im
48+
0.46564370080102996 + 1.272184606329534e-18im
49+
0.46803463476527823 + 5.48696139507378e-19im
50+
0.47033073061394787 - 5.749625092434811e-18im
51+
0.472430796253807 + 6.938893903907228e-18im
52+
0.4742273218893556 + 4.748137043476164e-19im
53+
0.47561303409029776 - 3.67141196195992e-18im
54+
0.476487887637402 - 7.738984548278598e-18im
55+
0.4767658405904436 - 1.1768200355254674e-19im
56+
0.4763806333899339 + 2.5982572407537674e-18im
57+
0.47528985849673944 + 1.2683566133703278e-18im
58+
0.4734768581219781 + 6.682564428703367e-18im
59+
0.47095036202611157 - 7.967127490979047e-18im
60+
0.4677421762771678 + 3.4528690641792415e-18im
61+
0.4639035523740542 - 2.3734310671281125e-18im
62+
0.4595010252896527 - 4.012197508479238e-18im
63+
0.45461247791064624 - 7.911413432165646e-18im
64+
0.44932399143175084 - 3.968411584125457e-18im
65+
0.44372774345301425 + 3.77431754606176e-18im
66+
0.4379209048842979 + 2.1600963354846274e-18im
67+
0.4320052427668102 + 4.3539636302926045e-18im
68+
0.4260870081514313 + 7.489808767970219e-18im
69+
0.4202766842867422 + 6.575902147509979e-18im
70+
0.41468826077258103 + 1.686363534467709e-17im
71+
0.40943783179660675 + 1.3828034902158382e-17im
72+
0.4046414375805663 + 7.308643955311136e-18im
73+
0.40041214284353455 + 3.991472845387203e-18im
74+
0.39685636949193254 + 1.073507614772728e-17im
75+
0.3940694975963568 + 1.4304315588635243e-17im
76+
0.3921307621416934 + 7.897797006778033e-18im
77+
0.3910975460020634 + 6.990571945895428e-18im
78+
0.39099932601807086 + 3.1882466137719955e-18im
79+
0.3918317603159742 + 6.77634625397593e-18im
80+
0.3935516666599913 + 1.2669589366189363e-17im
81+
0.39607386130914973 + 5.894518294641665e-18im
82+
0.3992709228532128 + 3.3909858923700977e-19im
83+
0.4029768447273311 + 6.562871312722316e-18im
84+
0.40699520559032776 + 2.2379237989927263e-18im
85+
0.4111119284694408 + 2.0984076357754065e-18im
86+
0.4151119805076403 - 3.418744179788218e-18im
87+
0.4187985944862291 - 3.335429628929314e-18im
88+
0.42201290933368335 + 1.7205500990592892e-18im
89+
0.4246514720682189 - 1.835696664265205e-18im
90+
0.4266789370501142 - 1.6748811711476777e-18im
91+
0.4281336098555002 - 8.772719816158749e-18im
92+
0.4291242147394436 - 1.1384347815742219e-18im
93+
0.4298173440236291 + 3.1848486024262835e-18im
94+
0.43041633372662347 - 2.3701847912634743e-18im
95+
0.4311336123742688 - 6.127652410357285e-18im
96+
0.43215968042987285 - 3.0318158833545994e-18im
97+
0.4336326044039958 + 7.648180585650756e-18im
98+
0.4356121124541877 + 2.746023902414602e-18im
99+
0.4380619960262478 - 2.5314414883179646e-18im
100+
0.44084358645401517 - 3.1333134183855336e-18im

0 commit comments

Comments
 (0)