Forum: Digitale Signalverarbeitung / DSP / Machine Learning Spektrum berechnen mit Mikrocontroller


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tobias P. (hubertus)


Lesenswert?

Hallo zusammen,
ich bin dabei, zu überlegen, ob es möglich ist, mit einem 
Mikrocontroller, z.B. STM32, mittels FFT ein Spektrum von DC bis 100kHz 
zu berechnen.
Ich möchte den Betrag berechnen und z.B. über RS232 ausgeben.
Als erstes ist mir aufgefallen, dass der interne Speicher für mein 
Vorhaben nicht ausreicht, wenn ich die kompletten 100kHz auf einmal 
verarbeiten möchte.

Es gab mal in den ca. 80er Jahren von HP den FFT Analyzer HP 3561A. Der 
konnte mit damaliger Technik ohne Probleme die 100kHz abdecken. Also 
habe ich mir angeschaut, wie das gemacht wurde. Das Handbuch ist leider 
nicht so ausführlich, aber es wird erwähnt, dass das Spektrum so 
berechnet wurde, dass die FFT nur über ein relativ schmales Band 
berechnet wird, und das Eingangssignal mittels digitalem IQ Mischer und 
-Filter in Bänder zerlegt wird, die dann jeweils der FFT gefüttert 
werden.

Mein R&S FSP Speki auf der Arbeit macht sowas ähnliches auch, wenn man 
den FFT Mode aktiviert. Da sieht man deutlich, dass er z.B. zuerst das 
Spektrum von 0..10MHz berechnet, dann das von 10MHz..20MHz und so 
weiter, also es wird Stückweise berechnet und dann auf dem Bildschirm 
zusammengesetzt.

Ich habe mir überlegt, ob das mit dem STM auch gehen würde. Also mein 
Eingangssignal zuerst auf I und Q mischen, sodass ich ein komplexes 
Signal habe, dieses dann Tiefpassfiltern und dann die FFT davon 
berechnen und ich so meine Ausgabe zusammensetzen kann.

Also im Prinzip möchte ich eigentlich sowas wie den HP3561 
nachempfinden, wo ich den Span und Center vorgeben kann und das Spektrum 
dann berechnet wird. Ich stehe aber grade ein wenig auf dem Schlauch,

a) ob das überhaupt geht (zu wenig Rechenpower?)
b) wie ich mischen und filtern muss.

Cool wäre z.B. wenn die FFT immer 1024 Punkte hat, und die 
Frequenzuflösung wird dann halt durch den Span bestimmt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Tobias P. schrieb:
> Als erstes ist mir aufgefallen, dass der interne Speicher für mein
> Vorhaben nicht ausreicht, wenn ich die kompletten 100kHz auf einmal
> verarbeiten möchte.

Das ist relativ: es ist einfach eine Frage, wie viele Punkte deine FFT 
haben soll – und es ist natürlich eine Frage, was für einen Controller 
du genau hast. "STM32" ist ja eine riesige Familie, mit einer 
entsprechend breiten Palette an RAM-Ausstattung.

Sei noch auf die ARM DSP Library hingewiesen, die sie fix und fertig 
bereitstellen. Da ist auch 'ne FFT drin.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Hier hat das mal einer angefangen, in langsamer und ohne vorheriges 
Mischen:

Beitrag "Ergebnisse einer FFT zusammen fassen"

Gruss
WK

von Tobias P. (hubertus)


Lesenswert?

Jörg W. schrieb:
> Tobias P. schrieb:
>> Als erstes ist mir aufgefallen, dass der interne Speicher für mein
>> Vorhaben nicht ausreicht, wenn ich die kompletten 100kHz auf einmal
>> verarbeiten möchte.
>
> Das ist relativ: es ist einfach eine Frage, wie viele Punkte deine FFT
> haben soll – und es ist natürlich eine Frage, was für einen Controller
> du genau hast. "STM32" ist ja eine riesige Familie, mit einer
> entsprechend breiten Palette an RAM-Ausstattung.
>
> Sei noch auf die ARM DSP Library hingewiesen, die sie fix und fertig
> bereitstellen. Da ist auch 'ne FFT drin.

naja, die 1024 Punkte waren ein Beispiel. Es sollten im Endeffekt schon 
mehr sein. 64k Punkte oder so. Da ist man mit einem STM32F407 am Ende.

