Bandbegrenztes Rauschsignal...

  • Thread starter astroel...@t-online.de
  • Start date
A

astroel...@t-online.de

Guest
Für eine Anwendung in der elektronischen Musik möchte ich ein Signal y=f(t) erzeugen, das im Frequenzbereich wie ein Rechteck aussieht. Also ein Signal, das nur Frequenzen innerhalb eines bestimmten Frequenzbandes enthält.

Betrachten wir zum Beispiel den Zeitbereich von einer Sekunde, und summieren fünf Sinuswellen mit gleicher Amplitude auf, mit den Frequenzen 50Hz, 51Hz, 52Hz, 53Hz und 54Hz. Das Summensignal sieht so aus:
http://www.astro-electronic.de/sinus1.png

Die Periodendauer von einer Sekunde ist klar erkennbar und das Signal hört sich ganz und gar nicht wie bandbegrenztes Rauschen an. Der Spitzenwert des Signals entspricht ungefähr der Amplitude der einzelnen Sinuswellen multiplizert mit deren Anzahl, in diesem Beispiel 5.

Als zweites Beispiel habe ich jede der fünf Sinuswellen mit einer zufällig gewählten Phasenverschiebung versehen. Dann sieht das so aus:
http://www.astro-electronic.de/sinus2.png

Das hört sich schon viel besser an. Die Periodendauer von einer Sekunde ist im Zeitbereich nicht mehr klar erkennbar (und auch nicht mehr so deutlich hörbar), und der Spitzenwert des Summensignals ist kleiner geworden.

Nun meine Frage:
Kann man irgendwie \"optimale\" Phasenverschiebungen für die Sinuswellen berechnen, so dass der Spitzenwert des Summensignals minimal wird?

Gruß
Michael
 
On 05/03/2023 09:39, astroel...@t-online.de wrote:
Für eine Anwendung in der elektronischen Musik möchte ich ein Signal y=f(t) erzeugen, das im Frequenzbereich wie ein Rechteck aussieht. Also ein Signal, das nur Frequenzen innerhalb eines bestimmten Frequenzbandes enthält.

Betrachten wir zum Beispiel den Zeitbereich von einer Sekunde, und summieren fünf Sinuswellen mit gleicher Amplitude auf, mit den Frequenzen 50Hz, 51Hz, 52Hz, 53Hz und 54Hz. Das Summensignal sieht so aus:
http://www.astro-electronic.de/sinus1.png

Die Periodendauer von einer Sekunde ist klar erkennbar und das Signal hört sich ganz und gar nicht wie bandbegrenztes Rauschen an. Der Spitzenwert des Signals entspricht ungefähr der Amplitude der einzelnen Sinuswellen multiplizert mit deren Anzahl, in diesem Beispiel 5.

Als zweites Beispiel habe ich jede der fünf Sinuswellen mit einer zufällig gewählten Phasenverschiebung versehen. Dann sieht das so aus:
http://www.astro-electronic.de/sinus2.png

Das hört sich schon viel besser an. Die Periodendauer von einer Sekunde ist im Zeitbereich nicht mehr klar erkennbar (und auch nicht mehr so deutlich hörbar), und der Spitzenwert des Summensignals ist kleiner geworden.

Nun meine Frage:
Kann man irgendwie \"optimale\" Phasenverschiebungen für die Sinuswellen berechnen, so dass der Spitzenwert des Summensignals minimal wird?

Eine Fourier-Reihe, die ein perfektes Rechteck ergibt, hat unendlich viele Sinus-Signale.
Die jeweiligen Phasenverschiebungen sind darin enthalten.
Was sich /am besten/ anhört, weiß ich nicht.


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/math87.htm http://www.schellong.de/htm/dragon.c.html
 
Helmut Schellong schrieb am Mittwoch, 3. Mai 2023 um 11:18:51 UTC+2:
Eine Fourier-Reihe, die ein perfektes Rechteck ergibt, hat unendlich viele Sinus-Signale.
Die jeweiligen Phasenverschiebungen sind darin enthalten.

