aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/matrix.pd133
-rw-r--r--doc/matrix~.pd58
-rw-r--r--doc/mtx_binops.pd142
-rw-r--r--doc/mtx_element.pd64
-rw-r--r--doc/mtx_inverse.pd18
-rw-r--r--doc/mtx_mean.pd13
-rw-r--r--doc/mtx_rand.pd20
-rw-r--r--doc/mtx_size.pd44
-rw-r--r--doc/mtx_special.pd60
-rw-r--r--doc/mtx_trace.pd24
-rw-r--r--doc/mtx_transpose.pd66
11 files changed, 642 insertions, 0 deletions
diff --git a/doc/matrix.pd b/doc/matrix.pd
new file mode 100644
index 0000000..a1c6332
--- /dev/null
+++ b/doc/matrix.pd
@@ -0,0 +1,133 @@
+#N canvas 94 0 1118 745 10;
+#X obj 258 -23 matrix;
+#X obj 61 187 mtx_check;
+#X obj 61 216 mtx_print;
+#X obj 544 -21 mtx;
+#X obj 30 535 mtx_print;
+#X obj 30 513 matrix;
+#X msg 42 372 zeros 5;
+#X msg 30 353 eye 3;
+#X msg 49 390 ones 4;
+#X msg 55 411 diag 1 2 3 4;
+#X obj 369 531 matrix;
+#X obj 471 496 loadbang;
+#X obj 471 516 mtx_diag 4 3 1 2;
+#X obj 369 553 print;
+#X msg 369 364 row;
+#X msg 539 497 bang;
+#X msg 379 404 row \$1;
+#X floatatom 379 385 4 0 0;
+#X floatatom 391 424 4 0 0;
+#X msg 391 443 row \$1 1 2 3 4;
+#X floatatom 498 382 4 0 0;
+#X floatatom 510 421 4 0 0;
+#X msg 488 362 col;
+#X msg 498 401 col \$1;
+#X msg 510 440 col \$1 1 2 3 4;
+#X msg 592 364 element;
+#X msg 623 406 element \$1;
+#X floatatom 643 428 4 0 0;
+#X msg 643 447 element 3 \$1;
+#X floatatom 623 386 4 0 0;
+#X msg 61 162 matrix 3 3 1 2 3 4 5 6 7;
+#X msg 39 136 matrix 3 3 1 2 3 4 5 6 7;
+#X text 43 79 this is \, how a matrix really looks...;
+#X text 216 134 an "illegal" matrix;
+#X text 122 187 make the "illegal" matrix consistent;
+#X text 216 103 a "legal" matrix;
+#X msg 40 103 matrix 3 3 1 2 3 1 2 4 7 6 5;
+#X obj 590 218 mtx_print;
+#X obj 590 196 matrix;
+#X obj 655 174 mtx_ones 10;
+#X msg 655 154 bang;
+#X text 121 218 print to stderr (like "print");
+#X msg 590 64 bang;
+#X floatatom 615 103 4 0 0;
+#X msg 604 85 matrix 2 3 10 10 30 20 -5 8;
+#X msg 627 126 1 2 3 1 2 3 10 20 30;
+#X text 758 118 a list of elements;
+#X text 759 132 has to fit the size of the "current" matrix;
+#X text 651 104 set all elements of the current matrix to a value;
+#X text 366 345 get/set rows;
+#X text 479 344 get/set columns;
+#X text 5 564 create various matrices;
+#X text 356 -21 matrix operations;
+#X text 636 197 ==;
+#X obj 660 197 mtx;
+#X msg 335 398 bang;
+#X text 586 344 get/set elements;
+#X msg 654 486 element \$1 2 10;
+#X floatatom 654 468 4 0 0;
+#X msg 702 406 element \$1 \$1;
+#X text 687 406 ==;
+#X obj 161 479 matrix 3 2;
+#X obj 161 525 mtx_print;
+#X msg 161 357 bang;
+#X text 143 542 an "empty" [3 \, 2] matrix;
+#X msg 73 433 egg 4;
+#X msg 75 455 diegg 3 2 1;
+#X obj 126 671 mtx_element;
+#X obj 225 646 mtx_size;
+#X obj 225 669 mtx_transpose;
+#X obj 427 650 mtx_mean;
+#X obj 427 669 mtx_rand;
+#X obj 338 670 mtx_inverse;
+#X obj 126 646 mtx_eye;
+#X obj 338 645 mtx_+;
+#X text 127 620 see also help for:;
+#X msg 912 383 write /tmp/my_matrix.mtx;
+#X msg 912 406 read /tmp/my_matrix.mtx;
+#X obj 810 412 mtx_rand;
+#X msg 810 390 4 5;
+#X msg 858 389 bang;
+#X obj 858 464 mtx_print;
+#X text 848 351 load and save matrices;
+#X obj 858 440 matrix test.mtx;
+#X connect 1 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X connect 10 0 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
+#X connect 14 0 10 0;
+#X connect 15 0 12 0;
+#X connect 16 0 10 0;
+#X connect 17 0 16 0;
+#X connect 18 0 19 0;
+#X connect 19 0 10 0;
+#X connect 20 0 23 0;
+#X connect 21 0 24 0;
+#X connect 22 0 10 0;
+#X connect 23 0 10 0;
+#X connect 24 0 10 0;
+#X connect 25 0 10 0;
+#X connect 26 0 10 0;
+#X connect 27 0 28 0;
+#X connect 28 0 10 0;
+#X connect 29 0 26 0;
+#X connect 30 0 1 0;
+#X connect 31 0 2 0;
+#X connect 36 0 2 0;
+#X connect 38 0 37 0;
+#X connect 39 0 38 1;
+#X connect 40 0 39 0;
+#X connect 42 0 38 0;
+#X connect 43 0 38 0;
+#X connect 44 0 38 0;
+#X connect 45 0 38 0;
+#X connect 55 0 10 0;
+#X connect 57 0 10 0;
+#X connect 58 0 57 0;
+#X connect 61 0 62 0;
+#X connect 63 0 61 0;
+#X connect 65 0 5 0;
+#X connect 66 0 5 0;
+#X connect 76 0 83 0;
+#X connect 77 0 83 0;
+#X connect 78 0 83 0;
+#X connect 79 0 78 0;
+#X connect 80 0 83 0;
+#X connect 83 0 81 0;
diff --git a/doc/matrix~.pd b/doc/matrix~.pd
new file mode 100644
index 0000000..5b0fa07
--- /dev/null
+++ b/doc/matrix~.pd
@@ -0,0 +1,58 @@
+#N canvas 59 -12 889 589 12;
+#X obj 68 271 osc~ 100;
+#X obj 68 297 *~ 0.2;
+#X obj 112 320 osc~ 1000;
+#X obj 112 346 *~ 1.5;
+#X obj 157 295 osc~ 432;
+#X obj 68 411 env~;
+#X floatatom 68 435 4 0 0;
+#X obj 127 410 env~;
+#X floatatom 127 434 4 0 0;
+#X obj 187 410 env~;
+#X floatatom 187 434 4 0 0;
+#X obj 247 409 env~;
+#X floatatom 247 433 4 0 0;
+#X floatatom 284 350 4 0 0;
+#X text 332 353 fade time in [ms];
+#X msg 265 100 bang;
+#X obj 265 127 mtx_eye 3 4;
+#X msg 362 100 bang;
+#X obj 362 127 mtx_egg 3 4;
+#X msg 261 179 bang;
+#X msg 362 178 bang;
+#X obj 261 206 mtx_ones 3 4;
+#X obj 362 205 mtx_zeros 3 4;
+#X obj 68 371 matrix~ 3 4 100 .......;
+#X obj 98 32 matrix~;
+#X text 174 24 matrix-multiply m IN~signals to n OUT~signals;
+#X text 174 37 matrices are interpolated a la line~;
+#X text 473 91 the one-before-last inlet eats;
+#X text 476 104 matrix-messages to control the gains;
+#X text 475 117 of the matrix~;
+#X text 484 333 the last inlet gets the fade-time between two matrix-messages.
+;
+#X obj 78 505 matrix~;
+#X text 154 503 creation: "matrix~ [<num_in> [<num_out> [<fade_time>]]]
+;
+#X connect 0 0 1 0;
+#X connect 1 0 23 0;
+#X connect 2 0 3 0;
+#X connect 3 0 23 1;
+#X connect 4 0 23 2;
+#X connect 5 0 6 0;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 11 0 12 0;
+#X connect 13 0 23 4;
+#X connect 15 0 16 0;
+#X connect 16 0 23 3;
+#X connect 17 0 18 0;
+#X connect 18 0 23 3;
+#X connect 19 0 21 0;
+#X connect 20 0 22 0;
+#X connect 21 0 23 3;
+#X connect 22 0 23 3;
+#X connect 23 0 5 0;
+#X connect 23 1 7 0;
+#X connect 23 2 9 0;
+#X connect 23 3 11 0;
diff --git a/doc/mtx_binops.pd b/doc/mtx_binops.pd
new file mode 100644
index 0000000..a0ae6d0
--- /dev/null
+++ b/doc/mtx_binops.pd
@@ -0,0 +1,142 @@
+#N canvas 79 32 859 673 10;
+#X obj 87 360 mtx_mul;
+#X obj 157 360 mtx_*;
+#X obj 88 163 mtx_add;
+#X obj 167 166 mtx_+;
+#X obj 155 134 mtx_diag 1 2 3 4 5;
+#X obj 88 134 mtx_ones 5;
+#X obj 88 111 t b b;
+#X obj 88 185 mtx_print;
+#X msg 88 92 bang;
+#X text 142 165 ==;
+#X obj 305 134 mtx_eye 4;
+#X obj 305 159 mtx_add 10;
+#X msg 305 107 bang;
+#X obj 305 186 mtx_print;
+#X floatatom 374 101 4 0 0 0 - - -;
+#X obj 374 119 t b f;
+#X obj 392 160 mtx_+ 10;
+#X text 371 161 ==;
+#X obj 87 394 mtx_print;
+#X msg 87 270 bang;
+#X obj 133 332 mtx_diag 1 2;
+#X obj 87 297 t b b;
+#X obj 87 332 mtx_+ 3;
+#X text 137 361 ==;
+#X obj 87 314 mtx_eye 3 2;
+#X obj 249 399 mtx_print;
+#X obj 249 292 t b f;
+#X floatatom 249 274 4 0 0 0 - - -;
+#X msg 249 315 4 2 1 3;
+#X obj 249 335 mtx_diag;
+#X obj 249 363 mtx_mul 2;
+#X obj 328 363 mtx_* 2;
+#X obj 393 363 mtx_.* 2;
+#X text 310 363 ==;
+#X text 376 364 ==;
+#X obj 522 366 mtx_.*;
+#X obj 522 401 mtx_print;
+#X obj 522 304 mtx_diag 1 2 3;
+#X obj 553 322 mtx_ones 3;
+#X obj 522 283 t b b;
+#X msg 522 264 bang;
+#X obj 553 341 mtx_* 2;
+#X text 80 214 add 2 matrices;
+#X text 274 218 add an offset to a matrix;
+#X text 70 423 multiply 2 matrices;
+#X text 245 422 multiply a matrix with a scalar;
+#X text 506 425 multiply 2 matrices element by element;
+#X text 334 19 matrix arithmetic;
+#X obj 88 599 mtx_print;
+#X obj 88 492 t b f;
+#X floatatom 88 474 4 0 0 0 - - -;
+#X msg 88 515 4 2 1 3;
+#X obj 88 535 mtx_diag;
+#X obj 323 600 mtx_print;
+#X obj 323 503 mtx_diag 1 2 3;
+#X obj 354 521 mtx_ones 3;
+#X obj 354 540 mtx_* 2;
+#X text 84 622 divide a matrix by a scalar;
+#X obj 88 563 mtx_./ 2;
+#X obj 323 565 mtx_./;
+#X text 307 624 divide 2 matrices element by element;
+#X obj 323 482 t b b f;
+#X floatatom 323 463 4 0 0 0 - - -;
+#X obj 709 538 matrix;
+#X text 592 538 see also help for;
+#X obj 550 141 mtx_diag 1 2 3 4 5;
+#X obj 483 141 mtx_ones 5;
+#X obj 483 118 t b b;
+#X obj 483 192 mtx_print;
+#X msg 483 99 bang;
+#X text 537 172 ==;
+#X obj 700 141 mtx_eye 4;
+#X msg 700 114 bang;
+#X obj 700 193 mtx_print;
+#X floatatom 769 108 4 0 0 0 - - -;
+#X obj 769 126 t b f;
+#X text 762 168 ==;
+#X obj 483 170 mtx_sub;
+#X obj 562 173 mtx_-;
+#X obj 779 169 mtx_sub 10;
+#X obj 700 166 mtx_- 10;
+#X text 481 221 subtract 2 matrices;
+#X text 669 225 subtract an offset from a matrix;
+#X connect 0 0 18 0;
+#X connect 2 0 7 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 6 1 4 0;
+#X connect 8 0 6 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 10 0;
+#X connect 14 0 15 0;
+#X connect 15 0 10 0;
+#X connect 15 1 11 1;
+#X connect 19 0 21 0;
+#X connect 20 0 0 1;
+#X connect 21 0 24 0;
+#X connect 21 1 20 0;
+#X connect 22 0 0 0;
+#X connect 24 0 22 0;
+#X connect 26 0 28 0;
+#X connect 26 1 30 1;
+#X connect 27 0 26 0;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 25 0;
+#X connect 35 0 36 0;
+#X connect 37 0 35 0;
+#X connect 38 0 41 0;
+#X connect 39 0 37 0;
+#X connect 39 1 38 0;
+#X connect 40 0 39 0;
+#X connect 41 0 35 1;
+#X connect 49 0 51 0;
+#X connect 49 1 58 1;
+#X connect 50 0 49 0;
+#X connect 51 0 52 0;
+#X connect 52 0 58 0;
+#X connect 54 0 59 0;
+#X connect 55 0 56 0;
+#X connect 56 0 59 1;
+#X connect 58 0 48 0;
+#X connect 59 0 53 0;
+#X connect 61 0 54 0;
+#X connect 61 1 55 0;
+#X connect 61 2 56 1;
+#X connect 62 0 61 0;
+#X connect 65 0 77 1;
+#X connect 66 0 77 0;
+#X connect 67 0 66 0;
+#X connect 67 1 65 0;
+#X connect 69 0 67 0;
+#X connect 71 0 80 0;
+#X connect 72 0 71 0;
+#X connect 74 0 75 0;
+#X connect 75 0 71 0;
+#X connect 75 1 80 1;
+#X connect 77 0 68 0;
+#X connect 80 0 73 0;
diff --git a/doc/mtx_element.pd b/doc/mtx_element.pd
new file mode 100644
index 0000000..a69e642
--- /dev/null
+++ b/doc/mtx_element.pd
@@ -0,0 +1,64 @@
+#N canvas 220 134 544 776 10;
+#X obj 53 302 mtx_print;
+#X obj 53 283 mtx_element 4 3;
+#X obj 64 260 mtx_ones 5 3;
+#X msg 64 241 bang;
+#X floatatom 53 191 4 0 0;
+#X msg 138 184 3 2;
+#X msg 144 202 2 0;
+#X msg 144 219 0 1;
+#X msg 145 237 0 0;
+#X text 179 184 set element [3 \, 2];
+#X text 179 202 set all elements in row [2];
+#X text 177 217 set all elements in column [1];
+#X text 178 236 set all elements of matrix;
+#X text 153 285 creation: mtx_element [<row> <col> [<posR> <posC>]];
+#X obj 53 469 mtx_print;
+#X obj 64 427 mtx_ones 5 3;
+#X msg 64 408 bang;
+#X obj 53 450 mtx_row 4 3;
+#X msg 122 405 0;
+#X text 153 405 set all rows;
+#X msg 114 383 2;
+#X text 154 380 set row [2];
+#X msg 53 356 -1 2 3 4 5;
+#X obj 50 658 mtx_print;
+#X obj 61 616 mtx_ones 5 3;
+#X msg 61 597 bang;
+#X msg 131 592 0;
+#X msg 123 570 2;
+#X msg 50 545 -1 2 3 4 5;
+#X obj 50 639 mtx_col 4 3 3;
+#X text 163 567 set column [2];
+#X text 162 593 set all columns;
+#X text 137 640 creation: mtx_col [<row> <col> [<posC>]];
+#X text 133 452 creation: mtx_row [<row> <col> [<posR>]];
+#X text 52 163 set matrix elements;
+#X text 55 339 set matrix rows;
+#X text 49 529 set matrix columns;
+#X text 187 50 get/set elements/rows/columns of a matrix;
+#X obj 90 33 mtx_element;
+#X obj 89 53 mtx_row;
+#X obj 90 75 mtx_col;
+#X obj 210 738 matrix;
+#X text 98 737 see also help for;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 1;
+#X connect 7 0 1 1;
+#X connect 8 0 1 1;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 17 1;
+#X connect 20 0 17 1;
+#X connect 22 0 17 0;
+#X connect 24 0 29 0;
+#X connect 25 0 24 0;
+#X connect 26 0 29 1;
+#X connect 27 0 29 1;
+#X connect 28 0 29 0;
+#X connect 29 0 23 0;
diff --git a/doc/mtx_inverse.pd b/doc/mtx_inverse.pd
new file mode 100644
index 0000000..9cca9fe
--- /dev/null
+++ b/doc/mtx_inverse.pd
@@ -0,0 +1,18 @@
+#N canvas 50 156 465 427 10;
+#X obj 92 208 mtx_inverse;
+#X obj 92 292 mtx_print;
+#X msg 103 140 matrix 3 3 1 2 3 2 3 4 3 4 5;
+#X text 280 142 singular;
+#X msg 92 108 matrix 3 3 1 2 4 2 3 4 3 4 5;
+#X text 265 107 regular;
+#X text 85 310 get the inverse of a matrix;
+#X text 286 158 regular;
+#X text 287 168 but badly conditioned;
+#X msg 111 164 matrix 3 3 1 2 3 2 4 4 3 4 5;
+#X text 82 26 get the inverse of a matrix;
+#X obj 233 381 matrix;
+#X text 116 381 see also help for;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 4 0 0 0;
+#X connect 9 0 0 0;
diff --git a/doc/mtx_mean.pd b/doc/mtx_mean.pd
new file mode 100644
index 0000000..02b02fb
--- /dev/null
+++ b/doc/mtx_mean.pd
@@ -0,0 +1,13 @@
+#N canvas 128 104 450 300 10;
+#X obj 57 146 mtx_mean;
+#X obj 63 91 mtx_print;
+#X obj 57 201 print mean_row;
+#X obj 57 76 mtx_rand;
+#X msg 57 52 4 5;
+#X text 55 229 get the mean value of each column;
+#X obj 175 275 matrix;
+#X text 58 275 see also help for;
+#X connect 0 0 2 0;
+#X connect 3 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
diff --git a/doc/mtx_rand.pd b/doc/mtx_rand.pd
new file mode 100644
index 0000000..491d6de
--- /dev/null
+++ b/doc/mtx_rand.pd
@@ -0,0 +1,20 @@
+#N canvas 120 116 450 300 10;
+#X obj 59 148 mtx_rand;
+#X obj 59 194 mtx_print;
+#X obj 83 100 mtx_ones 6 3;
+#X msg 83 82 bang;
+#X msg 74 58 5 7;
+#X msg 59 35 3;
+#X msg 115 133 seed 12;
+#X text 51 219 get a matrix containing;
+#X text 51 232 random elements (0..1];
+#X text 165 131 set seed;
+#X obj 357 274 matrix;
+#X text 240 274 see also help for;
+#X text 129 11 fill a matrix with random values;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
diff --git a/doc/mtx_size.pd b/doc/mtx_size.pd
new file mode 100644
index 0000000..85d7747
--- /dev/null
+++ b/doc/mtx_size.pd
@@ -0,0 +1,44 @@
+#N canvas 161 60 833 285 10;
+#X obj 386 214 mtx_print;
+#X obj 386 106 mtx_ones;
+#X msg 386 83 3 5;
+#X obj 386 192 mtx_resize;
+#X text 383 67 resize a matrix;
+#X msg 441 91 3 2;
+#X msg 447 109 2 0;
+#X msg 448 144 0 0;
+#X text 482 91 resize to [3 \, 2];
+#X text 482 109 resize to 2 rows \, leave row-length unchanged;
+#X text 481 143 don't resize;
+#X msg 452 169 2;
+#X text 484 171 resize to [2 \, 2];
+#X text 458 192 creation: mtx_resize [<rows> [<cols>]];
+#X msg 447 126 0 4;
+#X text 482 124 resize to 4 columns \, leave column-length unchanged;
+#X floatatom 81 178 4 0 0;
+#X text 78 68 get the size of a matrix;
+#X obj 81 140 mtx_size;
+#X msg 115 91 3 2;
+#X msg 81 91 7;
+#X obj 81 115 mtx_ones;
+#X floatatom 124 178 4 0 0;
+#X text 122 194 columns;
+#X text 82 195 rows;
+#X obj 150 22 mtx_size;
+#X obj 421 23 mtx_resize;
+#X text 223 24 get/set the size of a matrix;
+#X obj 306 252 matrix;
+#X text 189 252 see also help for;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 3 1;
+#X connect 11 0 3 1;
+#X connect 14 0 3 1;
+#X connect 18 0 16 0;
+#X connect 18 1 22 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 18 0;
diff --git a/doc/mtx_special.pd b/doc/mtx_special.pd
new file mode 100644
index 0000000..b230a0f
--- /dev/null
+++ b/doc/mtx_special.pd
@@ -0,0 +1,60 @@
+#N canvas 113 77 498 667 10;
+#X obj 117 136 mtx_eye 5;
+#X obj 117 162 mtx_print;
+#X msg 117 65 bang;
+#X msg 147 109 3 5;
+#X msg 133 85 10;
+#X obj 120 332 mtx_print;
+#X msg 120 234 bang;
+#X msg 150 279 3 5;
+#X msg 136 255 10;
+#X obj 311 337 mtx_print;
+#X msg 311 239 bang;
+#X msg 341 284 3 5;
+#X msg 327 260 10;
+#X obj 120 306 mtx_ones 5;
+#X obj 311 311 mtx_zeros 5;
+#X obj 124 496 mtx_print;
+#X msg 136 417 1 2 3 4 5;
+#X msg 124 395 bang;
+#X obj 124 468 mtx_diag 7 6 5 4;
+#X text 93 181 identity matrix;
+#X text 104 358 all matrix elements=1;
+#X text 290 359 all matrix elements=0;
+#X text 113 522 diagonal-matrix;
+#X obj 333 162 mtx_print;
+#X msg 333 65 bang;
+#X msg 363 109 3 5;
+#X msg 349 85 10;
+#X obj 333 136 mtx_egg 5;
+#X obj 316 491 mtx_print;
+#X msg 328 412 1 2 3 4 5;
+#X msg 316 390 bang;
+#X obj 316 463 mtx_diegg 7 6 5 4;
+#X text 305 517 turned diagonal-matrix;
+#X text 309 181 turned identity matrix;
+#X text 173 19 create special matrices;
+#X obj 245 612 matrix;
+#X text 128 612 see also help for;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 6 0 13 0;
+#X connect 7 0 13 0;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 0;
+#X connect 13 0 5 0;
+#X connect 14 0 9 0;
+#X connect 16 0 18 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 0;
+#X connect 24 0 27 0;
+#X connect 25 0 27 0;
+#X connect 26 0 27 0;
+#X connect 27 0 23 0;
+#X connect 29 0 31 0;
+#X connect 30 0 31 0;
+#X connect 31 0 28 0;
diff --git a/doc/mtx_trace.pd b/doc/mtx_trace.pd
new file mode 100644
index 0000000..ad48fd8
--- /dev/null
+++ b/doc/mtx_trace.pd
@@ -0,0 +1,24 @@
+#N canvas 137 140 916 465 10;
+#X obj 79 361 mtx_diag;
+#X obj 79 389 print;
+#X obj 79 308 mtx_ones 7;
+#X msg 79 288 bang;
+#X obj 84 106 mtx_ones 7;
+#X msg 84 83 bang;
+#X obj 84 147 mtx_trace;
+#X floatatom 84 189 4 0 0 0 - - -;
+#X text 86 68 get trace of a matrix;
+#X text 79 271 get diagonal of a matrix;
+#X text 81 204 trace = sum(diagonal elements);
+#X text 243 28 get information of the diagonale of a matrix;
+#X text 440 176 see also help for;
+#X obj 571 175 matrix;
+#X obj 699 269 mtx_eye;
+#X text 332 270 to create diagonale matrices with [mtx_diag] \, see
+;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
diff --git a/doc/mtx_transpose.pd b/doc/mtx_transpose.pd
new file mode 100644
index 0000000..afe5c7b
--- /dev/null
+++ b/doc/mtx_transpose.pd
@@ -0,0 +1,66 @@
+#N canvas 199 -133 718 600 10;
+#X obj 48 162 mtx_print;
+#X obj 48 134 mtx_transpose;
+#X obj 48 81 mtx_ones;
+#X msg 48 59 3 5;
+#X text 45 42 transpose a matrix;
+#X text 188 7 tranpose/shift matrices;
+#X obj 37 349 mtx_print;
+#X msg 37 246 1 2 3 4 5;
+#X text 33 229 shift rows of a matrix;
+#X floatatom 104 301 4 0 0 0 - - -;
+#X obj 37 321 mtx_scroll 1;
+#X obj 37 268 mtx_diag;
+#X obj 414 333 mtx_print;
+#X msg 414 230 1 2 3 4 5;
+#X floatatom 481 285 4 0 0 0 - - -;
+#X obj 414 252 mtx_diag;
+#X text 410 213 shift columns of a matrix;
+#X obj 414 306 mtx_roll 1;
+#X text 517 286 shift amount (0=no-shift \; 1=1-column-right \; -2=2-columns-left
+\; ...);
+#X text 143 299 shift amount (0=no-shift \; 1=1-row-down \; -2=2-rows-up
+\; ...);
+#X text 29 419 pivot-transform a matrix;
+#X obj 33 494 mtx_pivot;
+#N canvas 352 114 190 367 rand-matrix 0;
+#X obj 74 163 inlet;
+#X obj 74 270 outlet;
+#X obj 74 195 mtx_rand;
+#X obj 74 215 mtx_* 10;
+#X obj 74 237 l2i;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X restore 33 458 pd rand-matrix;
+#X msg 33 436 4 3;
+#X obj 82 515 mtx_print post;
+#X obj 57 535 mtx_print pre;
+#X obj 33 575 mtx_print pivot;
+#X obj 485 95 matrix;
+#X text 435 77 see also help for;
+#X text 280 494 the first outlet is the pivot-transformed matrix.;
+#X text 279 520 the other outlets are the 1/0-matrices that have to
+be pre-multiplied (row-tranform) and post-multiplied (column-tranform)
+to the original matrix to get the pivot-tranformation. this is useful
+for de-pivoting.;
+#X text 281 445 this will tranform the columns and rows \, so that
+the result will have all maximum values in the diagonale. the maximum
+of the matrix will be located at the upper-left corner.;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 7 0 11 0;
+#X connect 9 0 10 1;
+#X connect 10 0 6 0;
+#X connect 11 0 10 0;
+#X connect 13 0 15 0;
+#X connect 14 0 17 1;
+#X connect 15 0 17 0;
+#X connect 17 0 12 0;
+#X connect 21 0 26 0;
+#X connect 21 1 25 0;
+#X connect 21 2 24 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;