From cf3ae34be801a2a97fa25fd5fe7a394bbdb9226e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 18 Oct 2023 15:09:00 +0000 Subject: [PATCH] markdown source builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auto-generated via {sandpaper} Source : c9f68ad796ed72ab8a3611d0292038f5b09712e7 Branch : main Author : Francisco Herrerías-Azcué <36694679+fherreazcue@users.noreply.github.com> Time : 2023-10-18 15:07:34 +0000 Message : Merge pull request #28 from UoMResearchIT/tiledlayout Tiledlayout --- 04-plotting.md | 51 ++++++++++++++++++++++--------- 05-scripts.md | 39 +++++++++++------------ 06-func.md | 19 ++++++------ 07-loops.md | 16 +++++----- 08-cond.md | 16 +++++----- fig/max-min-tiledplot-titles.png | Bin 0 -> 18369 bytes fig/max-min-tiledplot.png | Bin 0 -> 17042 bytes md5sum.txt | 12 ++++---- reference.md | 15 +++------ 9 files changed, 89 insertions(+), 79 deletions(-) create mode 100644 fig/max-min-tiledplot-titles.png create mode 100644 fig/max-min-tiledplot.png diff --git a/04-plotting.md b/04-plotting.md index 32cbe3c5..d66b50cc 100644 --- a/04-plotting.md +++ b/04-plotting.md @@ -128,28 +128,51 @@ Then, we can use the instruction `hold on` to add a plot for patient_5. Remember to tell matlab you are done by adding `hold off` when you are done! -## Subplots +## Multiple plots in a figure -It is often convenient to combine multiple plots into one figure. -The `subplot(m,n,p)`command allows us to do just that. -The first two parameter define a grid of `m` rows and `n` columns, -in which our plots will be placed. -The third parameter indicates the position on the grid that we want to use for the "next" plot command. +It is often convenient to show different plots side by side. +The [`tiledlayout(m,n)`](https://mathworks.com/help/matlab/ref/tiledlayout.html) command allows us to do just that. +The first two parameter define a grid of `m` rows and `n` columns in which our plots will be placed. +To be able to plot something on each of the tiles, we use the [`nexttile`](https://mathworks.com/help/releases/R2019b/matlab/ref/nexttile.html) command. For example, we can show the average daily min and max plots together with: ```matlab ->> subplot(1, 2, 1) +>> tiledlayout(1, 2) +>> nexttile >> plot(per_day_max) ->> ylabel('max') ->> xlabel('day') +>> title('Max') +>> xlabel('Day of trial') +>> ylabel('Inflamation') +>> nexttile +>> plot(per_day_min) +>> title('Min') +>> xlabel('Day of trial') +>> ylabel('Inflamation') +``` +![](fig/max-min-tiledplot.png){alt='Max Min tiledplot'} ->> subplot(1, 2, 2) +We can also specify titles and labels for the whole tiled layout if we assign the tiled layout to a variable +and pass it as a first argument to `title`, `xlabel` or `ylabel`, for example: +```matlab +>> tlo=tiledlayout(1, 2) +>> title(tlo,'Per day data') +>> xlabel(tlo,'Day of trial') +>> ylabel(tlo,'Inflamation') +>> nexttile +>> plot(per_day_max) +>> title('Max') +>> nexttile >> plot(per_day_min) ->> ylabel('min') ->> xlabel('day') +>> title('Min') ``` -![](fig/max-min-subplot.png){alt='Max Min subplot'} +![](fig/max-min-tiledplot-titles.png){alt='Max Min tiledplot with shared labels'} + +::::::::::::::::::::::::::::::::::::::::: callout +**Note:** The [`subplot`](https://mathworks.com/help/matlab/ref/subplot.html) +command was deprecated in favour of `tiledlayout` in 2019. + +:::::::::::::::::::::::::::::::::::::::::::::::::: ## Heatmaps @@ -211,6 +234,6 @@ subjects of the next two lessons. - "Document your plots with `title('My title')`, `xlabel('My horizontal label')` and `ylabel('My vertical label')`." - "Use `hold on` and `hold off` to plot multiple lines at the same time." - "Use `legend` and add `,'DisplayName','legend name here'` inside the plot function to add a legend." -- "Use `subplot(m,n,p)` to create a grid of `m` x `n` plots, and choose a position `p` for a plot." +- "Use `tiledlayout(m,n)` to create a grid of `m` x `n` plots, and use `nexttile` to change the position of the next plot." :::::::::::::::::::::::::::::::::::::::::::::::::: diff --git a/05-scripts.md b/05-scripts.md index c81ab514..aea4f848 100644 --- a/05-scripts.md +++ b/05-scripts.md @@ -275,26 +275,25 @@ patient_data = readmatrix('data/inflammation-01.csv'); figure +% Define tiled layout and labels +tlo = tiledlayout(1,3); +xlabel(tlo,'Day of trial') +ylabel(tlo,'Inflammation') + % Plot average inflammation per day -subplot(1, 3, 1) +nexttile plot(mean(patient_data, 1)) -title('Daily average inflammation') -xlabel('Day of trial') -ylabel('Inflammation') +title('Average') % Plot max inflammation per day -subplot(1, 3, 2) +nexttile plot(max(patient_data, [], 1)) title('Max') -ylabel('Inflammation') -xlabel('Day of trial') % Plot min inflammation per day -subplot(1, 3, 3) +nexttile plot(min(patient_data, [], 1)) title('Min') -ylabel('Inflammation') -xlabel('Day of trial') ``` The script now allows us to create all 3 plots with a single command: `plot_daily_average`. @@ -354,27 +353,25 @@ patient_data = readmatrix('data/inflammation-01.csv'); figure('visible', 'off') +% Define tiled layout and labels +tlo = tiledlayout(1,3); +xlabel(tlo,'Day of trial') +ylabel(tlo,'Inflammation') + % Plot average inflammation per day -subplot(1, 3, 1) +nexttile plot(mean(patient_data, 1)) -title('Daily average inflammation') -xlabel('Day of trial') -ylabel('Inflammation') +title('Average') % Plot max inflammation per day -subplot(1, 3, 2) +nexttile plot(max(patient_data, [], 1)) title('Max') -ylabel('Inflammation') -xlabel('Day of trial') % Plot min inflammation per day -subplot(1, 3, 3) +nexttile plot(min(patient_data, [], 1)) title('Min') -ylabel('Inflammation') -xlabel('Day of trial') - % Save plot in 'results' folder as png image: saveas(gcf,'results/daily_average_01.png') diff --git a/06-func.md b/06-func.md index 5c01a692..a835f10a 100644 --- a/06-func.md +++ b/06-func.md @@ -351,26 +351,25 @@ function plot_daily_average(data_file,plot_name) figure('visible', 'off') + % Define tiled layout and labels + tlo = tiledlayout(1,3); + xlabel(tlo,'Day of trial') + ylabel(tlo,'Inflammation') + % Plot average inflammation per day - subplot(1, 3, 1) + nexttile plot(mean(patient_data, 1)) - title('Daily average inflammation') - xlabel('Day of trial') - ylabel('Inflammation') + title('Average') % Plot max inflammation per day - subplot(1, 3, 2) + nexttile plot(max(patient_data, [], 1)) title('Max') - ylabel('Inflammation') - xlabel('Day of trial') % Plot min inflammation per day - subplot(1, 3, 3) + nexttile plot(min(patient_data, [], 1)) title('Min') - ylabel('Inflammation') - xlabel('Day of trial') % Save plot in 'results' folder as png image: saveas(gcf,plot_name) diff --git a/07-loops.md b/07-loops.md index 74ee6d78..3ed51d01 100644 --- a/07-loops.md +++ b/07-loops.md @@ -594,23 +594,21 @@ for i = 1:length(files) % Create figures figure('visible', 'off') - subplot(2, 2, 1) + tlo = tiledlayout(1,3); + xlabel(tlo,'Day of trial') + ylabel(tlo,'Inflammation') + + nexttile plot(mean(patient_data, 1)) title('Average') - ylabel('Inflammation') - xlabel('Day') - subplot(2, 2, 2) + nexttile plot(max(patient_data, [], 1)) title('Max') - ylabel('Inflammation') - xlabel('Day') - subplot(2, 2, 3) + nexttile plot(min(patient_data, [], 1)) title('Min') - ylabel('Inflammation') - xlabel('Day') print(img_name, '-dpng') close() diff --git a/08-cond.md b/08-cond.md index c210cc85..256ed2fc 100644 --- a/08-cond.md +++ b/08-cond.md @@ -387,23 +387,21 @@ for i = 1:length(files) figure('visible', 'on') end - subplot(2, 2, 1) + tlo = tiledlayout(1,3); + xlabel(tlo,'Day of trial') + ylabel(tlo,'Inflammation') + + nexttile plot(mean(patient_data, 1)) title('Average') - ylabel('Inflammation') - xlabel('Day') - subplot(2, 2, 2) + nexttile plot(max(patient_data, [], 1)) title('Max') - ylabel('Inflammation') - xlabel('Day') - subplot(2, 2, 3) + nexttile plot(min(patient_data, [], 1)) title('Min') - ylabel('Inflammation') - xlabel('Day') if plot_switch == 1 print(img_name, '-dpng') diff --git a/fig/max-min-tiledplot-titles.png b/fig/max-min-tiledplot-titles.png new file mode 100644 index 0000000000000000000000000000000000000000..662a4b396c4c0ab8870c58c063f8aacb796946af GIT binary patch literal 18369 zcma*P2|QJ68#cZSNl|E^3`sPa3Yn*rP|_sHtP+_?lyRRjH5j5v#!!?DC6T#VA!N)D znPtp8`>wT}_nh;--}!&P|N5Pd+I#J1ul20wzVGY4uIq8_h?d%l<($h2f>@!UzV8@8 z&>Is3%`Zk;ykh9*j2DPy_UflD5X8#&X&uhrM4rFb z(ahB8yq)bv?ejKf#4c&!!)Kg?#deB`Z``$87XR&(`F>WMhaff*8vFKWUyA5!ax+*n zk+<+Wm1*^haQ_GP8qz=CbA`}y?h&#)@^X8?iu217ZDJp8d0uf{FE(~;AKmt!@t5Bl zyxd|mbS%Si$9+rd6+yl`__V9&%Xh^3ALTk4=WVZT^2Y35Gw(>TZ{ZcDzOQ{9W3yJy z&d%fSi01DT?&r?AWxRaJhzlm{-8eIt$iEPN%Ch7P5q#=uGPHS@h>g^gYy3&MuzBdc}#Jd{=DoB*s09Bd%XO$$KM4)XQ-l`<1UVJUnb^ zWz|3T*vH3*jg1ZeANS;6+ssC^tdXx4A&3^`KwhPMlQ*=750@F`xvme`ANskyr)R36 zdEU9^*{N~2FHURt}Sqqjm%@BBNA`?U?XCZ*9z*~ zzH=v1_TsPTg;{e8i|z)y0*}cd(~KL(0xB$?rKXq@x*Q{HYW&Qod_T!KH zzNed4B_16vIe1Ux&h6U~@|VRVBt~zkZFoKL!>zQ~IN$yCix-Z4b_12Y%em8_F!ja-RU~oJzi#%?bK8E{LI2snb$z>$k*Ut))D>i=1rS6#kvgs z=nUH*_uClPT=)ka4!P-5*%N_x?%YW@9L=t>hMoP#<*rB-|FpE7Q)&b8>I5Zp6M2>5 zmxfIE_FcG;K5JimS2(p`-nBX3!*3cq7-*Wm6nKLtHp%Y@7TWm*5Ij3Tv16$NzP!t+i?4575^1nlJcYF zdpn(j1vKylc@Ay+Jv}{p@0Ep14HnGz7I?FA2KeNae2tXj^_(=l?4#meUS4iIKYTBl zgAvE_(;GsDLY$*tx8H>69Y{NT9Mh8M;^1rrlh2do!I~U`Ey+T z_wV0-{`{%p-`8g?Dw;Yud1)puPPOUMGNSMe8QwN|GXps|)8^b4smXlTG0SkR3S9rv zmE3i%fjUY37Nx@n2C~`$Ys4Gm8()|eTczfWk3=uHe~plFX}Wliwe_&qbmi*{T_sEw z5)TkX&-60~9^Etg*5j1p+x|C0Qwqd<@`9=C!R$`}zFS2CF#{EI8ZrsL!EWQ%|LLrh3gKWoEh<8aCnC z+6=l_$1P4FvQD9%(sV_T;#7Mmmz3=#H#Zlz&1XK|lyRR-tFRay8Vc@e@9cbK6!Yqp z&cMeaOH0e;%a_+jyd=Zb^sTpHj&sw+T0^DDH!N62eG`Gh)yK!i#*!P3*Q{Aa*vmHF zp&?9?r$)NC0zTqto^-6+xsKV7h4*VoiIA{xhUeyjsZzTXqr3+X9_ZoXs;XXERzHo6 zjjdr~=2e_U{^|Pp&hOBc<7Q?Z&rYSci*j1NbGP%=8u(-q>cTBy5zKnJBm*+s_m}4@6QVs`yUQP9dB);_ z`jVAqD{eb_&s7G6v8v;%w`ytUuoIMnKTBlEV#9jHt%h2u$dPfV1TR*q{r}H$_S+^6 z=LQb6yt#@jV`OB6sfn-8AX0ArU~5r6SNfo1E;-%2>_OMP+qds`B|LuoRF@AI^Ne@A z*|j%0AJqga2tq&I zvo7fR^;IgP15Nq?Vl+}Jvb5Y)^%+*;;^KoS3%`E->Tk%*G%h?V#v|*Ln4PVcTI=TO zIzHI!)n0T<#b4a~tNT>PJr)0>ar>J*CYn_IFLWXCxM(r%I{n_?b8dS34A9K8Z&PUt zmC^G~@BP_uL&NXdJ_Q-)IF}X|TcJ{Y3gk&jOzf^rZ9eQdy!t~DgTV^(8k)dvHKpmJ z9v*X#4~2WPCY?-`T*v(T_ivlKm$AHJQx*JkVSaF7RRB@AtI4^}tK-he(`U}CUcI_OUQ>`EV6(tFI?NaOeYp2rBVFk<$`6=Bl zdtlWcAoXKsm}W;u2VOjS^eF%So6;!oSg0<1?~!giS_=OlOT$Qsct%Esia(y)%*;&E zP$=f#q%_U$DAKIDdJ!to$D8ZR&sBUNEIGD1;T-7L7A1JuJVpUPRaz7%X(en>1 zm+}4v7p!)rxt_yqt*tA06@|Qa8h^+^=7@>eD8nhN_tHOdGa;STuyUql*dSC>F>5r=H}*u zKl0oFX_7g}OY&jjXzvM9oc5P%qM=;vb+5}Tat~!7UQyR&lS}hlc=PPXPoK;O8eelB zYVbNSQt<|9?{Juy879owW9-h<_w4L!ED8>Wt9-Ju*#I+J4@cb|EC-;}jbxc2ZogUB z(317TbEY3_`_aLBue>aag87Euw|=-08XEfP=K2dg-!_k=r=Kf*`s`UB7G;WIj!uff zcJI10(|1t{Znw8{5#VgBg}I-+}dirkCmPmU)Hw(U2@%qk-1e3-fb7e*74AidOW{Ni~WL z4&LZ}sW&+jLAb-~bpvAmUP#DriFnziOP3N)2@-{hs4rsT;?*g%M7bFTDB%w9X2lvT zEiD}$eRFjw@P_c=ARf6_Po6wUOjP%oCW!Icsw!<=-Alvm8W~J9gwu*Vez#rgnDsMl z4{2(yQRyC=?(FPb%Iki_^FUlhw^KGMX`I2Y%ETcu`uq2-!;eDkn7g~W%sq8N1mY^{=1;tN^XB>qMh@rBYrFT(E9&>}XtBpL ztP*)6j43Kgs9w+P%VF&9fR#2g-fvZ~j!x0~3Jov&t`--ro+6QB$B(BP=Da#zxn=6h zCK8DvFoAT2X#)ZR^pa~@t){GOMWvE4?Y(ur**c5LF zeypuM85JzBT}DP`*RG?fwffv6Q~EYRUZyu>d54;uZ~Vq-46{)!+58RqxtD$e`KP~l zfhIy;EhL^op%mW}EoMndN*Z&WL#?PzVoQ03uNertfqt>KMwrh#Ve6+&G=(z3cz7te zTeTu|3q135l6J3SX1Ka1Dmpkg4b}GX<1Kvek?>I&WmYt~a<6}pI8yoz7wRf3AEUb~ z@M-~j;#c>|$ol&F6G=KNcx1H|uM#ya#&w${Z>UaC1!y~M8Tj0sF zXPS(=+{XK^U%!5fUu}G#siC1kPEhb*>5iY-7Th#X^yo zlOGsa>R8DxuyD#=d_&;|q^t|+o`XeiR1tb#|86Z?sGQ3h}o*HCW&_G zZg{wyMR^S3u%^eNDf=P-f0Vd+U}ok7;PS}u@GF~!$EPC+%D|J96r-0GM^BunMtKo_ z9H-zmj&@E!Uf#e{+P*~@cPY*E?N-2}gaq?*=h)Y*0oqF#n+2jEQAPdB^VDYM6R%h9 z!-snkDxYX?iMS?a$WyOIxr3%s*6v4c^W1<-q|oZMYwv`GJ<-*m+`PrzErT4mOCv<+ zYr(?&3>PP7d(X#@`wt&JOm;R2=`MpteESRx47zRr+pcA2kCMN9>{cv6NbVg}=S$5U z{<1Jzw&0G&C`2Gq+M#u<)_7uQ=t#~sX`0PJw2tL$-3Esam0n*f_`_>qu0bU1-aVI| zZ;xKQ5cBd{c=qfW4IRU_BO8dAE_Jo#Q@@f@Q;Z8lyt8^!ayYrTM2+(sD?*TmRDeg9 zcU-4y$!_OcB8fDz>&!=HFE6jFZ^}QP-oAbN@cD}jSATxsFpiLO8OZmT5fb@KVJY-o zH)M0gDV{#`^X-t3kh^!s+d~g8=Q~$&e;0~ScXv11zHz4XaPRez+@lef)lE~s?^O%r z-Yz1drKu^jZJULyExQW0g6qq}(Taf9Hg_eOpY92XMSsu2cDo!-BD$1fq_glwtefA=ms z-+L^Qi?W6@PF3~jps@_2`fQMob{aL@|9n=AGhoPrRgBxbTThB*t$tpP#V#EO#;^3Hj&< zXAh&jH1{|v|B)pXJll{<32;eH^fBVxSCQWat~$|6(^FI6Q;d|Dtyk(isCdr?+w9kYgp z22cpuR~e-?=eUUWFp4PK^0G})#?j()2J9&e~bMHvw6*TT~}9E4UNwc zG8gJgj0-&Hu%2I}r$=Az4C64mWQyka>FuR!pWD$je);z3U{`5)g7aE?tB3_=CpxSc z0gV^Z3s+eb)ejtanvx?*?w%L03Q`!rTyF_oSje+;z#;#b?kvi-=h{reF(;>!<}F;*~2`>P1T^gHO55cfM5H9LT<4@^Nuo z3<~te6|jGV`*k?I)E;Z1(a+CM4Fo7Ef)6Y3u!=ug_FgC18z`JD7AP?1#KLawk8{sG zqL`pEz_D3C;H;VMS%`oF0Jr(qi1oWIwZT;O{`&R9eWbLoQ2B(Qj|w9* z7U|d6dyNx*R~c8X?38fgXtV7pYVtJN`gW+*Vlp60Kx#c*Q~M_;BW6*BH#~VXa;Fy% zkuCeMgsrcM`Ypl75uJ5R)aBlV2FBzJb-9ydsq>yT5_9w*I_ox&V4&qDkVpSwpzcSY zI`5fbq~th6?>%#K$R2T4__5J^5Fcqdjp6%zuHL|>U*psIi*b`nzUohnn@u?R95p#e z12mX$?IWYjTn%4uj3iAE5y(7gG{_SzosBkXg||ercA)C!oFTDF1Z@vv_jVUKBl4S` zV$9phB>Iq6{Ki(!PYrYfgf>M5$pWeb#>@_)W(q+>@R60&`vCv0EVXzayKo=Zk+cfO zvbuhYeY}t*fMIwBUh^Z3*xUSDc+V_3aPVMRq#VcU)os1KN$!^^{J|_zt3-b~1@g!_ zqrnwCnSynBlUK$|GTMFAs;Q(qA6B9)XW``#V7UsI5z2=9DMKg`9%c2xe zDVMRZ+~ZxzEgcN{=Ia%#An^EMVPPP_E_9ZhU+7y5^@*J3IjyO;grCX`<5vq*oX(z@ zn3&B6@9Ju*srX~~k`m2Fzi5d%=31Wb_XRX~6f*uq91&MK3dbikS(F(o%FA22x@s%Z z4;?xL#Q`0w_6q?*xvWC&nEGGf!UH`KHz25V9Ox7D&CMV=(6!nX%sH#wK=)yo?F8^$ z(%h^hC}>qkp*g_5jOdnhRa^eKsObK#Grp*?HusoUl7~)=fD>JG=TE0A1&^HhL}HQB z-ubaijE&_%13_0VED{bUv&~P#h98!-he*XBK=2 zyc{T?@%i)TYuB#1<{2ebzcS{c%eS)ca=2;Q_;6=S1AUMBvJD$HJbd`DA=8dS?Dd%7Di5?r9ul^ykGc}EcC=vzyljH(si%S`P|&AXTKTo9_a5O40N-B?0E=+ z6xM9)A9%OL0J;!s{w6+^tt0}uSC9!K21$WDm6YU4EVyO1P`{8&9Rx+B?Y^EB_vb6c z7)B*6^n!Jt6Rukfw}4|KU<<26U<3_y6yncO(Dl|Ykxt=P3q(qgkdRo1I-|+L5;QyO zzBcJfX@#^SyW@<%F*`w|@qW8y242zVwd13ppfZJt#<&XiTGQU@q(F)_S7Z*NnU`JoKPX zut)qrMnYZw@b2B2*~#Bjes~jD^Q?iQ7bK|>t(eCps(J8W_-?BjB)D&tmHK7T5Cp+! z#l^-7XkgXU=ecDD>{voblZsSTP0fB)Rq*h0^AiPLW7Q|CQy5=;y7gc@%VVVhT^@fi zf-Go*0_VDQb=4e?|GR}kNp*8`E3U+PK9%QsQAOp7jisu~bGr-sUk0^IvJ2^&M6F!D zT<^u%&rsN&omL=--dlk}Gc8wH-oAT>9-MpCs&9`t4uqU_$d}<<#y2}V`yf2rO`De} zT#splRo%5c>b94R7QA%#srW#P@` z3dJjJa-Or7fagF_iyGxlLZC}BT)8+5gpO%|d{56ZNMQCqRS=hGO#<0bjM-JRwY5iw z0tjVyxp-yMx#=-3MfXXtjyG=H2;x;j!mxGN#o%sczw2g5-}4L^?sJp`mVz_0FNoV@6u~EO<|q$;YSFY9BK(iE;1vRpvE60RaI3T_O7rnfU=8aT6BxQT6h^@via+?bj{RS7G6aI#^22gbIrI!hN}-_ zV>ijlB8OLlLbcc`T2flNySaF`kdP+hQ5~Hv8ppJ>0$Fi}o+pSvw5T)lKsmeP6B3MH zJE|sCOF~KpvtRmPcko$i~Zg8%UX_&DriR=yV;D0J|^f#LD-`PzbcR2;J?8L#+nBFTA+3YOg7G>5D!Pi{QuE?5SYAk@kRqF**MQyy<6I@OqG?}S(FunGP-W84 z5t!i-kzzBGXl~l&k#n!joDluFVCErTS>E#nOhGH5?kv$j8jEcSh6`yr9y|_p+))CS<5- zM#{~HgtAm{U_GazdlqZ!NSV^TttG2gtwJvXUMBvSVK=Aqb<9)uj&Btc^z`)B4X+L{ zK1YEI6E_d>AfJY zcDRiyfNm*qFGLL#FCMt#YO+~zHEuD+Eh{e53}gu2{aRMW3xVk!i<0|j zcLhYhlZ?-;YDF>*(wVHyC(D@A+Mc2p!2i&MmeSJ~v4DoKwzk&N(mHl5B-`iV1uB*; zx51>Lo!a2q&Bynijzzw_s!E`Y8v>w*hsU8q0Z$*H{q5&3v~fsdR-VA(uk3MJu>x8U zGEHqw%@^?wnJu9jrC-W-jr))j0fxj3Do1nn#a?e#r0ZM+;_TE23=aTF0vf|(V<&QC zi5jwvC!VRvzUZ^_nrXniih4s=KXvL@t0ne>!SoI3T|ra>~#h?k2zl5~7Tu9f8z zYmS^cMG{o=vzH^aICyz^+1N}So`cZY1~=5&J=EeB;X1^M`GeO4e(MS&VxT}9G-*d zBUSfwJCBi4spYkc&=ev6`2PL-R<$V^VW|}sq-y+`sj{*X>Lb(gIEZ_V8QW@%U9i{fQF;c{E(S!Z{!iOh%D$SAl5XJ2GZeG6*(}Z@KggeX35~688 zX8V)U{BOuwxKuId0|AejcqB#$Ra$SXuNP3BJ-w4G=%k4r?cNNN06Cp@^|fJ>G@ltNUX4Ml5Gm$lCpl` zDD|n!koY40A1R~H;t$kD(!q1*&eY6|xtZCDbvu)W!j zG7$cdEG!&;wzR-t18AN6gNIV0(4aOPOxr*zl|ey4?k}9&{@+Ytj+m|_2+}1?>~)ql z!#&PO;GHsmsugc>+kM+<>JEI!tP**DG5+ymqa0@&6apSYIm`KP_IQw?q3DW|YI}u6 zKBqEtud;n!DTAUK<8qc%#(@QZei-1#n9k-0yeDVt48)zvPOmbfdiHZ(p)Ecc; znI#oc52rMMwa9{UDy*M6W_b0@#(W!YumRSMS-)Y%02I^1MPIrko$!#3a^VynG!)%e zwoOl~E%k$jz?>olL@0V>=jt9kT7izpn-xN7l1?(GtdoVBR3E%9oQPm}iH>P%mH;5+ zIK7kQ+h=Q=GIcu_UMIeN2p$0qXzwYBiR)w>&qBDw0Zqo*_+>c0a^Rtdw{7v~&ul92 zIux^P*4QB^xLO6#T2)&cUJ2xX1LSW?wIzrKu!ld~1{E@vGf-2NSf0@WI!~9~KvsxG z9Q9@Q1g`N25YiceUpu|p0;Kema+T zCj1ZJnztD|g;oJdOC5V(0MQgc{$E4ggsaMBjDsULp91WIU#wJU!=; zL`dIMoLW#mj6N#<@Vh)Qd@$4Mzp?L+L9+gz!}Tp^V!{I8VP)N@RMq1IHxP6)FnPb& z88Bd>761g`gaV4LivQ9Lmtvkg(TI|P_&Pm3{on!TiGvr8O9YxIQ5l$CGZ)tUH`Af zl>z*9TBdR2@aex|K2=5o;f`1$mgw-RQlzMUYf}pHC~UZRO14;(2n$fBk#Lz z2`U^PAK&mkO-)S=jceH-vc$>0$||jZD8CSac~`N2ii^O^>LJ7GHLtHJge>ynTE=SK9B05slbuDz@MaSut)y7+n3k zX*(grK$LGD{h#LUbm-dr;V*&Wkw)&8-;7Q}grnePvwNQE^5)n); zW=F2*B#li>EP%%9@BP=4x-NUxLXoVx*!G@?6A^qHQ&NW%b3N0SPRrC(T zGu6RvH`x1Zb4n1x4FS7Tb)SzL*^hRJo4^cNl2--&pwSo(`Y#jTdFr}MMcH% zUX2i7f9+&ON=C%Awj~*OZk}UF#*r}Ygf2mM0hdSi^G<(%e>CRBem>Yq@-fQGxH;)sCe_uBaJs2wF{~7!C0bnnCTf-g z$)2PVOdNava=#r}6~Ldhfg1X&sACWD1iHT#|HigPrHwJ=dgL~O5P_(LY7uzmER~x+ zV3NRCyPpL3wSRlUj}RD!jylYLSRhE_S2Z!IVGL^7EyquXBOjW)NLk~aC_V*?`1vYQq zEhVJ{BPhJffDkE>fkfe0{69siP^XuGMM!NBHi}u`22;nJneUN3Rx~}n=qZs}g zpcx&J?|*r2a%$*^G#SXe(AXf*Ly(m>`*IrycE6gMU0vFq{@6aBI3dc-@Y>huz^@>! z(cfV1puylyNd8|kl)2fyf5=ddznTOB_zNrU`>h#&aQ*k# z*qyB)%+TR!YF71<9LijXmO_hukRe?RGjM84iR|Y8R-Oto92|MzbK2}ZG}^8Uq_yHnWf9OjYH)u^<8d+=Z!1F7jo2DGKl8FgG@y;EM5N!|^#>Ps3 zMN?1yMTLHPf|=-!T{MkR2I-eBmFqd*?LJQ@+q!Xq=c`<9){cp(0O=xt35BndOZybx z-B7SU$3xU{oP=W2BBZXCMq@7j41kJw3BHxc0n3ay*vRuRfh2-u-zoxmgDj@3A{8Do zoV(dpF30JGW*~!=`GB4Zdv-eIaD8K2RDKA9Wng-5zuScb!HwM%AX*TdgorP~mXv-7 z%DYWG59O#VbKw{{#(B_-vzu!(N~J zvm-D0-g-I1MXftijXL-Mg&dqZ0sI?zeo8K0BdM1c@{xlpUnCVO=l>F z@%{vyWek(L+I7ggf4f^Eq4OOHX;f?t_D=t&AoaT8G5>rBjr8`f&yH99B^TG6Ze}2w zf}^60jvW&-|H=)q$K+tdLf;m3wJ+auTvAy#!MD+`LP(2@=Zh$Z2xJ@t%dy(LW;=Sd zb04m+g()My-beQasmBqGD|*!V)~{bLey(I_Vgf{4r09BXZXs`|QAgrMh?SpSo#g$z zcR6?HRp!Z;f;7F~+ZKFinlYQV?ZKg;{Q%1VIFGFveD5K(&y4o0UbCjk)3n+pl+ZSR zM>)IUSe=#Z#!u^qWKI!jz6$flt=DD#=|%zB4&w=gHYPqjJw0z$q`%r8C-%x){4Fm@ zTXYs5GR*(lIxM5;h<*nbyDqausrNC(U2^xtc?g$#WL5OtH_}m}ib_ij(@g%5=V52x z;=N5!kbff$xpKE33K94uQ^8H)kMn4c$E8Pf7jsQ=(N%poGH3z!g*(eaG`T+Xu?Fl7 z++~D-i#PH7l%oQ~makZOE#>55k6HJPZC+_{EnOhbbs}2@(#fELGK>+(GuK$~zS$rx z!5~e${}Ndz-N>a!-FYOg}ST zOM10d3e4-^K5eh#{VW-0dP-YM(LK_5K?ya5B1<~P8reR<3`tN(yI6}md95Za@%)*K zA(93?hR~uqCM4Bl9Yv|PMIp^-g{Q~@UHA%vdsDx>9JUccdRM(#_lCfGG=aXq8~0%F zC2}g{*U`W= zV&H4gZ>XuNYJ`wz&27SVb93ZjEwnh`8A7)l8lIQ{e}{Db@vgAGkjN`kyNkUw9^=V& z`BVFU%F=)bf%gh4XJUN(ZUUBHI;b>&%!>zUTf{7Qx3?u{{&*mJ(bCcJ1#2r>Ms$+s zC(PyLk`j;L1L8(VHaK zcrH)$T|#Or%l7Wqq)W;>Iy#zELHEZ!p9}dn1}CNR6`dj>^$GTgh*JrPi=a07RQku( z%fDX0H#UBo$bQr6Vy5kW@J@)qH31D3e{`WE5%9Pr>oj<37#kap9Q>QUNjaWuykhBB z;#1YTRQW|M_sgk8dub-PlFFXjm(|9-2ou2&0W@Kd9Zq@b8X6|o_Cf?|oJ#t$VxF~Q zBEJ6d_Q^Fn?a0~Z% zMf6^F0~(>~!(X#$Q!AkL@zk?~a&2(nnzu4BFnyQy_JKsZakL9AdW$*O^{*Z{K~JRZ z`ugm`A$LhKzO%_lQ+Kwh5yW`4o^=}by@=*`3XPr z6W8d17y0H#i+O@HP!S?GNH2z=imc%?um64++ElM(C9tX0~t>Ywb zjFYIw*380Py9-YZ-BH`IiAP4z*%5D0Z2mH~-U?m3&pPhE2jpKIP~krV@?qm+VF29K zwxIY^Yd?J?4`;j0$Tfw(zn?8!N^A?lN`QI#|1y-5?r{`;=5E3xg)#?lgBdMs0bpeXEYp`(m!;@Q3@wN?u78gO@bZ@~Vz${u(jD<0j+ zvO&?0@IM4(Nzuy^yt;~7n_x%plnD{I=oG8!XVbd1ChNk|?~z{PT4|?*PNyrYO0FL& zlYjnkLxxOofp2=%lbx_Ui{zhzkvs2TkZ)b?Di;;mV^fv0IC4i_J-~=sTR*GsNc{NUh$h4H zOQh6MM4*w;52(?QPu$(z_wC!)o6zW-&dB#~Zk*19M)%^Pf5IifGShTvT2Cf12KO85 zhUDH-n!y1Wi+d=1S$I>NkN&!ZEk)#(GBD&F?d<|v zw}yA+Ol={BG}yGz-C%>RxR@9%Ev@I!RbIx-W+4@S7*(K-2d>){`}*}|hyW*33?K!v zS+D2wX05KS#&(W+BoS=Q;RJtJClvTc^Of~<`Krv5u(l4;)8z|i6w>4ly=C&kzO?op zayJ?z7+YIgolJp@M)1>U&q5C?E?cp}MxnV>iZrm7R(fIg4*93J(l-B8eH|Wyy1Ku7 z>0Q{YFaPx6fbOAiwkWtvX`xZxuQXQHlj$7uB(@LeU!^Hn!Qjr-n$7QL|8J`~qsUmi zIV#+46CUfx%jjrhxNGG5JHsCZ`1&#^DJflkApDnUxi`$3U9HgW%}tu-O$_cnaGjV6YRog;=dE)S&2|c*rLByU!j0_VMK@^*6c}d5f%5`?+?u8aQ0Lx_ zDvTN-aOb(MmEo4W_5H06lZU%|`|8o}LNBoWYXz@jV{PpO2vj^~4m=HLMKCD;92{(R z-4gzRZAd>$Sn}3-I!`y|$^Km}4ctBI9>Y(T{4GuBrz4lc3@cQdvhwCwuCg1M4ii?TteM zkna7dPrwaL;h09q8dg^OsbRAz(~B1~j8b{!FQqL`6YJ@J$`heoX{YM3d3KcwJlG;T zc6^DX5E``}ZECoOYmeD}&xBr?djvcbK9k{ZDslDfKZNoPI+W*i^ z^j?P}lgijX^GSYe8OFNaFe6P{> zDt{IjI>ZayU)3V-9iCqkavUi=y>lJ*=8_x6!5c~*em!-!hw-oFpo(x>HCQ1R`2f!NSF>U=DZ9w)EJu!jwfhk z1npPxC+%@aRQdg`*Z}(ncDW}wZ({}Qrw)d_yveZY4Lj}K`%Vx$6Y8x}n~)|8W;;aJ zCOyo}HDKIjUAHsfv6|X6D0}Sj-o~|d31M$LirG_$t?c=6sVx9|(-GQl&x$SM!6oxieG*n#o2;ohD4f_?-rKLqpH36abr6{q#hqUouL85ODO49ls)7ew??pHF|#f z18_ZD|Jc6Ih5g9b))s+{9Jt~2()K1e!bxn3Ez0h5W3{j!sQ82E+slY6H72+5;}*hj zMTju`q695Ia-XTv-01PC6Or003Hzm3qLdZ#LxprI{vex|@omw>rqj3dBgf$YATtn5 zVpp$R0bjNS`3l6{1@7ry;{{6zPPibyc}8NFt(J*N3tScL7rHR9AA@)c5HN5Ikz2Eo z0D5avc@=q*Sbw33uV7Ad=l-N91HS~h>i{l3>@g|i?8fSNJzj2KDMLL zo4z$Sr=G8$pU?Nd|M;?-Tkph7v+e!jjsuU50SOhq86O`%D>ii};@9;iwfSgnqI^hN zj+Su0Y9V3yTvvM}^T@V#=bV!|I#t?|;R=e1o>OVHy@p0c`2__^^74H>JxBf2*J`gH z85$aL+!Rl3Yg?gjxH{+ple3~Y_2Uktf^UN{YqT` zS+sRz>PJ)h>(}3Z+QS%iTWxqM*L2UUd!I zVlT;iIytRjq-W>g*nOz-qG9Ry*qG`jw(3_i5YSy*GEcw$a2f*AGQW2pPFM6hdyNX? z*JJpaTHDyHz45_XGO5>fOK4blc+xJ+RY`~A(xpqU?Q5N$&c3_(L?|7>$tBfG5Yg<+ z465%fGwQ7+4^`IG)^6RpwK)CZ5etBpvuE+T^TmtF$;qW(zv}e0{J!+|=MePU22W-) zXnRkzEzg|UJC||P+`Ox^^Ko&<(_QU#b@!VGjSUS^^j|jg`qlcgkaj;>+aUA*cRqw@<)-1lt`sYan2Hs#^O}R7|e?A9sY^`v3p{ literal 0 HcmV?d00001 diff --git a/fig/max-min-tiledplot.png b/fig/max-min-tiledplot.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7d7c92b1e4e466a3164eb9656901cbed82a2ee GIT binary patch literal 17042 zcma*P2{=`6_XfPpnoLQiV~&)NIdeINN+d#L9#UqR$CC;flOj_@ktB)CAn8l5)=|7Gp%H0C;E7Ztm?EnzekbHOs;YGZ z5utv`iT=2#fgyk&IPwl^^v@T+kGb<}2(4eou$}oe#Iaw;P(A%M#Gzlu1YP_!#Ig2q zbO?uo$`LGCuU}K_+ZQin5!{l4+zRcd9#nYZIhhe;pD63oU9_`0H{7^&K89aZ@CUGCJ1xR@B@ zL1skWI#GQiBO`;OHQPvzvy#{!ZecK0%)UP%KE9{K%|5fE_~uw+IGF@{li zr%%~ML`3-c?Y=xd$uYk+mgKkgBZfoB_2;)TpN-(!SeV&_Q=A;BaQzYv$z?kfhTpsLfiK7?9vC((b2K7T{9-y+S->c zwZe?ewmw>~>ddWV9T?j>i%;S*QhVzDp{KOH0t{kB}FujE;2l$e>Cnm+NGDKaQ= z{V_I{t($X3itRfm2J+~kB^VL^?NAq_>m*Y z!je(TQpHX`K9|gvZLAJQ)YR03)PA^4wlh_}UElMR@K)F(7o33S_|w3E15B=y?HTD$ zJYN60NMfh!+36Sk0 z7J{V`5hv$Y7W6_m2u^{a{8s9*fFmGM3S(T#P1@pyIjg7W)l<