Das ist natürlich richtig. Da ich das Signal mit einem Microcontroller erzeugen möchte, indem ein Array ausgelesen wird, muss das Signal eine endliche Periodendauer haben, zum Beispiel eine Sekunde. Dann kann das Signal aber nur eine endliche Anzahl von Frequenzen enthalten, nämlich Vielfache von 1Hz. Wenn andere Frequenzen enthalten wären, dann wäre am Ende der Tabelle ein Sprung (der unerwünschte Frequenzanteile enthält). Die Frage ist, wie man die Phasenlage der einzelnen Frequenzen wählen muss, damit sich das Signal möglichst \"gut\" oder \"zufällig\" anhört.

Gruß
Michael
 
\"astroel...@t-online.de\" wrote:
Für eine Anwendung in der elektronischen Musik möchte ich ein Signal y=f(t) erzeugen,
das im Frequenzbereich wie ein Rechteck aussieht. Also ein Signal, das nur Frequenzen
innerhalb eines bestimmten Frequenzbandes enthält.

Scharf begrenztes Signal im Frequenzbereich bedeutet langes Signal im Zeitbereich.


Betrachten wir zum Beispiel den Zeitbereich von einer Sekunde, und summieren
fünf Sinuswellen mit gleicher Amplitude auf, mit den Frequenzen 50Hz, 51Hz, 52Hz, 53Hz und 54Hz.
Das Summensignal sieht so aus:
http://www.astro-electronic.de/sinus1.png

Die Periodendauer von einer Sekunde ist klar erkennbar und das Signal
hört sich ganz und gar nicht wie bandbegrenztes Rauschen an. Der Spitzenwert des
Signals entspricht ungefähr der Amplitude der einzelnen Sinuswellen multiplizert mit
deren Anzahl, in diesem Beispiel 5.

Als zweites Beispiel habe ich jede der fünf Sinuswellen mit einer zufällig gewählten
Phasenverschiebung versehen. Dann sieht das so aus:
http://www.astro-electronic.de/sinus2.png

Sieht alles nicht wie Rauschen aus.

Das hört sich schon viel besser an. Die Periodendauer von einer Sekunde ist im Zeitbereich
nicht mehr klar erkennbar (und auch nicht mehr so deutlich hörbar), und der Spitzenwert des
Summensignals ist kleiner geworden.

Nun meine Frage:
Kann man irgendwie \"optimale\" Phasenverschiebungen für die Sinuswellen berechnen,
so dass der Spitzenwert des Summensignals minimal wird?

Auch da kommt kein Rauschsignal heraus.

Die Loesung ist das gewuenschte Spektrum zu erzeugen, mittels Zufallsgenerator und
es mittels diskreter Fourier Ruecktransformation in ein Zeitsignal zu verwandeln.

https://www.statlect.com/matrix-algebra/discrete-Fourier-transform-of-a-real-signal

Man muss nur die Regel unter \"conjugate symmetry\" beachten.
N sollte eine Zweierpotenz sein, je groesser man N waehlt umso genauer wird es.
 
Carla Schneider schrieb am Mittwoch, 3. Mai 2023 um 12:02:11 UTC+2:
Die Loesung ist das gewuenschte Spektrum zu erzeugen, mittels Zufallsgenerator und
es mittels diskreter Fourier Ruecktransformation in ein Zeitsignal zu verwandeln.

Das Spektrum besteht aus Real- und Imaginärteil, oder aus Betrag und Phase.
Wie der Betrag aussehen soll ist klar. Aber wie muss die Phase aussehen?
Man kann die Phase per Zufallsgenerator berechnen. Das habe ich schon ausprobiert.
Dabei könnte sich aber auch ein Signal ergeben, dass sich nicht gut anhört weil man die 1s Periode zu deutlich hören kann, siehe erstes Beispiel.
Ich bin noch nicht davon überzeugt dass es der beste Weg ist, die Phase per Zufallsgenerator zu berechnen. Vielleicht gibt es einen besseren Weg?

Gruß
Michael
 
Carla Schneider <carla_sch@protonmail.com> writes:
\"astroel...@t-online.de\" wrote:
Als zweites Beispiel habe ich jede der fünf Sinuswellen mit einer zufällig gewählten
Phasenverschiebung versehen. Dann sieht das so aus:
http://www.astro-electronic.de/sinus2.png
Sieht alles nicht wie Rauschen aus.