Meine Idee war einfach, eine FFT fester Länge zu haben, und dann Center 
und Span einstellbar zu machen. Wenn die FFT eine feste Länge hat, dann 
ist natürlich auch die Frequenzauflösung dann durch den Span vorgegeben.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Tobias P. schrieb:
> naja, die 1024 Punkte waren ein Beispiel. Es sollten im Endeffekt schon
> mehr sein. 64k Punkte oder so

Das ist natürlich schon 'ne andere Nummer.

von Tobias P. (hubertus)


Lesenswert?

Jörg W. schrieb:
> Das ist natürlich schon 'ne andere Nummer.

irgendwo habe ich ein PDF gesehen, wo das einer gebaut hat. Mit externem 
RAM, damit man alle Samples speichern konnte. Die Performance war OK. 
Leider finde ich das Dok. nicht mehr.

von N. M. (mani)


Lesenswert?

Tobias P. schrieb:
> naja, die 1024 Punkte waren ein Beispiel. Es sollten im Endeffekt schon
> mehr sein. 64k Punkte oder so. Da ist man mit einem STM32F407 am Ende.

Dann nimm halt einen H7. Der STM32H743 auf dem Nucleo Board hat z.B. 1MB 
internen RAM.

Da könnte man bestimmt den internen ART Controller bzw die 2D DMA dafür 
missbrauchen.

von C-hater (c-hater)


Lesenswert?

Tobias P. schrieb:

> Als erstes ist mir aufgefallen, dass der interne Speicher für mein
> Vorhaben nicht ausreicht, wenn ich die kompletten 100kHz auf einmal
> verarbeiten möchte.

Ob der reicht oder nicht, hängt einzig von der gewünschten Auflösung ab. 
Wenn dir das nicht klar ist...

Das Problem ist: die Auflösung, die z.B. zwischen 0 und 100Hz sinnvoll 
ist, ist eine ganz andere als die, die zwischen 90 und 100kHz sinnvoll 
ist. Eine FFT kann aber nur eine Auflösung haben und beginnt immer bei 
0Hz.

> habe ich mir angeschaut, wie das gemacht wurde. Das Handbuch ist leider
> nicht so ausführlich, aber es wird erwähnt, dass das Spektrum so
> berechnet wurde, dass die FFT nur über ein relativ schmales Band
> berechnet wird, und das Eingangssignal mittels digitalem IQ Mischer und
> -Filter in Bänder zerlegt wird, die dann jeweils der FFT gefüttert
> werden.
> Da sieht man deutlich, dass er z.B. zuerst das
> Spektrum von 0..10MHz berechnet, dann das von 10MHz..20MHz und so
> weiter, also es wird Stückweise berechnet und dann auf dem Bildschirm
> zusammengesetzt.

Das kann so nicht sein. Entweder war's falsch dargestellt oder du hast 
das nicht richtig verstanden. Was wohl in Wirklichkeit passiert, ist: 
Fange bei einer geringen Endfrequenz an, mache einen entsprechenden 
Tiefpaß, dezimiere die Samples, rechne die FFT mit passender Auflösung 
für den Frequenzbereich.
Dann wähle eine höhere Endfrequenz, filtere und dezimiere erneut und 
rechne eine neue FFT (geringerer Auflösung). Benutze davon aber nur die 
Werte, die nicht bereits durch die vorigen berechnet wurden. Usw. usf. 
bis zur absoluten Endfrequenz.

Wäre allerdings ziemlich schwachsinnig implementiert. Jeder blickige 
Programmierer würde beim höchsten Frequenzbereich beginnen und nicht 
beim niedrigstens, weil man so beim Tiefpaß (und letztlich auch beim 
Speicher) massiv sparen kann...

von Ralph B. (rberres)


Lesenswert?

C-hater schrieb:
> Eine FFT kann aber nur eine Auflösung haben und beginnt immer bei
> 0Hz.

Erkläre mir mal bitte warum der HP3561 ( den ich auch besitze ) z.B. 
einen 77500Hz Signal so weit auflösen kann, das man die Seitenbänder der 
Sekundenimpulse sieht?

Da er konstant eine FFT von 1024 Punkte Länge macht, muss es einen 
anderen Trick geben, als bei 0Hz zu beginnen.

