>-----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