Christine Ebling wrote:
Hallo!
Ich habe Probleme mit einer do-Schleife. Konkret:
Ich habe einen Vektor yvec, dem ich eine Matrix yperm zuordnen will
yvec:
1
3
0
5
2
0
4
yperm:
1 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 1
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
In Gauss funktioniert das mit "yperm=zeros(7,5); i=1; do while i<=7; if
yvec[i]>0;yperm[i,yvec[i]]=1; endif; i=i+1; endo;"
Versuche ich nun eine ähnliche Schleife in Mathematica zu schreiben
"yperm = Table[0, {7},{5}];
Do[if[yvec[[i]] > 0, yperm[[i, yvec[[i]]]] = 1, yperm[[i, 1]] = 0], {i,
nobs}];"
so kommt leider nichts Ordentliches raus. Was mache ich falsch? Kann mir
irgendjemand weiterhelfen?
Herzlichen Dank im Voraus!
Christine Ebling
Hallo,
Jens hat natürlich völlig Recht, aber etwas typischer für Mathematica
wäre z.B.:
yvec = {1, 3, 0, 5, 2, 0, 4};
hilfsvec = Join[{1}, Table[0, {Max[yvec]}]];
yperm = (Rest[RotateRight[hilfsvec, #]] & /@ yvec);
yperm // TableForm
1 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 1
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
--
Peter Pein
Berlin