Signal Erzeugung und Analyse
Verfasst: Freitag 12. Januar 2018, 18:51
Hallo Zusammen,
da ich zu wenig Erfahrung mit Python habe benötige ich Hilfe bei der Darstellung und Auswertung eines erzeugten Signal.
Nach ein paar Tagen suche/programmieren sehe ich leider kein brauchbares Ergebnis.
Ich arbeite im IDLE mit neuester Python-Version 3.6.
Das Signal soll sich aus drei Teilen zusammensetzten: x(t)= Ac*cos(2*pi*fc*t) + As*sin(2*pi*fs*t)+ Rauschen
Wobei Ac und As die Amplituden für cos und sin Funktion sind, fc und fs die Frequenzanteile von cos und sin. Das Rauschsnignal soll den Ampitudenwert 1 besitzen.
Die Abtastfrequenz soll 1kHz betragen und weiterhin soll sich das Signal aus 4096 Werten zusammensetzen.
Anschließend soll die FFT berechnet und dargestellt werden (später).
da ich zu wenig Erfahrung mit Python habe benötige ich Hilfe bei der Darstellung und Auswertung eines erzeugten Signal.
Nach ein paar Tagen suche/programmieren sehe ich leider kein brauchbares Ergebnis.
Ich arbeite im IDLE mit neuester Python-Version 3.6.
Das Signal soll sich aus drei Teilen zusammensetzten: x(t)= Ac*cos(2*pi*fc*t) + As*sin(2*pi*fs*t)+ Rauschen
Wobei Ac und As die Amplituden für cos und sin Funktion sind, fc und fs die Frequenzanteile von cos und sin. Das Rauschsnignal soll den Ampitudenwert 1 besitzen.
Die Abtastfrequenz soll 1kHz betragen und weiterhin soll sich das Signal aus 4096 Werten zusammensetzen.
Anschließend soll die FFT berechnet und dargestellt werden (später).
Code: Alles auswählen
import matplotlib.pyplot as plt
import numpy as np
#Signaldaten
Fs = 1000 # Hz Abstastfrequenz
Ts = 1/Fs # Abtastintervall
fc = 100 # Hz Cosinusschwingung
fs= 225 # Hz Sinunsschwingung
Ac=5 # Amplitude Cosinusanteil
As=3 #Amplitude Sinusanteil
Ar=1 #Ampitude Rauschsignal
#Signalerzeugung
sample = 4096
x = np.arange(sample)
Fc=Ac * np.cos(2*np.pi*fc*(x/Fs)) #Cosinussignal
Fs=As * np.sin(2*np.pi*fs*(x/Fs)) #Sinussignal
Fn=Ar * np.random.normal(0, 1, len(x)) #Rauschanteil
Fg=Fc+Fs+Fn #Gesamtsignal
# Signaldarstellung
startx, endx = 0, 100
starty, endy = -6,10
plt.xlabel('Zeit')
plt.ylabel('Funktionswert')
plt.title('Signal')
plt.axis([startx, endx, starty, endy])
plt.stem(x,Fg, 'r', )
plt.plot(x,Fg)
plt.show()
-> Das daraus dargestellte Abtastintervall erscheint mir zu groß.
-> Das Rauschsignal erscheint mir auch nicht richtig.
Für Matlab sieht der Code mit FFT so aus:
t=[0:4095]*0.001; % f_S = 1000 Hz
x=5*cos(200*pi*t)+3*sin(450*pi*t)+randn(size(t));
plot(t,x)
axis([0 .1 -10 10])
X=fft(x);
f=[0:2047]*500/2048;
plot(f,abs(X(1:2048)))
Vielen Dank schon mal für Hilfe!
Lg, PC-Hans