>-----Original Message-----
>From: owner-demug@XXXXXXX.ch
>[mailto:owner-demug@XXXXXXX.ch] On Behalf Of Peter Pein
>Sent: Saturday, February 12, 2005 5:34 AM
>To: demug@XXXXXXX.ch
>Subject: Re: Probleme mit do-Schleife
>
>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
>
>
"typisch für Mathematica" ist natürlich gefährliche Rede,
ich hätte geschworen dass...
yperm = PadRight[{1}, Length[yvec], 0, # - 1] & /@ yvec
viel "typischer" ist als dein Vorschlag:
yperm = Module[{hilfsvec = PadRight[{1}, Length[yvec] + 1]},
Rest[RotateRight[hilfsvec, #]] & /@ yvec]
Aber dein Ding performt tatsächlich (deutlich!) besser,
hol's der Geier!
--
Hartmut Wolf