0:00:13okay thank you so
0:00:14is just a quick uh are just a quick introduction to
0:00:18to the matrix library basically what we
0:00:20because we need a lot of mess and we're trying to do to decide which matrix library to use a
0:00:24"'cause" there there are some
0:00:26i out then mentioned bruce and there's eigen again there's so
0:00:29a couple of others
0:00:30the john my stuff but
0:00:31uh most of these is they're trying to be
0:00:34kind of um uh like
0:00:36as much
0:00:37similar to mark lab or you know
0:00:39very very know
0:00:41trying to play like high level
0:00:43uh a live are so we wanted a really simple low level library
0:00:46i would we wouldn't do what zero avoid all operator want to you to you know avoid all automatic resizing
0:00:52all automatic initialisation and stuff like that
0:00:55i know whether it's yeah
0:00:56so uh
0:00:58that's why we decided to to build the matrix library that would
0:01:01we somehow based on the
0:01:03based on the uh
0:01:05and the blast routine because they're fast we used them
0:01:08uh in our previous projects so
0:01:10the the
0:01:11as i set the uh
0:01:13the the library calls
0:01:14uh the um at lost or or blast functions
0:01:18or the for the high level math operations like uh in versions so cholesky decomposition is stuff
0:01:23we use the lot park
0:01:26one of one of those implementations
0:01:28and for the code
0:01:30okay we also use um
0:01:31this this at is highly to automatically or uh tuned
0:01:35a linear algebra
0:01:37system i don't know
0:01:41missus some of the a lot implementations so we we we use public domain come from
0:01:46from the john my project too
0:01:47um to implement some of that stuff
0:01:50or is a just a
0:01:52quick example so it's it's it's template it
0:01:55yeah it's simply to on on doubles and floats in in
0:01:59E plus plus
0:02:00uh basically the basic the basic classes are your so yeah we have the
0:02:04the matrix
0:02:05the standard matrix rectangular of a library
0:02:08uh then we have the vector
0:02:10uh then we have something S P N T P matrices C so this is something then then mentioned before
0:02:14so as P user a
0:02:17symmetric fact matrix so basically uh what you what you do is that if you know that you're matrix is
0:02:22going to be
0:02:23uh a symmetric you can you can just or
0:02:25the the lower trying a sorry yeah you know the a lower triangle of the matrix and
0:02:30put the coefficients one after another and
0:02:32and fact that matrix in memory
0:02:34and uh you but you have to but S P just
0:02:37tells you that you know that this is going to be symmetrical the same as
0:02:40T P which is that like triangular back matrix
0:02:44just know that it's a it's so you have to treat it is a as a triangular matrix matrix with
0:02:48with the of
0:02:49what it whatever is above the
0:02:50the a diagonal of the matrix
0:02:53set to zero
0:02:54and i think it is that that
0:02:56like a uh
0:02:57really supports and and lastly they support these these these two kind of of matrices and and the coldest is
0:03:02optimized somehow
0:03:08is just a quick example so the only operators that we use are are for indexing the the um
0:03:14the structure so
0:03:16uh you see that we can we can we can create a a vector of floats with the fixed size
0:03:20then you can
0:03:21you know iterate over over the elements
0:03:25you can access
0:03:26you can access them as i said with the we would be on
0:03:29we don't use
0:03:30a square brackets we use normal
0:03:32rec it's like here
0:03:34we don't use operators because they're just
0:03:36difficult to uh to debug and
0:03:39i mean that would
0:03:40we wanted to be as as as much
0:03:42C or C plus plus as possible so
0:03:46everything is everything is called by functions so we see here
0:03:49you can add
0:03:50vector and vector and and and that's basically it
0:03:56yeah so there's no orders resizing one uh and anything like that because you normally you have to know what
0:04:01you're doing so if if if there's something wrong
0:04:06no no no no iterators
0:04:08uh that's too difficult and and
0:04:14yeah but
0:04:16you can get the wonders directly yeah you can get appointed to the role we get
0:04:20to the to the beginning of the memory space
0:04:26the next example so just uh just to show you
0:04:29uh the format of the for the functions of god
0:04:32uh you the functions take some uh transcend all trans
0:04:36parameters so that you know if if you wanna
0:04:38you want the matrix that that you
0:04:40you put in is a parameter if you want to transpose it or not
0:04:43um most of these most of these uh functions are really based on the on the
0:04:48blast cam function because that's that's the real one of them
0:04:52uh the
0:04:53the most used
0:04:55one two so this is this is the format of the gain functions so you you usually you have a
0:04:59and you wanna
0:05:00uh at some multiplication of two other matrices to it while
0:05:05yeah i mean you know waiting it with the with the matrix itself so
0:05:09this is something this is something that that that we use a lot
0:05:13some notes about the about the naming them i guess that's all the document to didn't the
0:05:18in the docks to jen that that that is on the source forge
0:05:21uh yeah if you have
0:05:23i if you wanna if you wanna
0:05:25multiply two or make some operation on on to same might indices
0:05:28you use the
0:05:29the two there so this is just a
0:05:31just a
0:05:32naming scheme
0:05:35uh yet another example from the from the high level so you see that uh
0:05:40you can you can create a normal matrix a can christa estimate
0:05:42symmetrical metrical back make she's
0:05:47you can create them
0:05:49yeah that's are set again
0:05:52yeah yeah the symmetric not track here so
0:05:55so uh
0:05:56you see that
0:05:58you you really have a special functions also scatter
0:06:01six sorry the medics six got a really knows that it it is a
0:06:04symmetrical back products so it does this
0:06:06think it effectively stores it effectively
0:06:09another thing is you can
0:06:11uh a you can now create a a triangle back format
0:06:14good for the class P
0:06:16so you just take that that to symmetric fact
0:06:19matrix here
0:06:21this functional ring knows that
0:06:22it's so you know
0:06:24symmetric metric back so
0:06:25it stores it
0:06:26in a in a
0:06:27an efficient way again and it inverts sense me
0:06:32does either
0:06:39uh another think that that it's a what is like sub see so it's basically just a from from the
0:06:44from the matrix or vector or whatever
0:06:47there is so uh
0:06:48these these classes they they you can do that exactly the same stuff
0:06:52as with the original
0:06:54matrix clause or or a vector class
0:06:56so they don't have any
0:06:58and you resizing or read
0:07:00reshaping being or or anything like that
0:07:02only they they they uh they let you do only the
0:07:05the uh non
0:07:07resizing and you know
0:07:10you're just addressing this space that was already pre located by the by the matrix so there's not not nothing
0:07:15like a muddy the question
0:07:21yeah this is an example so if you wanna if you wanna address
0:07:25a sub vector of your of your ten dimensional vector
0:07:28starting at at a second element then having
0:07:32elements in in and it so we can you can you can be like this
0:07:35here's how we how good the
0:07:37was are you the
0:07:39you know
0:07:40a a matrix starting at the first
0:07:43uh at the first row
0:07:46generals uh yeah sorry ten wasn't in total starting at the at the first column
0:07:49well this is the i mean the second column index and
0:07:52C style indexing
0:07:55and uh a yeah you we can just use it
0:07:57as you would as you with to
0:08:01matrix class
0:08:03so it's not memory save
0:08:05uh but that's something that that the C programs usually
0:08:08C problem is usually do no like
0:08:10it's it's nothing that you you do a prototype or called some all you
0:08:14you you you you if you once you start writing in C you you have to be careful about memory
0:08:18i guess that
0:08:19this is something
0:08:20this is something
0:08:24uh quite natural to seek C language
0:08:26and also there's no representation of of matrix columns like uh
0:08:31i think
0:08:32well work
0:08:36yeah so you you already saw the the the functionality in the example so we have a matrix inversion cholesky
0:08:43as P D
0:08:45um eigenvalue fast for transform
0:08:48and uh the nice thing is that uh
0:08:51there's there's and uh
0:08:55included in the pack it's so so whatever we do we always know that
0:08:58we change the code we know that that that where
0:09:10do we support spot press no we don't that's what then all pretty mentioned in the in the uh and
0:09:15the first part of the talk
0:09:16because the speech stuff is not
0:09:18we we don't use spar makes that much
0:09:21and the
0:09:23if you want to at yeah you're welcome yeah please
0:09:32uh that's something that is because this library reaction than i thing about this library of which i didn't mention
0:09:37is is so
0:09:39somehow it an independent in only close the base
0:09:42uh a class of the of the of the call so if you don't want to use the rest of
0:09:45the called do you can just
0:09:46use this
0:09:47this thing
0:09:48and it
0:09:49and it uh
0:09:50called some some error stuff i don't then maybe you could come on that
0:09:54at and the base that's in the base so
0:10:00that is
0:10:00common to all like
0:10:02basic uh data types
0:10:04stuff like that
0:10:25so i think we
0:10:29input output
0:10:30that the only operators are really
0:10:34the brackets and and input out you know the the C plus plus i was stream style
0:10:40so we gonna have a short break can again a allow people to escape the far go through some of
0:10:44the script
0:10:45so maybe after that uh
0:10:47you know three to five minutes for starting yeah