sa< 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 D7{?j! literal 0 HcmV?d00001 diff --git a/md5sum.txt b/md5sum.txt index 4f1838e7..25411e68 100644 --- a/md5sum.txt +++ b/md5sum.txt @@ -6,13 +6,13 @@ "episodes/01-intro.md" "3fac099664ec6da60ddb43bc55819a6b" "site/built/01-intro.md" "2023-10-18" "episodes/02-arrays.md" "0d384dc0236a9aee44374f46d550f6dc" "site/built/02-arrays.md" "2023-10-18" "episodes/03-loading_data.md" "02fb4fad8914f6010205f6002eb699db" "site/built/03-loading_data.md" "2023-10-18" -"episodes/04-plotting.md" "12d5b8ceb9356a34cd804e279637d216" "site/built/04-plotting.md" "2023-10-18" -"episodes/05-scripts.md" "345b218b165e690c05526faa0fd9e276" "site/built/05-scripts.md" "2023-06-28" -"episodes/06-func.md" "05ba07f8d1501cd0bff5588fa0e29412" "site/built/06-func.md" "2023-10-18" -"episodes/07-loops.md" "85de3b8735b0c68d274bb989c33c0f81" "site/built/07-loops.md" "2023-06-28" -"episodes/08-cond.md" "ad6e520c143ce719c701765c05ef4cb3" "site/built/08-cond.md" "2023-06-28" +"episodes/04-plotting.md" "f74ca3064ff3b6fa70ba20922ee98890" "site/built/04-plotting.md" "2023-10-18" +"episodes/05-scripts.md" "65770335e6794222572dbbeb526984dc" "site/built/05-scripts.md" "2023-10-18" +"episodes/06-func.md" "a2d5b02ad26258bc6fcec3c955b78fc9" "site/built/06-func.md" "2023-10-18" +"episodes/07-loops.md" "918e58912b1b5ff11f3b78ff0bb2e53b" "site/built/07-loops.md" "2023-10-18" +"episodes/08-cond.md" "d2c7126d491fa34b663d3fdfc210b53e" "site/built/08-cond.md" "2023-10-18" "instructors/instructor-notes.md" "95bc9dd61103b3d6345f9d96dce4538b" "site/built/instructor-notes.md" "2023-10-18" "learners/discuss.md" "e7d00cb8aa5e7de1aaaa659777dad8d4" "site/built/discuss.md" "2023-06-28" -"learners/reference.md" "d0657233bd22009b22cce42e8ee043cb" "site/built/reference.md" "2023-10-18" +"learners/reference.md" "a0448de45fac7449fb27497c4214b10a" "site/built/reference.md" "2023-10-18" "learners/setup.md" "e86013e5580010eb2b0c7f73c7a4ea27" "site/built/setup.md" "2023-06-28" "profiles/learner-profiles.md" "60b93493cf1da06dfd63255d73854461" "site/built/learner-profiles.md" "2023-06-28" diff --git a/reference.md b/reference.md index dbee1b74..698d168a 100644 --- a/reference.md +++ b/reference.md @@ -2,16 +2,16 @@ title: 'Learning resources' --- -[Matlab online](mathworks.com/products/matlab-online.html) lets you use the software for free, which can be useful when you do not have access to the university licences. +[Matlab online](https://mathworks.com/products/matlab-online.html) lets you use the software for free, which can be useful when you do not have access to the university licences. -The [totorials section](https://uk.mathworks.com/support/learn-with-matlab-tutorials.html) +The [totorials section](https://mathworks.com/support/learn-with-matlab-tutorials.html) on MATLAB's site also lists useful video tutorials and examples to work through. -[MATLAB Academy](matlabacademy.mathworks.com/) +[MATLAB Academy](https://matlabacademy.mathworks.com/) provides a lot of self-taught material and free courses. -In particular, the [Onramp](matlabacademy.mathworks.com/details/matlab-onramp/gettingstarted) program covers material similar to this course. +In particular, the [Onramp](https://matlabacademy.mathworks.com/details/matlab-onramp/gettingstarted) program covers material similar to this course. -[Matlab cody](mathworks.com/matlabcentral/cody) can be a good way to keep practicing and find interesting challenges to learn how to code with MATLAB. +[Matlab cody](https://mathworks.com/matlabcentral/cody) can be a good way to keep practicing and find interesting challenges to learn how to code with MATLAB. ## Glossary @@ -103,11 +103,6 @@ For example, the statement `x += 3` means the same thing as `x = x + 3`. [integer]{#integer} : A whole number, such as -12343. See also: [floating-point number](#floating-point-number). -[invariant]{#invariant} -: An expression whose value doesn't change during the execution of a program, -typically used in an [assertion](#assertion). -See also: [precondition](#precondition), [postcondition](#postcondition). - [library]{#library} : A family of code units (functions, classes, variables) that implement a set of related tasks.