Oder er müsste die Mittenfrequenz von 77,5KHz und einen Span von ca. 
10Hz vorher digital auf 0-10Hz runtermischen.

Tobias P. schrieb:
> Es sollten im Endeffekt schon
> mehr sein. 64k Punkte oder so. Da ist man mit einem STM32F407 am Ende.

Warum wird eine so lange FFT benötigt?

Um in die X-Achse reinzoomen zu können, wie das leider die meisten 
FFT-Funktionen von Oszillografen macht?

Auf dem Bildschirm wird man diese Auflösung wohl nicht darstellen 
können.

Wenn du es genauso machst, wie der HP3561 dann genügt eine FFT von 1024 
Punkte Länge.

Ralph Berres

von C-hater (c-hater)


Lesenswert?

Ralph B. schrieb:

> Erkläre mir mal bitte warum der HP3561 ( den ich auch besitze ) z.B.
> einen 77500Hz Signal so weit auflösen kann, das man die Seitenbänder der
> Sekundenimpulse sieht?
>
> Da er konstant eine FFT von 1024 Punkte Länge macht, muss es einen
> anderen Trick geben, als bei 0Hz zu beginnen.

Nein, da gibt es keinen Trick. Eine FFT beginnt immer bei Null. Lt. 
Definition einer FFT. Das ist absolut unveränderbar. Passiert was 
anderes, ist's keine FFT mehr.

Allerdings gibt es natürlich etliche Tricks, trotzdem was anderes mit 
einer FFT zu machen. Z.B. den von mir dargestellten.

Es gibt aber auch noch andere, z.B. "mischen": kostet einen Bandpass und 
einen Mixer. Sprich: Teilbereiche des Spektrums werden auf eine 
niedrigere Frequenz herunter gemischt (quasi: eine Art "Basisfrequenz" 
wird subtrahiert) und das, was rauskommt, wird durch die FFT gejagt. Die 
fängt dann aber immer noch bei NULL an.

Der eigentliche Trick bei diesem Trick ist aber natürlich nicht die FFT. 
Sondern die effizente Implementierung von Bandpass und Mixer...

von He. (Gast)


Lesenswert?

Tobias P. schrieb:
> Da sieht man deutlich, dass er z.B. zuerst das
> Spektrum von 0..10MHz berechnet, dann das von 10MHz..20MHz und so
> weiter, also es wird Stückweise berechnet und dann auf dem Bildschirm
> zusammengesetzt.

Das müsste sich auch rein digital machen lassen. Am Ende ist es nur eine 
Frage, wie zeitlich fein die Abtastung erfolgt. Wenn du 16 
FFT-Berechnungen brauchst, setzt sich die update-Rate herab. Geht also 
mit dem langsamsten Controller. In preiswerten Oszilloskopen wird es 
auch nicht anders gemacht.

von Ralph B. (rberres)


Lesenswert?

Harald E. schrieb:
> In preiswerten Oszilloskopen wird es
> auch nicht anders gemacht.

in preiswerten Oszillografen geht die FFT immer von 0Hz bis zur halben 
Samplingfrequenz. Die Auflösung der FFT ist dann die 
Samplingfrequenz/Anzahl der FFT-Stützpunkte meist 1024

Will man einen Ausschnitt von der FFT, dann wird einfach die X-Achse 
gezoomt, mit dem Ergebnis das in dem X-Achsenauschnitt entsprechend 
weniger Stützstellen sind. Das heist die Auflösung wird bei einen 
Ausschnitt nicht entsprechend erhöht.

Wie C-hater schon bemerkt hat, müsste man, wenn man einen Ausschnitt 
betrachten will zuerst das Frequenzspektrum digital in der Form 
runtermischen, das die untere Frequenz des Ausschnittes wieder bei 0 Hz 
anfängt, und die Samplerate dann auf die doppelte Frequenz des zu 
betrachtentes Frequenzbandes eingestellt wird. Nur so bleibt die Anzahl 
der Stützstellen konstant.

Ich weis nicht ob heute die Oszillografen der gehobene Klasse das so 
realisieren, oder ob das Spektrumanalyzer der Premiumklasse vorbehalten 
bleibt.

Noch vor 20 Jahren war die Rechenpower in den Oszillografen dafür nicht 
ausreichend. Das dürfte sich aber eigentlich geändert haben.

Ralph Berres

von He. (Gast)


