6 Weitere macro
& matrix
Funktionen
6.1 capture
drop S01 zpalter
cap d S0? zp*
6.2 Macro extended functions for parsing
local wanted : di _dup(10) "oo "
local wanted : di _dup(10) "oo "
"`wanted'"
dis
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)
l X1 mat
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)l X1 mat
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
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]
l B
mat l X1 mat
B[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]
l C
mat l X1 mat
C[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]l B1
mat l X1 mat
B1[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...]l B2
mat l X1 mat
B2[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
rownumb(X1,"set1"),1...]
mat X2 = X1[l X2 mat
X2[1,3]
var1 var2 var3
set1 1 2 3
colnumb(X1,"var2")]
mat X3 = X1[1...,l X3 mat
X3[2,1]
var2
set1 2
set2 9