DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

RE: Variable und Variablenname in einer Funktion

>-----Original Message-----
>From: Schlosser Reinhard, Prof. Dr.
>[mailto:reinhard.schlosser@XXXXXXX.de]
>Sent: Friday, March 21, 2003 8:30 AM
>To: 'dmug@XXXXXXX.ch'
>Subject: AW: Variable und Variablenname in einer Funktion
>
>
>Danke für den Tips. Ich habe das Problem wohl zu sehr vereinfacht.
>
>Also hier das eigentliche Problem
>
>p[X_,Y_]:=TableForm[{Re[X],Im[X],Abs[X],180/Pi
>Arg[X]},TableHeadings\[Rule]{{"Re","Im","Abs","Arg"},Y}]
>
>p übergebe ich eine Liste von komplexen Zahlen mit 
>Variablennamen z. B. U1,
>I1, Z1, U2, I2, Z2
>
>p[{U1,I1,Z1,U2,I2,Z2},{"U1","I1","Z1","U2","I2","Z2"}]
>
>in der ausgegebenen Tabelle sollen die Variablennamen U1, I1, 
>Z1, U2, I2, Z2
>im Tabellenkopf erscheinen.
>
>Bei 6 Variablen ist obige Lösung natürlich akzeptabel,
>bei 20 Variablen oder mehr bzw. ständig veränderten Variablennamen,
>ist das Eingeben der Strings mühsam.
>
>Wie muß ich p definieren, damit der Aufruf
>
>p[{U1,I1,Z1,U2,I2,Z2}],
>
>das gewünschte Ergebnis liefert?
>
>Mit freundlichen Gruessen / Best Regards
>Prof. Dr.-Ing. Reinhard Schlosser
>
>Fachhochschule Deggendorf
>Fachbereich Elektrotechnik und Medientechnik
>Edlmairstrasse 6 + 8
>94469 Deggendorf
>Tel 0991-3615-515
>Fax 0991-3615-599
>reinhard.schlosser@XXXXXXX.de
>http://www.fh-deggendorf.de
>
>> -----Ursprüngliche Nachricht-----
>> Von: Thomas Hahn [SMTP:hahn@XXXXXXX.de]
>> Gesendet am: Donnerstag, 20. März 2003 17:30
>> An:  Schlosser Reinhard, Prof. Dr.
>> Cc:  'dmug@XXXXXXX.ch'
>> Betreff:     Re: Variable und Variablenname in einer Funktion
>> 
>> > 
>> > z = 2; f[z,"z"]
>> > 
>> > Wie muß ich die Funktion definieren, so daß ich ihr nicht 
>den String
>> > übergeben muß?
>> 
>> Attributes[f] = {HoldAll}
>> 
>> f[s_] := s Block[{s}, ToString[s]]
>> 
>> 
>> Gruß,
>> 
>> Thomas Hahn
>
>

Ich schlage vor:

In[1]:= {U1, I1, Z1, U2, I2, Z2} = Table[Random[Complex], {6}]
Out[1]=
{0.17294028211099916 + 0.8823417058235242*I, 
 ...,
 0.6327338048961315 + 0.3985773982818557*I}



In[2]:= Attributes[p] = HoldAll;

In[3]:= p[cslist_List] := 
  TableForm[cslist, 
    TableHeadings -> {Extract[Hold[cslist], {1, #} & /@
Range[Length[cslist]],
           HoldForm]}]

In[4]:= p[{U1, I1, Z1, U2, I2, Z2}]
Out[4]//TableForm=
  U1    0.17294028211099916 + 0.8823417058235242 \[ImaginaryI]
  ...
  Z2    0.6327338048961315 + 0.3985773982818557\ \[ImaginaryI]


oder auch:

In[6]:= p[cslist_List] := 
  TableForm[cslist, 
    TableHeadings -> {ReleaseHold[
          Map[HoldForm, Hold[cslist], {2}]], Automatic}]


vielleicht genügt auch:

In[9]:= p[cslist_List] := 
  Transpose[{Map[HoldForm, Hold[cslist], {2}] // ReleaseHold, cslist}] // 
    TableForm


--
Hartmut Wolf


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html