Lesenswert?

So kenne ich das auch. Digitales Runtermischen ist ja auch eher eher 
trivial.

von Tobias P. (hubertus)


Lesenswert?

Hallo,

genau, ich möchte auch gern einen Teil des Spektrums mit einer kleineren 
Auflösung betrachten können, genau wie beim HP 3561A. Mir war zuerst 
nicht klar, wie der das macht, aber nachdem ich nun das Handbuch gelesen 
habe, habe ich auch gesehen, dass er nur 1024 Punkte rechnet.

Rein vom Bauchgefühl her würde ich erwarten, dass das auf einem 180MHz 
ARM recht flüssig gehen müsste.

Das Zoomen im Spektrum macht der HP 3561A offenbar, indem da digital 
noch etwas runter gemischt und dezimiert wird, aber aus der Beschreibung 
im Handbuch wird mir nicht klar, wie genau das geht.

Im Endeffekt möchte ich "nur" die Center und Span von meiner FFT 
verändern. Wenn die FFT immer 1024 Punkte hat, kann man die Auflösung 
erhöhen, wenn man den Span oder die Samplingfrequenz ändert - sprich, 
die erfassten Samples dezimiert (die ADC Abtastrate sollte konstant 
bleiben).

Ralph B. schrieb:
> C-hater schrieb:
>> Eine FFT kann aber nur eine Auflösung haben und beginnt immer bei
>> 0Hz.
>
> Erkläre mir mal bitte warum der HP3561 ( den ich auch besitze ) z.B.
> einen 77500Hz Signal so weit auflösen kann, das man die Seitenbänder der
> Sekundenimpulse sieht?
>
> Da er konstant eine FFT von 1024 Punkte Länge macht, muss es einen
> anderen Trick geben, als bei 0Hz zu beginnen.
>
> Oder er müsste die Mittenfrequenz von 77,5KHz und einen Span von ca.
> 10Hz vorher digital auf 0-10Hz runtermischen.
>
> Tobias P. schrieb:
>> Es sollten im Endeffekt schon
>> mehr sein. 64k Punkte oder so. Da ist man mit einem STM32F407 am Ende.
>
> Warum wird eine so lange FFT benötigt?
>
> Um in die X-Achse reinzoomen zu können, wie das leider die meisten
> FFT-Funktionen von Oszillografen macht?
>
> Auf dem Bildschirm wird man diese Auflösung wohl nicht darstellen
> können.
>
> Wenn du es genauso machst, wie der HP3561 dann genügt eine FFT von 1024
> Punkte Länge.
>
> Ralph Berres

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Hier gibt es einen langen Bericht mit Fotos und Plots zum HP3561A:
https://oe2bcl.info/website/3561a/hp3561a.html

Mit Magnetblasenspeicher, die gab es nicht lange. In der Firma hatten 
wir in einem Anritsu Spektrumanalyzer bis 30 MHz auch einen. Darin 
arbeiteten (wenn ich mich recht erinnere) 6 Mikroprozessoren 6502. 
MS420K hieß der:
https://www.eevblog.com/forum/testgear/just-finished-anritsu-ms420k-network-spectrum-analyzer-restoration/
links unten der Einschub für den Blasenspeicher, sozusagen ein Vorläufer 
des USB-Stick.

: Bearbeitet durch User
von Ralph B. (rberres)


Lesenswert?

Ralph B. schrieb:
> Erkläre mir mal bitte warum der HP3561 ( den ich auch besitze ) z.B.
> einen 77500Hz Signal so weit auflösen kann, das man die Seitenbänder der
> Sekundenimpulse sieht?

Ich habe gerade festgestellt, das ich mich korrigieren muss.
Ich besitze nicht denHP3561 sondern den HP3562. Das ist eine 2Kanal 
Version

Sorry!!

Ralph Berres

von Tobias P. (hubertus)


Lesenswert?

Christoph db1uq K. schrieb:
> Hier gibt es einen langen Bericht mit Fotos und Plots zum HP3561A:
> https://oe2bcl.info/website/3561a/hp3561a.html
>

Hallo Christoph

ja diesen Bericht kenne ich, so bin ich überhaupt erst auf dieses Gerät 
gekommen ;-) leider wird mir aus der Prosabeschreibung auch noch nicht 
ganz klar, WIE genau da die ADC-Samples gemischt und gefiltert werden.