Die Addition von Sinus-Funktionen zur Erzeugung von Rauschen
mit kontrollierter Frequenz-Charakteristik wird aber auch auf
manchen Web-Seiten beschrieben, so etwa auf \"Noise Functions
and Map Generation\" (von Amit Patel?).

Dabei ist es - laut der Web-Seite - tatsächlich wichtig,
daß jeder Summand eine zufällige Phasenverschiebung erhält.

Wenn man zwei Aufnahmen von weißem Rauschen hintereinander
schneidet, sollte dies keine zusätzlichen Störungen einführen,
da ja ohnehin jeder Wert zufällig sein soll. Bei anderen
Arten von Rauchen könnten aber vermutlich tatsächlich
zusätzliche Frequenzanteile entstehen, die unerwünscht sind.
Man kann aber wenigsten die grobe Störung eines \"Klicks\"
vermeiden, wenn man dort aneinanderschneidet, wo die
Amplitude gleich ist (und am besten auch die Steigung).
 
\"astroel...@t-online.de\" wrote:
Carla Schneider schrieb am Mittwoch, 3. Mai 2023 um 12:02:11 UTC+2:
Die Loesung ist das gewuenschte Spektrum zu erzeugen, mittels Zufallsgenerator und
es mittels diskreter Fourier Ruecktransformation in ein Zeitsignal zu verwandeln.

Das Spektrum besteht aus Real- und Imaginärteil, oder aus Betrag und Phase.
Wie der Betrag aussehen soll ist klar. Aber wie muss die Phase aussehen?

Real und Imaginaerteil per Zufallszahl zwischen -1 und +1 berechnen.
Das Spektrum muss doppelt drin sein d.h. bei n=1024 muss es in die ersten 512
und gespiegelt in die zweiten 512, wobei da der imaginaerteil dann das negative
von dem im ersten ist. Das Rechteckfenster muss entsprechend auch 2 mal rein.


Man kann die Phase per Zufallsgenerator berechnen. Das habe ich schon ausprobiert.
Dabei könnte sich aber auch ein Signal ergeben, dass sich nicht gut anhört weil man die 1s Periode zu deutlich hören kann, siehe erstes Beispiel.
Ich bin noch nicht davon überzeugt dass es der beste Weg ist, die Phase per Zufallsgenerator zu berechnen.
Vielleicht gibt es einen besseren Weg?

Wenn du kein Rauschen willst, sondern ein besseres Signal, auf jeden Fall,
nur wie ist \"besser\" in diesem Fall definiert ?
 
Carla Schneider schrieb am Mittwoch, 3. Mai 2023 um 14:46:14 UTC+2:
> Real und Imaginaerteil per Zufallszahl zwischen -1 und +1 berechnen.

Das wäre ein Quadrat in der komplexen Ebene. Es muss aber ein Kreis sein. Beim Quadrat hätten wir je nach Phasenwinkel unterschiedlich große Beträge, maximal 1 bei Phasenwinkel 0° und maximal 1.41 bei Phasenwinkel 45°. Was dazu führt dass der Phasenwinkel 45° mit höherer Wahrscheinlichkeit vorkommen würde als der Phasenwinkel 0°.


Wenn du kein Rauschen willst, sondern ein besseres Signal, auf jeden Fall,
nur wie ist \"besser\" in diesem Fall definiert ?

Das ist eine gute und berechtigte Frage. \"besser\" ist wenn man die Wiederholfrequenz des periodischen Signals (ca. 1Hz) nicht gut heraushören kann. Das ist möglicherweise gleichbedeutend mit einen möglichst kleinen Spitzenwert. Siehe erstes Beispiel, der Spitzenwert ist 5 und die Wiederholfrequenz ist deutlich hörbar. So soll es nicht sein.

Gruß
Michael
 
ram@zedat.fu-berlin.de (Stefan Ram) writes:
Die Addition von Sinus-Funktionen zur Erzeugung von Rauschen
mit kontrollierter Frequenz-Charakteristik wird aber auch auf
manchen Web-Seiten beschrieben, so etwa auf \"Noise Functions
and Map Generation\" (von Amit Patel?).

