#include <complex.h> in C

Gast #1916212
Lesenswert?

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
int i;
2
for(i=0;(sizeof(I_comp))>0;i++)
3
{
4
Rx_complex=I_comp[i]+I*Q_comp[i];
5
}

Dann möchte ich für Rx_coplex die Phase berechnen...
#1916219
Lesenswert?

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
> int i;
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)
#1916227
Lesenswert?

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>.
#1916230
Lesenswert?

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)
#1916239
Lesenswert?

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).
#1916254
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren