6 Weitere macro & matrix Funktionen
6.1 capture
cap drop S01 zpalter
d S0? zp*6.2 Macro extended functions for parsing
local wanted : di _dup(10) "oo "
local wanted : di _dup(10) "oo "
dis "`wanted'"
local wanted : di "{dup 10:99 }"oo oo oo oo oo oo oo oo oo oo
6.3 weitere matrix-Befehle
Wir können auch Rechnungen einfügen:
matrix X1 = (1+1, 2*3/4 \ 5/2, 3)
mat l X1 X1[2,2]
c1 c2
r1 2 1.5
r2 2.5 3
6.3.1 Teilmatrizen
mat X1 = (1,2,3,4,5 \ 6,7,8,9,10 \ 0,-1,-2,-3,-5 \ -6,-7,-8,-9,-10)
mat l X1X1[4,5]
c1 c2 c3 c4 c5
r1 1 2 3 4 5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
Wir können aus diesen Matrizen auch Teilbereiche auswählen:
matrix newmat = oldmat[Zeile(nbereich), Spalte(nbereich)]Zeilenbereich und Spaltenbereich können einzelne Zahlen oder Bereiche mit durch zwei Punkte getrennten Start- und Endpositionen sein.
Matrix B erstellen, welche die Zeile 2-4 und die Spalte 1-5 von X1 enthält:
matrix B = X1[2..4,1..5]
mat l B
mat l X1B[3,5]
c1 c2 c3 c4 c5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
X1[4,5]
c1 c2 c3 c4 c5
r1 1 2 3 4 5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
Um alle Zeilen nach der zweiten Zeile zu übernehmen, verwenden wir drei Punkte:
matrix C = X1[2...,1..5]
mat l C
mat l X1C[3,5]
c1 c2 c3 c4 c5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
X1[4,5]
c1 c2 c3 c4 c5
r1 1 2 3 4 5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
6.3.2 Spalten/Zeilen auswählen
B1 enthält Spalte 1 und 3 aus X1:
mat B1 = X1[1...,1],X1[1...,3]
mat l B1
mat l X1B1[4,2]
c1 c3
r1 1 3
r2 6 8
r3 0 -2
r4 -6 -8
X1[4,5]
c1 c2 c3 c4 c5
r1 1 2 3 4 5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
B2 enthält Zeile 1 und 3 aus X1:
mat B2 = X1[1,1...] \ X1[4,1...]
mat l B2
mat l X1B2[2,5]
c1 c2 c3 c4 c5
r1 1 2 3 4 5
r4 -6 -7 -8 -9 -10
X1[4,5]
c1 c2 c3 c4 c5
r1 1 2 3 4 5
r2 6 7 8 9 10
r3 0 -1 -2 -3 -5
r4 -6 -7 -8 -9 -10
6.3.3 Namensbasierte Auswahl
Hier helfen rownumb und colnumb
mat X1 = (1,2,3 \ 8,9,10 )
mat colname X1 = var1 var2 var3
mat rowname X1 = set1 set2
mat X2 = X1[rownumb(X1,"set1"),1...]
mat l X2X2[1,3]
var1 var2 var3
set1 1 2 3
mat X3 = X1[1...,colnumb(X1,"var2")]
mat l X3X3[2,1]
var2
set1 2
set2 9