Moin,
für mein Programm bräuchte ich das complex.h. AVR-Studio sagt aber:
"...error: complex.h: No such file or directory". In den Foren habe ich
gelesen, dass complex.h nur mit CPP geht. Gibt es für C eine
Alternative?
Danke :-)
DK schrieb:> Ich habe zwei arrays I_comp und Q_comp, die ich nun zusammen sätzen will> um einen komplexen Wert zu bekommen. Das wollte ich so machen:>>
1
>inti;
2
>for(i=0;(sizeof(I_comp))>0;i++)
3
>{
4
>Rx_complex=I_comp[i]+I*Q_comp[i];
5
>}
6
>
In C++ würde das so gehen. In C geht das so sicher nicht.
>> Dann möchte ich für Rx_coplex die Phase berechnen...
Und wozu brauchst du da jetzt genau den Datentyp complex?
Die Phase berechnen, das ist eine Formel, die du genausogut auch selber
hinschreiben kannst. Dazu brauchst du doch keinen vordefinierten
Datentyp complex.
(Man kann sich natürlich auch selber einen bauen mitsamt den zugehörigen
Supportfunktionen. Ist ja schliesslich auch nur eine Struktur mit 2
Member.
Wenn man unbedingt will und es im Programm noch meherer komplexe
Berechnungen gibt)
Karl heinz Buchegger schrieb:> Die Phase berechnen, das ist eine Formel, die du genausogut auch selber> hinschreiben kannst.
dafür nicht, ich wollte aber trotzdem wissen, ob man es benutzen kann,
falls es nötig wird.
In Standard-C gibt es tatsächlich kein complex.h.
In C++ gibt es eines, das heißt dann aber nicht complex.h,
sondern nur complex.
Mit dem avr-gcc kann man nun zwar C++ (rein sprachseitig)
kompilieren, allerdings ist der Umfang der Bibliothek
weit vom Standard entfernt.
complex ist dann m.W. auch nicht dabei. Allerdings könnte
man das mit vertretbarem Aufwand in C++ nachrüsten.
Der Vorteil der C++-Version der komplexen Zahlen wäre,
daß dort complex nur ein template ist, dessen Grundtyp
für den Imaginär- und Realteil als Parameter frei
gewählt werden kann. D.h. man kann complex<float>
nehmen oder sogar complex<meintollerfestkommatyp>.
DK schrieb:> Karl heinz Buchegger schrieb:>> Die Phase berechnen, das ist eine Formel, die du genausogut auch selber>> hinschreiben kannst.>> dafür nicht,
Warum nicht?
Auch das C++ complex kann ja nicht zaubern, sondern muss das berechnen.
(Das ist simple Trigonometrie im rechtwinkeligen Dreieck. Wenn du nur
ein bischen Ahnung von komplexen Zahlen hast, wüsstest du das)
Karl heinz Buchegger schrieb:> Warum nicht?> Auch das C++ complex kann ja nicht zaubern, sondern muss das berechnen.
:-) ich meinte, dass ich das complex.h für die Phasenberechnung sicher
nicht brauche. Ich weis schon was komplexe Rechnung heißt.
DK schrieb:> Karl heinz Buchegger schrieb:>> Warum nicht?>> Auch das C++ complex kann ja nicht zaubern, sondern muss das berechnen.>> :-) ich meinte, dass ich das complex.h für die Phasenberechnung sicher> nicht brauche. Ich weis schon was komplexe Rechnung heißt.
OK. Tschuldigung. War dann Misverständnis meinerseits.
(Ich bin schon paranoid - wenn es um vermeintlich einfache Fragen geht)
In C wirst du dir dann komplexe Zahlen selber machen müssen (oder im Web
was suchen).
Karl heinz Buchegger schrieb:> OK. Tschuldigung. War dann Misverständnis meinerseits.>> In C wirst du dir dann komplexe Zahlen selber machen müssen (oder im Web> was suchen).
Kein Problem, danke sehr!
Man kann in C komplexe Zahlen z.B. als struct zweier floats definieren.
Was aber keinesfalls geht, ist die Verwendung der "normalen" Operatoren
wie +,-,*,/ . Dies wird bei C++ durch das Überladen dieser Operatoren
erreicht, also einem Mechanismus, der in C nicht existiert.
Eine C-Funktion kann aber auch einen struct als Ergebnis zurückgeben.
(Nutze ich selbst aber nie). Damit könnte man mit eine Art "polnischer
Notation" sich durchaus Ausdrücke bauen.