Ich habe mir in Matlab mal selber etwas zusammen geschustert. Ist es so 
einfach?

* ADC-Samples mit cos und sin multiplizieren, die Frequenz ist dabei die 
Center-Frequenz der Anzeige. So erhält man dann die komplexwertigen 
Samples.
* Wenn Span < 100 kHz, die Samples entsprechend dezimieren.
* Die komplexwertigen Samples durch die FFT jagen.

Ich habe dann festgestellt, dass der Output der FFT die verkehrte 
Reihenfolge der Frequenzen hat. Mit fftshift() lässt sich das 
korrigieren, bin aber nicht ganz sicher, weshalb es den Shift wirklich 
braucht. fftshift tauscht die obere und die untere Hälfte des Spektrums 
(reines Umordnen der Samples).

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Tobias P. schrieb:
> * Wenn Span < 100 kHz, die Samples entsprechend dezimieren.

Wie man hier sehen kann:
Beitrag "Wie sauber samplerate vervierfachen"

ist das mit der Interpolation ja schon so eine Sache, bei der viele 
Leute viel im Brei ruehren "koennen". Und genauso ist's mit der 
Dezimation.

Also: ja, prinzipiell kann das so funktionieren wie du dir's vorstellst. 
En Detail wird's halt ein bisschen laenger dauern, bis es das 
tatsaechlich auch tut. Ist aber nicht unmoeglich.

Gruss
WK

von Roland F. (rhf)


Lesenswert?

Hallo,
Tobias P. schrieb:
> Es gab mal in den ca. 80er Jahren von HP den FFT Analyzer HP 3561A...
> Das Handbuch ist leider nicht so ausführlich, aber es wird erwähnt,
> dass das Spektrum so berechnet wurde, dass die FFT nur über ein
> relativ schmales Band berechnet wird, und das Eingangssignal mittels
> digitalem IQ Mischer und -Filter in Bänder zerlegt wird, die dann
> jeweils der FFT gefüttert werden.

Es gibt von HP eine (deutsche) Schrift zu diesem Thema:
"Grundlagen der dynamischen Signalanalyse, Application Note 243"
Da ist erklärt wie so was funktioniert.

Unter
https://www.hpmemoryproject.org/an/pdf/an_243.pdf
gibt das Dokument in der englischen Version. Ich weiß jetzt nicht ob es 
das ist was du suchst, aber vielleicht hilft es dir ja weiter.

rhf

von Ralph B. (rberres)


Lesenswert?

in dem Servicemanual vom HP3562 sind die Funktionen sämtlicher 
Baugruppen genau bis ins Detail beschrieben. Vielleicht hilft das ja zum 
Verständnis des HP3561

Ralph Berres

von Tobias P. (hubertus)


Lesenswert?

Einen HP 3562A gäbe es auf ebay. Würde ich gerne kaufen, aber das Gerät 
ist einfach zu schwer und eigentlich auch zu teuer, dafür, dass ich es 
nur fürs private Basteln brauche und das nicht mal täglich.

von Ralph B. (rberres)


Lesenswert?

Tobias P. schrieb:
> inen HP 3562A gäbe es auf ebay. Würde ich gerne kaufen, aber das Gerät
> ist einfach zu schwer und eigentlich auch zu teuer, dafür, dass ich es
> nur fürs private Basteln brauche und das nicht mal täglich.

1900€ würde ich auch nicht ausgeben wollen. Ich habe damals 350€ bezahlt 
und nochmal soviel für die ganzen Manuals.

Das Gerät ist, was Bedienung betrifft, auch arg gewöhnungsbedürftig. 
Nichts für mal schnell eben messen.

Aber es kann einen erstaunlich kleinen Span auch bei hohen Frequenzen 
von knapp 100KHz, ohne das man Einschränkungen der Anzahl von 
Stützstellen hinnehmen muss.

Falls du dir doch so ein Gerät anlachen solltest, ich habe noch einen 
kompletten Satz Unterlagen von Rainer Förtig.

Mittlerweile habe ich die Originalunterlagen bekommen.

Ralph Berres

von Tobias P. (hubertus)


Lesenswert?

Ralph B. schrieb:
> Aber es kann einen erstaunlich kleinen Span auch bei hohen Frequenzen
> von knapp 100KHz, ohne das man Einschränkungen der Anzahl von
> Stützstellen hinnehmen muss.