Inzwischen habe ich ein Computerprogramm geschrieben, das einen
hörbaren Klang erzeugt.

In der letzten Schleife werden 10 Frequenzen zu einem Grundton
addiert, deren Frequenz jeweils in 1,1-, 1,2-, 1,3- usw. -faches
des Grundtons ist. (Bzw.: n Frequenzen, deren Frequenz jeweils
ein (1+(i/n))-faches des Grundtones (440 Hz) ist.)

Man hört dann einen Klang mit einer Amplitudenmodulation,
einer Art von Schwebung. Hier spielt vermutlich die Identität

sin x + sin y = 2 sin( ( x + y )/ 2 ) cos( ( x - y )/ 2 )

eine Rolle, bei der die Schwebungsfrequenz \"( x - y )/ 2\" ist.

Die Additions eines Phasenversatzes (\"1 * self.shift[ i ]\" unten)
ergibt hier keinen deutlich hörbaren Unterschied.

class instrument2: # for noise experiments
def __init__( self ):
self.n = 10
self.shift =[ 0 ]* self.n
for i in range( self.n ):
self.shift[ i ]= random.random() * 2 * pi
def instrument_of( self, frame_number ):
current_angle = self.frequency_multiplier * frame_number
frame_value = 0
for i in range( self.n ):
f = 1 + i / self.n
frame_value += \\
sin( f * current_angle + 1 * self.shift[ i ])/self.n
return frame_value

(Dieser Python-Quelltext stammt aus einem größeren Python-Programm
für Windows, das auf Anfrage erhältlich ist.)

Anders ist es, wenn ich 100 Frequenzen verwende, also oben
\"self.n\" = 100 setze. Dann ergibt sich mit \"+ 0 * self.shift[ i ]\"
eine Art von Ton mit einer Art von Schwebung, aber bei
zufälligen Versatzen mit \"+ 1 * self.shift[ i ]\" schon eher
ein Rauschen, das aber noch eine hörbare Schwebung hat und
wie ein Ufo aus der Fernsehserie \"Ufo\" klingt.

Bei \"self.n = 1000\" dauert die Berechnung des Klangs eine Weile. Dann
höre ich bei kohärenten Sinus-Summanden (\"0 * ...\") einen Ton, der wie
beim Zupfen einer Seite schnell leiser wird, und dann wieder langsam
lauter (also eine Art von Schwebung mit sehr niedriger Frequenz);
bei Inkohärenz aber etwas, das schon mehr einem Rauschen ähnelt, das
aber immer noch so eine Art Schwebung (Amplituden-Modulation) hat,
aber weniger als zuvor. Es klingt etwas wie kräftiger Wind, der
Geräusche an Häuserkanten erzeugt und man hat den Eindruck,
also ob das Signal durch einen Bandpass gegangen sein könnte.

Für n = 10000 habe ich jetzt keine Zeit mehr, aber es deutet
sich für mich an, daß dies dann bei Inkohärenz ein Rauschen
mit gleichmäßigerer Lautstärke ergeben könnte.
 
Für eine Anwendung in der elektronischen Musik möchte ich
ein Signal y=f(t) erzeugen, das im Frequenzbereich wie ein
Rechteck aussieht. Also ein Signal, das nur Frequenzen
innerhalb eines bestimmten Frequenzbandes enthält.

Wie schon geschrieben wurde, hängt die Flankensteilheit
dieses Rechtecks u.a. von der Länge Deines Zeitsignals ab.
Beliebig \"rechteckig\" wird also mit einem Signal nicht gehen,
dessen Dauer begrenzt ist.

Du könntest aber ein Weißes Rauschen nehmen - generiert als
Pseudo-Zufallszahlenfolge mit z.B. einem Maximalfolgen-
generator oder durch ein digitalisiertes analoges, \"echtes\"
Rauschsignal - und das dann z.B. mit einem linearphasigen
Filter (FIR-Filter) auf die gewünschte Bandbreite filtern.

Je nach Eckfrequenzen kann ein pasendes FIR-Filter zwar
aufwändig werden, wenn Du aber nur die Abtastwerte des
Ausgangssignals in einer Tabelle speichern willst, macht
das (und eine ggf. spürbare Latenz) ja eigentlich wenig
bis gar nichts.

Viele Grüße

Dieter
 
\"astroel...@t-online.de\" wrote:
Helmut Schellong schrieb am Mittwoch, 3. Mai 2023 um 11:18:51 UTC+2:
Eine Fourier-Reihe, die ein perfektes Rechteck ergibt, hat unendlich viele Sinus-Signale.
Die jeweiligen Phasenverschiebungen sind darin enthalten.

Das ist natürlich richtig. Da ich das Signal mit einem Microcontroller erzeugen möchte,

Der µC kann doch auch erstmal bloß Rechteck.
Du könntest einen Pseudo-Zufallgenerator programmieren.
Das sind ein paar Schieberegister und ein paar Xorverknüpfungen.
Ich hatte sowas mal gemacht. Rauscht wie ein Wasserfall.

MfG
hjs
 
Zur korrekten Anzeige dieses Beitrags wird die treue Wiedergabe
aller Leerzeichen und eine dicktengleiche Schrift benötigt!

ram@zedat.fu-berlin.de (Stefan Ram) writes:
Für n = 10000 habe ich jetzt keine Zeit mehr, aber es deutet
sich für mich an, daß dies dann bei Inkohärenz ein Rauschen
mit gleichmäßigerer Lautstärke ergeben könnte.

Hier sieht man bei 1000 addierten Sinusfunktionen in einer
Oktave einmal die Situation bei kohärenter Addition und
10 Schwingungen der kleinsten Frequenz der Summe:

*





*


*
* * *
* ** *** ***** ***** ***** ***** **** ***** ***** **
* * * * ** ** *** *** ** **
* * *
*


*
*


und einmal die nicht-kohärente Situation (mit zufälligen Phasen):

*



* *
*
*
* * *
* * * * *
* * * * * ** *
* * * * * * * * * *
* * ** * * * *
* * * * *
* * * * * * *
** * * * * * *
* * * *
* * *
* *

*
** *



from math import sin, pi
from random import random

n = 1000
k = False # Kohärenz?

shift =[ 0 ]* n
for i in range( n ):
shift[ i ]= random()* 2 * pi

X = 72
Y = 24
H = Y/2
h = H - 1
screen =[ [] ]* Y
value =[ [] ]* X
max = 0

for row in range( Y ):
screen[ row ] =[ \' \' ]* X

for col in range( X ):
x = col / X * 2 * pi * 10
y = 0
for i in range( n ):
y += sin( x *( 1 + i/n ) +( 1 - k )* shift[ i ])
value[ col ]= y
if y > max: max = y
if -y > max: max = -y

for col in range( X ):
y = value[ col ]/ max
row = h * y + H
row = int( row )
col = int( col )
if row < 0: row = 0
if col < 0: col = 0
if row > Y - 1: row = Y - 1
if col > X - 1: col = X - 1
screen[ row ][ col ]= \'*\'

for row in range( Y - 1, -1, -1 ):
print( \'\'.join( screen[ row ]))
 
Am 03.05.23 um 09:39 schrieb astroel...@t-online.de:> Für eine Anwendung
in der elektronischen Musik möchte ich ein Signal y=f(t) erzeugen, das
im Frequenzbereich wie ein Rechteck aussieht. Also ein Signal, das nur
Frequenzen innerhalb eines bestimmten Frequenzbandes enthält.
Kein Problem.
Nimm eine hinreichend große Zweierpotenz an Samples, nach der sich das
Signal wiederholen darf, sowas wie 65536 oder 232144. (Das begrenzt auch
die Bandbreite nach unten.)
Dann erzeugst du das Zielsignal in der Frequenzdomäne. Also Amplitude(f)
nach Wunsch und Phase = Zufallszahl. Die Polarkoordinaten in komplexe
Zahlen umwandeln und inverses FFT darüber laufen lassen. Ergebnis
geeignet normalisieren und fertig. BTDT.

Wenn man die Amplitude noch mit f^kappa gewichtet, bekommt man auch rosa
Rauschen (kappa = -.5) oder beliebige andere Energieverteilungen.

> Betrachten wir zum Beispiel den Zeitbereich von einer Sekunde, und
summieren fünf Sinuswellen mit gleicher Amplitude auf, mit den
Frequenzen 50Hz, 51Hz, 52Hz, 53Hz und 54Hz. Das Summensignal sieht so aus:
http://www.astro-electronic.de/sinus1.png
Du hast die Phase nicht zufällig gewählt.

> Die Periodendauer von einer Sekunde ist klar erkennbar und das Signal
hört sich ganz und gar nicht wie bandbegrenztes Rauschen an.
Das ist ja auch kein Rauschen.

Als zweites Beispiel habe ich jede der fünf Sinuswellen mit einer
zufällig gewählten Phasenverschiebung versehen. Dann sieht das so aus:
http://www.astro-electronic.de/sinus2.png
Schon besser. Der Crestfaktor ist deutlich kleiner.
Aber du kannst natürlich nicht erwarten, dass 5 Frequenzen ein Rauschen
ergeben. Es ist ja nachwievor ein sehr eng begrenzter Frequenzbereich.
Probiere es mal mit 1000 Frequenzen.


Nun meine Frage:
Kann man irgendwie \"optimale\" Phasenverschiebungen für die
Sinuswellen berechnen, so dass der Spitzenwert des Summensignals minimal
wird?
Nein Random ist genau richtig. Wenn du das für alle Frequenzen machst,
bekommst du weißes Rauschen.

Mit systematischen Phasen bekommt man andere, zuweilen durchaus
sinnvolle Signale. Mit einer Phase proportional zu f² bekommt man z.B.
ein Chirp. Wenn man die Parabel so normiert, dass es genau einmal bis
360° geht, bekommt man einen Crest-Faktor wie bei einer Sinuswelle.


Marcel
 
astroel...@t-online.de schrieb:
Für eine Anwendung in der elektronischen Musik möchte ich ein Signal y=f(t) erzeugen, das im Frequenzbereich wie ein Rechteck aussieht. Also ein Signal, das nur Frequenzen innerhalb eines bestimmten Frequenzbandes enthält.

Betrachten wir zum Beispiel den Zeitbereich von einer Sekunde, und summieren fünf Sinuswellen mit gleicher Amplitude auf, mit den Frequenzen 50Hz, 51Hz, 52Hz, 53Hz und 54Hz. Das Summensignal sieht so aus:
http://www.astro-electronic.de/sinus1.png

Je mehr Frequenzen du so addierst, desto schärfer wird eine Pulsfolge.
Die Picoscope-Oszis haben einen DSS, der etwa 10 Frequenzen verwendet
und so eine Pulsfolge erzeugt. Mit entsprechendem Spektrum.
Technisch wird das in modengekoppelten Kurzpuls-Lasern verwendet.
Die Periodendauer von einer Sekunde ist klar erkennbar und das Signal hört sich ganz und gar nicht wie bandbegrenztes Rauschen an. Der Spitzenwert des Signals entspricht ungefähr der Amplitude der einzelnen Sinuswellen multiplizert mit deren Anzahl, in diesem Beispiel 5.

Als zweites Beispiel habe ich jede der fünf Sinuswellen mit einer zufällig gewählten Phasenverschiebung versehen. Dann sieht das so aus:
http://www.astro-electronic.de/sinus2.png

Wenn du noch die Amplituden auswürfelst wie die Phasen, dann
sieht das Signal aus wie der Ausgang eines gepulsten Lasers
ohne Modenkopplung. Interessant, bringt dich aber nicht weiter.

Das hört sich schon viel besser an. Die Periodendauer von einer Sekunde ist im Zeitbereich nicht mehr klar erkennbar (und auch nicht mehr so deutlich hörbar), und der Spitzenwert des Summensignals ist kleiner geworden.

Nun meine Frage:
Kann man irgendwie \"optimale\" Phasenverschiebungen für die Sinuswellen berechnen, so dass der Spitzenwert des Summensignals minimal wird?

Muss das numerisch erzeugt werden? Ansonsten kann man einen Rauschgenerator
nehmen und mit einem gesteuerten parametrischen Filter (Biquad mit gesteuerten
OTAs oder so) ein Frequenzband rauspicken.

--
mfg Rolf Bombach
 
Carla Schneider schrieb:

> N sollte eine Zweierpotenz sein,

.... damit man FFT nehmen kann. Die DFT akzeptiert alle Werte
für N, wie im Artikel beschrieben.

> je groesser man N waehlt umso genauer wird es.

Desto länger ist aber das Array, zeitlich. Nur mehr N bei
gleichem Beobachtungszeitraum erhöht lediglich die Grenz-
frequenz, hat dann aber keinen Einfluss auf das Frequenz-
Raster. Dieses ist durch den Erfassungszeitraum gegeben.

--
mfg Rolf Bombach
 
\"astroel...@t-online.de\" wrote:
Carla Schneider schrieb am Mittwoch, 3. Mai 2023 um 14:46:14 UTC+2:
Real und Imaginaerteil per Zufallszahl zwischen -1 und +1 berechnen.

Das wäre ein Quadrat in der komplexen Ebene. Es muss aber ein Kreis sein.
Beim Quadrat hätten wir je nach Phasenwinkel unterschiedlich große Beträge,
maximal 1 bei Phasenwinkel 0° und maximal 1.41 bei Phasenwinkel 45°.
Was dazu führt dass der Phasenwinkel 45° mit höherer Wahrscheinlichkeit vorkommen
würde als der Phasenwinkel 0°.

Man muesste also zufallszahlen erzeugen im Quadrat, und nur die weiter verwenden die auch im Kreis liegen.


Wenn du kein Rauschen willst, sondern ein besseres Signal, auf jeden Fall,
nur wie ist \"besser\" in diesem Fall definiert ?

Das ist eine gute und berechtigte Frage. \"besser\" ist wenn man die Wiederholfrequenz des periodischen
Signals (ca. 1Hz) nicht gut heraushören kann.

Da wuerde es sich doch anbieten die Wiederholfrequenz so klein zu machen dass sich innerhalb
eines Tons nichts wiederholt.


Das ist möglicherweise gleichbedeutend mit einen
möglichst kleinen Spitzenwert. Siehe erstes Beispiel, der Spitzenwert ist 5 und die Wiederholfrequenz
ist deutlich hörbar. So soll es nicht sein.
 
Marcel Mueller schrieb am Mittwoch, 3. Mai 2023 um 21:30:42 UTC+2:
Kann man irgendwie \"optimale\" Phasenverschiebungen für die
Sinuswellen berechnen, so dass der Spitzenwert des Summensignals minimal
wird?
Nein Random ist genau richtig. Wenn du das für alle Frequenzen machst,
bekommst du weißes Rauschen.

Wenn man viele Sinuswellen aufsummiert, dass ist es wohl der richtige Weg die Phasenverschiebungen per Zufall zu erzeugen.
Aber wenn die Anzahl der Sinuswellen relativ klein ist, dann führt dieses Verfahren nicht zwangsläufig zum bestmöglichen Ergebnis (kleinstmöglicher Spitzenwert).
Wenn man zum Beispiel nur drei Sinuswellen aufsummiert, dann ergibt sich der kleinstmögliche Spitzenwert genau dann wenn man die dritte Welle um 180° verschiebt:
y = sin(2 pi * 50 x) + sin(2 pi * 51 x) + sin(pi +2 pi * 52 x)


Mit systematischen Phasen bekommt man andere, zuweilen durchaus
sinnvolle Signale. Mit einer Phase proportional zu f² bekommt man z.B.
ein Chirp. Wenn man die Parabel so normiert, dass es genau einmal bis
360° geht, bekommt man einen Crest-Faktor wie bei einer Sinuswelle.

Interessant. Das muss ich mal ausprobieren.

Michael
 
On Wed, 3 May 2023 23:21:07 -0700 (PDT), \"astroel...@t-online.de\"
<astroelectronic@t-online.de> wrote:

Wenn man viele Sinuswellen aufsummiert, dass ist es wohl der richtige Weg die Phasenverschiebungen per Zufall zu erzeugen.
Aber wenn die Anzahl der Sinuswellen relativ klein ist, dann führt dieses Verfahren nicht zwangsläufig zum bestmöglichen Ergebnis (kleinstmöglicher Spitzenwert).
Wenn man zum Beispiel nur drei Sinuswellen aufsummiert, dann ergibt sich der kleinstmögliche Spitzenwert genau dann wenn man die dritte Welle um 180° verschiebt:
y = sin(2 pi * 50 x) + sin(2 pi * 51 x) + sin(pi +2 pi * 52 x)

Die Addition vieler Sinuswellen mit variabler Phase unter der Randbedingung
\"bitte nicht übersteuern\" ist nicht trivial -- irgendwo blieb bei mir hängen,
das wer dazu einen evolutionären Algorithmus verwendet hatte -- also
letztendlich mehr oder weniger gezielt ausprobieren.

War was aus dem Bereich alte Fernsprechtechnik, Testsignal bandbegrenzt und
amplitudenbegrenzt, aber bitte nahe and der maximal möglichen Aussteuerung,
sowas... Keine Ahnung warum das im Zeitbereich sein musste.


Thomas Prufer
 
Thomas Prufer schrieb am Donnerstag, 4. Mai 2023 um 08:52:49 UTC+2:
Die Addition vieler Sinuswellen mit variabler Phase unter der Randbedingung
\"bitte nicht übersteuern\" ist nicht trivial -- irgendwo blieb bei mir hängen,
das wer dazu einen evolutionären Algorithmus verwendet hatte -- also
letztendlich mehr oder weniger gezielt ausprobieren.

In diese Richtung experimentiere ich gerade. Wenn man zwei Sinuswellen mit leicht unterschiedlicher Frequenz addiert, dann ist der Spitzenwert 2 weil die Wellen an irgendeiner Stelle im Zeitbereich konstruktiv interferieren. Das kann man auch mit Phasenverschiebungen nicht verhindern. Also brauchen die ersten beiden Wellen keine Phasenverschiebung. Bei der dritten Welle kann man die Phasenverschiebung gezielt so legen, dass an der Stelle wo die ersten beiden Wellen konstruktiv interferieren die dritte Welle destruktiv interferiert. Und so weiter. Man sucht im Zeitbereich den Spitzenwert, und verschiebt die nächste Welle so dass sie den bisherigen Spitzenwert nicht noch größer macht. Dadurch entsteht ein neuer Spitzenwert an einer anderen Stelle.

Michael
 
Hallo Michael,

Die Addition vieler Sinuswellen mit variabler Phase
unter der Randbedingung \"bitte nicht übersteuern\"
ist nicht trivial [...]

In diese Richtung experimentiere ich gerade. Wenn man
zwei Sinuswellen mit leicht unterschiedlicher Frequenz
addiert, dann ist der Spitzenwert 2 weil die Wellen an
irgendeiner Stelle im Zeitbereich konstruktiv interferieren.
Das kann man auch mit Phasenverschiebungen nicht verhindern.

mal eine neugierige Frage: Du schriebst ursprünglich, dass Du
ein Signal erzeugen möchtest, das im Frequenzbereich wie ein
Rechteck aussieht, für eine Anwendung in der elektronischen Musik.

Heißt das, dass Dir ein bestimmter Klang vorschwebt,
den Du jetzt realisieren möchtest?

Wenn Dir klanglich der Höreindruck \"Rauschen, aber
bandbegrenzt\" vorschwebt, würde ich das auch genau
so erzeugen - also ein Rauschsignal bandbegrenzen.

Wenn es Dir darum geht, ein Signal mit einem möglichst
niedrigen Crest-Faktor zu erzeugen mit einem im Rahmen
der Analysedauer rechteckförmigen Spektrum, dann kannst
Du auch einen Sinus-Sweep erzeugen, der während der Länge
des Analyse-Zeitfensters den von Dir gewünschten Frequenz-
bereich durchläuft.

Das klingt dann aber natürlich anders als Rauschen, deshalb
würde ich das an Deiner Stelle nicht mit der Addition von
Sinusfunktionen machen - obwohl das auch geht - sondern von
dem Klangcharakter des gewünschten Signals ausgehen.

Viele Grüße

Dieter
 

Welcome to EDABoard.com

Sponsor

Back
Top