so wie ich das Messprinzip aus dem HP 3561A Handbuch verstanden habe, 
ist die Anzahl der Stützstellen immer gleich gross, oder?
Wie lange dauert die Messzeit bei kleinem Span, z.B. bei 1Hz Span?

Wäre schon gut, wenn man sich sowas vielleicht etwas vereinfacht selber 
bauen könnte. Wie gesagt schwebt mir ein Mikrocontroller vor, der das 
Messignal sampelt, meinetwegen die FFT rechnet und die Daten dann per 
USB zum PC schickt, als Anzeige. Klar kann man das mit Soundkarten, aber 
eigentlich ist das ja eine Zweckentfremdung.
Das coolste wäre natürlich wenn man eine eigene Anzeige noch realisieren 
könnte, z.B. mit einem Raspi, sodass man es als standalone gerät 
betreiben kann.
Theoretisch hätte der Raspi ja auch genug Dampf, um die FFT und alles 
gleich rechnen zu können, aber er hat auch kein gescheites Interface, um 
mit ca. 200 kHz ein Signal abtasten zu können.

von Ralph B. (rberres)


Angehängte Dateien:

Lesenswert?

Tobias P. schrieb:
> so wie ich das Messprinzip aus dem HP 3561A Handbuch verstanden habe,
> ist die Anzahl der Stützstellen immer gleich gross, oder?

Ja die Anzahl der Stützstellen ist konstant und unabhängig vom Span.

> Wie lange dauert die Messzeit bei kleinem Span, z.B. bei 1Hz Span?

Kann man ja ausrechnen. bei 1Hz Span und 1024 Stützstellen ist die 
Auflösung demnach knapp 1mHz also 1000 Sek.

Ich hänge mal das Datenblatt des 3562 dran.

Den HP3561 kenne ich nicht, wird aber ähnlich sein.

Ralph Berres

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>dass der Output der FFT die verkehrte Reihenfolge der Frequenzen hat
Liegt das einfach am falschen Seitenband des Demodulators? Durch die 
komplexe Mischung wird ja eines der beiden unterdrückt, da bleibt hier 
anscheinend nur die Kehrlage übrig.

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

Hier mal mein Matlab Cod, der von einem Signal die FFT rein "zoomt".
Es sind 3 Frequenzkomponenten enthalten, 1, 2 und 3 kHz. Der Center wird 
auf 2 kHz gesetzt und Span soll 4 kHz sein.
Dann kommt bei mir in Matlab das Bild im Anhang raus. Ich bin aber noch 
nicht ganz überzeugt, dass es richtig ist. Die Frequenzen stimmen nicht 
exakt.
1
% sampling freq
2
fs = 256e3;
3
4
% time
5
t = 0:1/fs:1;
6
7
% test signal
8
x = 10*sin(2*pi*1e3*t) + 0.1*sin(2*pi*2e3*t) + sin(2*pi*3e3*t) + randn(size(t));
9
10
% center and span of the fft
11
center = 2e3;
12
span = 4e3;
13
14
15
16
% complex down conversion
17
loi = cos(2*pi*center*t);
18
loq = sin(2*pi*center*t);
19
xc = loi.*x + 1i*loq.*x;
20
21
% lowpass
22
[b,a]=butter(5,center/128e3);
23
xc = filter(b,a,xc);
24
25
% decimation
26
xc = xc(1:256e3/span:end)
27
28
% take only 1024 samples
29
xc = xc(1:1024);
30
31
f = linspace(center-span/2, center+span/2, 1024);
32
33
plot(f, fftshift(db(fft(xc))))

von R. M. (n_a_n)


Angehängte Dateien:

Lesenswert?

Ich habe mir erlaubt den Original MatLab code zu kopieren und ein 
bisschen damit zu spielen.
Theoretisch wäre anstatt der IQ - Modulation auch eine Hilbert 
Transformation möglich. Dadurch könnte der Tiefpass entfallen.
Das fftshift'en ist auch nicht notwendig, aber die Verwendung davon habe 
ich nicht richtig kapiert.
Inwieweit das aber auf einem µC einen Vorteil bringt sei dahingestellt.
Jedenfalls sieht man schön die 20dB Unterschiede der 3 Spektallinien.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.